好むと好まざるとにかかわらず、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の次のページで 、ドライバーのインストールが詳細に表示されます。
- バルーンドライバーであるバルーンは、システムデバイスグループのPCI標準RAMコントローラーに影響します。
- シリアルドライバーであるvioserialは、システムデバイスグループのPCI Simple Communication Controllerに影響します。
- ネットワークドライバであるNetKVMは、ネットワークアダプタグループに影響します。 このドライバーは、virtio NICが構成されている場合にのみ使用可能です。 このドライバーの構成可能なパラメーターは、付録E「NetKVMドライバーのパラメーター」に記載されています。
- ブロックドライバであるviostorは、ディスクドライブグループに影響します。 このドライバーは、virtioディスクが構成されている場合にのみ使用可能です。
装備品
ここでは、無限の可能性とそれを行う101の方法の領域が徐々に始まります。そのため、それがどのように機能するかを示します。ニーズに合わせてより正確にカスタマイズできます。
Spice
ディスプレイとich6
サウンドデバイスを選択しました。 いいえ、もちろん、あなたが多くの時間とすべてをより細かい点まで理解したいという願望がある場合-それに行って別のアプローチを試してみてください、しかし私のサウンドはそのような設定でのみ跳ね上がり、むしろ振動しました。 熊手での散歩とバグのキャッチに専念する第2部では、これについて詳しく説明します。 ビデオタブでQXL
を設定しました。このオプションを使用すると、 マジックドライバーのおかげで、通常の画面解像度を達成できたからです。
さまざまな方法でVMに接続できます。
- virt-manager GUI経由
- ディスプレイVNCサーバーを選択し、vncクライアント経由で接続します
- Spice Clientをインストールして接続します
- ターミナルサーバーが有効になっている場合、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
持つファイル、デバイスのバイナリ構文、その他の静かな喜びがあります。