仮想マシンを非ルートとしてインストールしますか?


15

非ルートユーザーとして仮想マシンソフトウェアをインストールして実行することは可能ですか?

ルートアクセスを必要とせずに、どのVMをインストールできますか?

実行できない場合、いくつかのVMの実行中のWindows XP SP3で使用する最も軽量な仮想マシンは何ですか?

回答:


5

実際の仮想化にはCPUへの低レベルのアクセスが必要なので、rootがインストールする必要があります。インストールしたら、実行するためにrootになる必要はありません。おそらく、bochsなどの非ルートとして、またはwineなどのアダプターとしてエミュレーターをインストールして実行できます。特定のWindowsアプリを念頭に置いている場合は、ワインで実行できます(たぶん)。


可能ですが、アプリケーションが同様に機能するためには、アプリケーションをモノに変換するように要求する必要があります。2つの非常に小さなメモリ使用量のアプリを備えたシンプルな実行ウィンドウXP SP3に最も軽いVMが何であるかを偶然知っていますか?
プリックス

おそらくあなたの最善の策はVMwareプレイヤーでしょう。VMwareからは無料です。
キース

11

以下のためにKVM、あなたは、デバイスにアクセスする必要があります/dev/kvm。ユーザーがこのデバイスに対して読み取り/書き込みができる場合、ユーザーとしてKVMベースの仮想マシンを実行できます。

ほとんどのディストリビューションでは、kvmグループのメンバーがこのデバイスにアクセスできるため、ユーザーをkvmグループに追加するだけです。

他のほとんどのアクセラレートテクノロジでは、カーネルモジュールをロードする必要があります(これには、virtualboxとVMWareが含まれます)。これにはほぼ確実にルートレベルのアクセスが必要です。

任意のユーザーとして非加速仮想化テクノロジーを実行できます。たとえば、非加速モードのqemu。加速仮想化と比較して非常に遅いことに注意してください。


加速されていない情報が役に立ちました;)
Prix

7

ユーザーモードLinuxは、ユーザー空間で完全に実行されるLinux仮想化ソリューションです。ルート権限は不要です。

ただし、Linuxホスト内でのみLinuxゲストを実行できるため、他の何かを実行する場合には適していません。


4

仮想マシンが効率的であるためには、プロセッサー(およびその他のハードウェア)への非常に低いレベルのアクセスが必要です。したがって、ルート以外でインストールできるパフォーマンスの高いVMソフトウェアは表示されません。

軽量の仮想マシンについては、必要な機能のみを含めることで軽量を実現しています。これには、実行されるOSに関するある程度の知識が必要であるため、オープンソースの軽量VM(Plex86LilyVM)は、オープンソースのオペレーティングシステムのみをサポートします。このロジックにより、Microsoft Virtual PCはVirtualBox / VMWare / etcよりも軽量である可能性があります。しかし、私は本当に知りません。VirtualBoxはオープンソースで提供されており、非常に使いやすく、私の目的には常に十分です(しかし、他のものを試しました)。


2

Virtualbox 4.0.8はルートオフコースとしてインストールする必要がありますが、その後、ユーザーが独自のVMを作成できるようにすることができます。あなたはグループのメンバーでなければなりませんvboxusers

usermod -G vboxusers USERNAME

見ていこのリンク、ストレートシェルから、ヘッドレス、それを実行するためにどのように素敵な記事を。また、それがRDPプロトコルをサポートしていることを本当に掘り下げます。つまりrdesktop、接続するだけで使用できます。


2

QEmuはそれを行うことができます。何度かやったことがあります。あまりパフォーマンスは良くない


2

1)3行の回答

ビルド済みのイメージ/コンパイルされたバージョンのqemuを使用するには、ここからダウンロードし、解凍します。

tar -xvzf qemu_packed.tar.gz

ここから私のdebian 8イメージ(1.6G)をダウンロードすることもできます

tar -xvzf test01.qcow2.tar.gz

そして最後に走る

./command.sh

ホスト22のポート22222でsshポートが開かれた、テキストモードで動作するDebian 8が必要です。ユーザー「root」とパスワード「root」を使用してログインできます。

2)より長い答え、これらの画像を自分で作成する

QEMUは確かに、ルートアクセス権のないサーバーに独自のLinuxイメージをインストールできるソリューションです。これは非常に便利です。たとえば、メインのユーザーパスワードを公開せずにリバースsshを実行したり、教育目的で使用したりします。しかし、実際には、rootアカウントなしではKVMを実際の仮想化に使用できないため、エミュレーションのみを行うことができますが、これは非常に非効率的です(ただし、コマンドライン操作の場合、オーバーヘッドはまったく見ませんでした)。

2.1)パック qemu

ここに私がどのように進むかの説明があります。最初のステップは、qemuを「ポータブル」にする、つまりルートアクセスなしでサーバーで使用できるようにすることです。そのためには、いくつかの方法がありますが、それらを提示して、お好みの方法を選択できるようにします。

2.1.a)方法1:利用可能な.debをダウンロードします

このソリューションは非常に迅速に適用できます(基本的に、1つのコマンドで機能する場合は動作します)が、私のスクリプトにはバグがあるか、libを忘れる可能性があるため、すべてのバイナリを手動でダウンロードするのにかなり時間がかかる可能性があります...この方法の他の利点は、サーバー上で直接非ルートモードで実行できることです。ここでqemuバイナリを取得するアイデアは、.deb / .rpmファイル(apt、または.debをホストするオンラインWebサイトから)を取得し、それを抽出し、を使用してライブラリの依存関係を確認し、lddすべての依存関係をダウンロード.debすることです。それら(.soファイル)を抽出するためにコンピューターにまだ存在していません。それは非常に長くて反復的である可能性があるため、小さなスクリプトを作成しましたが、勇気があれば、すべてを手動で行うことができます...時間がかかります。使用するには、このスクリプトをファイルに保存しますcreate_qemu_binaries.sh

#!/usr/bin/env bash
mkdir qemu_extract
cd qemu_extract
echo "########## Downloading qemu... ##########"
apt-get download qemu-system-x86
echo "########## Extracting qemu... ##########"
dpkg -x qemu-system-*.deb .
mkdir -p qemu_packed/lib
cp usr/bin/qemu-system-x86_64 qemu_packed
echo "########## Copy libs... ##########"
ldd usr/bin/qemu-system-x86_64 | grep "=>" | grep -v "not found" | awk '{print "cp "$3" qemu_packed/lib/"}' | bash
mkdir not_found
cd not_found
echo "########## Get not found libs... ##########"
ldd ../usr/bin/qemu-system-x86_64 | grep "not found" | awk '{print $1}' > not_found.txt
echo "########## Download not found libs... ##########"
for lib in $(cat not_found.txt); do echo "=== Dealing with $lib ==="; apt-file search --regexp "/${lib}\$" | sed 's/:.*//' | xargs apt-get download; done
echo "########## Extracting not found libs... ##########"
ls *.deb | xargs -I{} dpkg -x "{}" .
echo "########## Copying not found libs... ##########"
find . | grep ".so" | xargs -I{} cp "{}" ../qemu_packed/lib
cd ..
echo "########## Getting pc-bios... ##########"
git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
echo "########## Finished !!! ##########"
echo "The output file should be in the folder qemu_extract/qemu_packed."
echo "Once you have a filesystem image, you can run it using:"
echo "$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none -display curses -k fr -redir tcp:22222::22"
echo "Don't forget to replace <your image>"

次を使用して実行します:

chmod +x create_qemu_binaries.sh 
./create_qemu_binaries.sh 

すべて正常に動作します。最後に、フォルダーに./qemu_extract/qemu_packed/1つのファイルqemu-system-x86_64(メインバイナリー)、1つのフォルダーlib(と一緒に使用する必要のあるlibs qemu)、および1つのフォルダーpc-biosqemu実行する必要のあるファイルのセットが必要です。その後qemu、次を使用して実行できます(ファイルシステムイメージと置き換えることを忘れないでください)。

$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none -redir tcp:22222::22

楽しい !(スクリプトがうまくいかない場合は、遠慮なく私に尋ねてください.2台のコンピューターでのみテストしredir、ホストと推測の間でssh転送が必要ない場合は自由に削除してください)

2.1.b)方法2:ルートアクセスのあるコンピューターにアクセスする場合

最初の方法では、ルートアクセス(またはqemuインストール)が可能なコンピューターが必要です。次のqemuようなものを使用して最初にインストールします

sudo apt install qemu-system-x86

次に、qemuの絶対パスを見つけます。

$ which qemu-system-x86_64 
/usr/bin/qemu-system-x86_64

次に、フォルダーを作成して配置します。

mkdir -p qemu_packed/lib
cd qemu_packed
cp /usr/bin/qemu-system-x86_64 qemu_packed

qemuにリンクされているライブラリのリストを取得します。

ldd qemu_packed/qemu-system-x86_64 | awk '{print "cp "$3" qemu_packed/lib"}' | bash

ここで、qemuがBIOSを使用する必要があります。このファイルはシステムで使用できますが、なぜそれらが異なるフォルダーにあるのかわかりません。そのため、ソースからファイルを取得する方が簡単だと思います。

git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
cd qemu_packed

これで機能するはずです。これらのファイルを非ルートマシンにコピーqemuし、次の行を使用して実行するだけです(イメージを置き換えることを忘れないでください)。

$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none

2.1.c)方法3:ソースから

ソースをコンパイルすることもできますが、すべてのライブラリをインストールしていない場合は、ルート化されたコンピューターを使用してqemuをコンパイルしないようにするのは難しいかもしれません。しかし、上記の2つの方法が機能しない場合は、もう少し信頼性が高いと思います。次に、コンパイルが完了したら、実行可能ファイルを取得し、上記と同じトリックを実行して、ライブラリ(lddすべてのライブラリが既にコンピューター上にあるはずです)とpc-biosファイルを取得します。そして再び、同じコマンドで実行します。

2.3)独自の画像を作成する

事前に作成されたファイルシステムイメージを使用したくない場合は、!の代わりに上記のコマンドを使用して、多数のチュートリアルに従ってくださいqemu/qemu-system-x86_64。注:qemu-img非ルートとしてイメージを作成するためにも使用する場合は、上記と同じプロセスに従ってください!

楽しい !

注:GUIのない​​サーバーでcursesディスプレイを使用する場合は、ブートオプションにイメージを追加して、フレームバッファーがオンにならないようにし/etc/default/grubます。

GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nofb nomodeset bochs_drm.fbdev=off"

(最も重要なのは最後です、それが必要かどうかはわかりません)。と同様

GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text

そのため、grubはテキストモードのままになります。systemdで十分でない場合は、テキストモードを有効にすることもできます。


1
-1してくれた人にお願いしてください。その理由を教えてください。
tobiasBora

私にはわからないが、これは素晴らしい、ありがとう。
wbkang
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.