QEMU / KVMおよびWindowsインストール

好むと好まざるとにかかわらず、Windowsを必要とするプログラムはオフィスから消えていません。 それらの使用が代替ではない状況では、たとえば、Skype for Businessを介して音声会議に接続するために、仮想OSを使用することをお勧めします。




この記事では、最小限のオーバーヘッドでvirt-manager GUIを使用してQEMUハイパーバイザーにWindowsゲストOSをインストールする方法を説明します。 すべての落とし穴とサンゴ礁をマップし、バグを注意深く瓶に入れます。


準備する


最初のステップは、カーネルパラメーターを構成することです。 KVMおよびvhost-net必須サポート、トンネルインターフェイス[1]およびネットワークブリッジ[2]の望ましいサポート。 Gentoo QEMU Wikiページの完全なリストを参照してください


ディスク領域を準備します。 70 GiBを割り当て、Windows 8.1は2か月で50 GiB近くを使用したため、バージョン10にアップグレードするのに十分なディスク領域がありませんでした。


次に、Redhat virtio-winドライバーのセットが必要です。 RedHatがインストールされている場合は、実行するだけです


 [root@server ~]# yum install virtio-win 

ISOイメージは/usr/share/virtio-win/ディレクトリに書き込まれます。 Fedoraリポジトリからダウンロードすることもできます
BIOS / UEFIでハードウェア仮想化サポートが有効になっていることを確認します 。 これがないとKVM はアクティブならずvirt-managerはこのエラーを生成します。




チェックとして、デバイスファイルを読み取ることができます。


 (2:506)$ ll /dev/kvm crw-rw----+ 1 root kvm 10, 232  9 02:29 /dev/kvm 

ファイルが見つからず、カーネルオプションが正しく設定されている場合、 BIOS/UEFI設定を意味します。
必要なパッケージをインストールします。


 (5:519)$ sudo emerge -av qemu virt-manager 

RedHat 7の場合、デフォルトでQEMUインストールされるため、 virt-managerのみをインストールするだけで十分です。


 [root@server ~]# yum install virt-manager 

デビット人はqemuパッケージをインストールする必要があります。


 root# aptitute install qemu 

これでインストールに進むことができます。


起動とインストール


virt-managerを実行し、ローカルストレージから新しい仮想マシンを作成します。




WindowsのインストールISOイメージへのパスを指定します。




さらに、3番目と4番目のステップで、CPUの数、RAMの量、およびディスクスペースのサイズを選択できます 。その後、5番目のステップで、設定する前に追加の構成を選択する必要があります




耳でフェイントを実行するには、追加の設定ウィンドウが必要です。 その意味は、 virtio-winスイートのドライバーで仮想フロッピーを追加することです。 これにより、ハードドライブのタイプを変更できるようになります。IDEバスを使用してドライブを削除し、VirtIOバスを使用して追加します。 RedHatドックの詳細。




ドライバー/usr/share/virtio-win/virtio-win.vfdを登録し、仮想フロッピーディスクを追加し/usr/share/virtio-win/virtio-win.vfd 。 次に、 [] №[] №タブに移動し、ディスクバスを交換するフェイントを実行します。IDEから削除して、VirtIOに追加します。




このトリックが必要な理由を言うのを忘れていました。 専門家によると、VirtIOバスを使用すると、ディスクのパフォーマンスが大幅に向上します。


原則として、インストールを開始することはすでに可能ですが、 virtio-winドライバーを含むCD-ROMを追加するのを忘れており、デバイスマネージャーが黄色の疑問符アイコンを点滅させると便利になります。




さて、インストールを開始できます。




さて、インストールを開始しました。 しかし、Windowsインストーラーがドライブの変更を要求した場合はどうなりますか? このため、数回中断してカルーセル全体を新たに開始する必要がありましたが、これはあなたには起こりません


 (qemu) change ide1-cd0 /tmp/windows_8.1_x64_disk2.iso 

ドライバーとデバッグ


インストールプロセスの最後に、デバイスマネージャーに一部のドライバーがありません。 おそらくこれらは:


 Ethernet Controller PCI Simple Communication Controller SCSI Controller 

前のセクションでIDE CD-ROMを介して接続されているvirtio-winドライバーを提供する必要があります。




これは標準で行われます。黄色の疑問符を右クリックして、ドライバー、ファイルへのパスを更新します。




以下にリスト全体を示します。これはRedHat docksの次のページで 、ドライバーのインストールが詳細に表示されます。



装備品


ここでは、無限の可能性とそれを行う101の方法の領域が徐々に始まります。そのため、それがどのように機能するかを示します。ニーズに合わせてより正確にカスタマイズできます。




Spiceディスプレイとich6サウンドデバイスを選択しました。 いいえ、もちろん、あなたが多くの時間とすべてをより細かい点まで理解したいという願望がある場合-それに行って別のアプローチを試してみてください、しかし私のサウンドはそのような設定でのみ跳ね上がり、むしろ振動しました。 熊手での散歩とバグのキャッチに専念する第2部では、これについて詳しく説明します。 ビデオタブでQXLを設定しました。このオプションを使用すると、 マジックドライバーのおかげで、通常の画面解像度を達成できたからです。


さまざまな方法でVMに接続できます。


  1. virt-manager GUI経由
  2. ディスプレイVNCサーバーを選択し、vncクライアント経由で接続します
  3. Spice Clientをインストールして接続します
  4. ターミナルサーバーが有効になっている場合、rdp経由でWindowsに接続できます。

オプション3があります。Gentooの場合、これはspice-gtk


 $ eix spice-gtk [I] net-misc/spice-gtk  : 0.31 ~0.32-r1 ~0.32-r2 **9999 {dbus gstaudio gstreamer gstvideo gtk3 +introspection libressl lz4 mjpeg policykit pulseaudio python sasl smartcard static-libs usbredir vala webdav PYTHON_SINGLE_TARGET="python2_7 python3_4" PYTHON_TARGETS="python2_7 python3_4"}  : 0.31(16:05:41 18.06.2016)(gtk3 introspection pulseaudio python usbredir -dbus -gstreamer -libressl -lz4 -policykit -sasl -smartcard -static-libs -vala -webdav PYTHON_SINGLE_TARGET="python2_7 -python3_4" PYTHON_TARGETS="python2_7 python3_4")  : http://spice-space.org https://cgit.freedesktop.org/spice/spice-gtk/ : Set of GObject and Gtk objects for connecting to Spice servers and a client GUI -R2 ** $ eix spice-gtk [I] net-misc/spice-gtk  : 0.31 ~0.32-r1 ~0.32-r2 **9999 {dbus gstaudio gstreamer gstvideo gtk3 +introspection libressl lz4 mjpeg policykit pulseaudio python sasl smartcard static-libs usbredir vala webdav PYTHON_SINGLE_TARGET="python2_7 python3_4" PYTHON_TARGETS="python2_7 python3_4"}  : 0.31(16:05:41 18.06.2016)(gtk3 introspection pulseaudio python usbredir -dbus -gstreamer -libressl -lz4 -policykit -sasl -smartcard -static-libs -vala -webdav PYTHON_SINGLE_TARGET="python2_7 -python3_4" PYTHON_TARGETS="python2_7 python3_4")  : http://spice-space.org https://cgit.freedesktop.org/spice/spice-gtk/ : Set of GObject and Gtk objects for connecting to Spice servers and a client GUI libressl LZ4 MJPEGにPolicyKitのpulseaudioパイソンSASLスマートカード静電気LIBS usbredirヴァラのWebDAV PYTHON_SINGLE_TARGET = "python2_7のpython3_4" PYTHON_TARGETS = "python2_7のpython3_4"} $ eix spice-gtk [I] net-misc/spice-gtk  : 0.31 ~0.32-r1 ~0.32-r2 **9999 {dbus gstaudio gstreamer gstvideo gtk3 +introspection libressl lz4 mjpeg policykit pulseaudio python sasl smartcard static-libs usbredir vala webdav PYTHON_SINGLE_TARGET="python2_7 python3_4" PYTHON_TARGETS="python2_7 python3_4"}  : 0.31(16:05:41 18.06.2016)(gtk3 introspection pulseaudio python usbredir -dbus -gstreamer -libressl -lz4 -policykit -sasl -smartcard -static-libs -vala -webdav PYTHON_SINGLE_TARGET="python2_7 -python3_4" PYTHON_TARGETS="python2_7 python3_4")  : http://spice-space.org https://cgit.freedesktop.org/spice/spice-gtk/ : Set of GObject and Gtk objects for connecting to Spice servers and a client GUI 

ネットワーク


VMのネットワークは、Habréの職人がすでにそれについて書いているので、異なる方法で構成できます。 私はいくつかの方法を試してみましたが、最終的にはシンプルさが再び取り上げられました。 VM自体はルート[3]の下から実行されますが、 spice-gtk GUIは通常の非特権ユーザーの下から実行されます。 これにより、ジレンマを解決できます。ネットワークオプションにはルート権限が必要であり、サウンドデーモンpulseaudioにはルートが禁止されています。 私は通常のユーザーにすべての権利を掛けようとしましたが、何も機能せず、パルスが脈動しません。その後、ネットワークが作成されず、たくさんあり、少しあります。 結局、私は決断し、喜んだ。 コメントで最良の方法が見つかった場合、私はうれしいです。




このようなネットワークオプションの簡単な選択により、期待を超える結果が得られます。 3つの追加ネットワークインターフェイスが作成されます: virbr0、virbr0-nic、vnet0


 $ ip addr ... 4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:cc:2a:1e brd ff:ff:ff:ff:ff:ff inet 192.168.102.1/24 brd 192.168.102.255 scope global virbr0 valid_lft forever preferred_lft forever 5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:cc:2a:1e brd ff:ff:ff:ff:ff:ff 11: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN group default qlen 1000 link/ether fe:54:00:fb:50:45 brd ff:ff:ff:ff:ff:ff inet6 fe80::fc54:ff:fefb:5045/64 scope link valid_lft forever preferred_lft forever 

一連のルールがiptablesに作成されます。主なものは次のとおりです。


 $ sudo iptables -L ... Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere 192.168.102.0/24 ctstate RELATED,ESTABLISHED ACCEPT all -- 192.168.102.0/24 anywhere 

Windows VM:


 C:\Users\user>ipconfig Windows IP Configuration Ethernet adapter Ethernet 2: Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::90c3:a458:6645:7b9a%7 IPv4 Address. . . . . . . . . . . : 192.168.102.203 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.102.1 Tunnel adapter isatap.{BD8F0DA4-92A8-42BD-A557-23AC89AED941}: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Tunnel adapter IPHTTPSInterface: Connection-specific DNS Suffix . : IPv6 Address. . . . . . . . . . . : 2620:0:a13:8a7:51af:79ae:92b8:828a Temporary IPv6 Address. . . . . . : 2620:0:a13:8a7:b49d:81fe:e509:16e7 Link-local IPv6 Address . . . . . : fe80::51af:79ae:92b8:828a%15 Default Gateway . . . . . . . . . : 

繰り返しますが、libvirtdはこれをすべて自分で作成します。このために何もする必要はありません 。 その結果、ホストとVMの間に通常のルーティングが行われ、 ssh / scp介してファイルを交換できます。 先に進み、Windowsでボールを作成し、Linuxホストでsambaを構成できますが、それは私にとって冗長に思えました。


結論として


1つの記事でWindows + QEMU / KVMのすべての側面について伝えるのは難しいため、次の記事で締めくくります。 そして、最も楽しいもの、コマンドインターフェイス、1024x768の最大画面解像度、Scylla pulseaudioおよびCharybdisネットワーク、 virshコマンド、および構成ファイルからのVM​​のセットアップ、 tpm持つファイル、デバイスのバイナリ構文、その他の静かな喜びがあります。




  1. TUN / TAPインターフェース
  2. イーサネットブリッジング
  3. 英語のルートから


Source: https://habr.com/ru/post/J313144/


All Articles