仮想環境の関連記事は、「Linuxマシン上でWindowsを使う」のページにまとてあります。はじめにLinux環境にQEMU/KVMをインストールして仮想マシンを使えるようにしたので、方法をまとめておく。QEMU/KVMのGUIフロントエンドとしては、virt-managerを使用する。KVM」のページに書いてあるように、非常に多くのOSをサポートしている。インストールと設定に移る前に、仮想マシンを実行する上で必要となる機能ついてまとめておく。Linuxカーネルに搭載されている、仮想化を支援する機能(モジュール)。このモジュールは、バージョン2.6.20以降のLinuxカーネルに実装されている。KVMはモジュールでしかないので、KVM単体では機能しない。KVMの機能を実際使うためには、QEMUのようなエミュレータが必要になる。プロセッサー、及びネットワークデバイスやビデオデバイスなどのサブシステムをエミュレートするエミュレータ。仮想化されたストレージや、ネットワークデバイスなどの管理、制御を担うライブラリ(API)。VMwareなどをサポートしている。仮想マシンを管理するためのGUIフロントエンド。Xen、KVM、QEMUなどの仮想化システムに対応している。Windowsなどの、GUIモードでしかインストールできないOSで仮想マシンを作るには、必須となる。これらの機能を構成は、以下の図のようになる。今回、QEMU/KVMのインストールと設定を行った環境は以下の通り。ディストリビューションの違いによって、パッケージ名の違いなど多少があるかもしれない。2105)CPUのサポート確認とBIOSの設定CPUの仮想化支援の確認KVMを使うためには、CPUが仮想化に対応している必要がある。呼ばれる機能が必要である。確認は端末からできる。次のコマンドで何か表示されれば、対応していることになる。xsaveopt...またメーカーのウェブページからも確認できる。公式ページから確認する。VT-xまたは、AMD-Vに対応していたとしても、BIOSの設定でこの機能が無効にされていることがある。PROの場合、買ったときから設定を変更した覚えはないが、確認したら無効になっていた。VT-xを有効にした。それぞれのマザーボードで項目の名称等が変わっているかもしれないが、取説等を見れば設定箇所が載っている。AMD-VはBIOSで無効にできないので、常に有効になっているらしい。BIOS)画面を起動する。Configuration」をクリック。Technologyの項目がDisableになっているので、クリックしてEnableに変更する。Resetを選択する。これで、CPUの仮想化支援機能が有効になる。カーネールモジュールの確認とロード次に、KVMモジュールが有効になっているか確認する。yまたはmが設定されていれば、有効になっている。有効になっていなければ、有効にしたうえでカーネルをビルドする。setCONFIG_KVM_APIC_ARCHITECTURE=yCONFIG_KVM_MMIO=yCONFIG_KVM_ASYNC_PF=yCONFIG_KVM_VFIO=yCONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=yCONFIG_KVM_COMPAT=yCONFIG_KVM=mCONFIG_KVM_INTEL=mCONFIG_KVM_AMD=mCONFIG_KVM_MMU_AUDIT=yCONFIG_KVM_DEVICE_ASSIGNMENT=yVIRTIOモジュールが有効になっているかも確認する。kvm_intel(またはkvm_amd)モジュールをが読み込まれているか確認する。kvm_intelモジュールがリストアップされる。デフォルトで、自動でロードされるようになっている。kvm読み込まれていなかったら、ロードする。kvm_intelもし自動でロードされるよう設定されていない場合は、/etc/modules-load.d/kvm_intel.confのようなファイルを作って、以下のように記載する。/etc/modules-load.d/kvm_intel.conf#起動時にkvm_intelをロードkvm_intelゲストOSでネットワークデバイスや、記憶デバイスなどを高速で使用したい場合、ホストマシンでvirtioモジュールをロードする。virtioモジュールを使うためには、ホストマシンでvirtioモジュールをロードしたうえで、さらに、ゲストOSでvirtioドライバをインストールしなければならない。virtioモジュールを使わなくても、デバイス速度はある程度出ていたので、今回はvirtioモジュールは使用しなかった。モジュール、ブロックデバイスのvirtioを使用する場合はvirtio、virtio_ring、virtio_blk、virtio_pciモジュールをロードする必要がある。KVM活用法」に、ゲストOSをWindowsとして、ゲストドライバのインストール方法が説明してある。libvirtのインストール準備ができたら、必要なパッケージをインストールする。libvirtをインストールする。qemuというパッケージ名はディストリビューションによっては、qemu-kvmとなっていると思う。Linuxでもかつては、qemu-kvmという名前のパッケージがあったが、qemuで置き換えられている。libvirt次にネットワーク関連のパッケージをインストールする。dnsmasqをインストールする。ゲストを仮想サーバーとして使用しない場合は、ゲストをプライベート・ネットワークに置けるため、デフォルトで立ち上がる接続を利用する方がいいと思う。ゲストOSの用途が仮想サーバーであり、NAT/DHCP接続を利用しない場合は、代わりに次で説明するbridge-utilsをインストールして手動でブリッジ接続を設定する。dnsmasqはゲストOS用のDHCPを提供する。ebtablesはNATブリッジ用のフィルター。dnsmasqをインストールしておけば特にネットワークの設定は必要ない(デーモンの起動は後で行う)。この後、ゲストOSのインストールも解説するが、NAT/DHCP接続を利用する方法で解説する。bridge-utilsのインストール(NAT/DHCPを介さない場合)もし、ゲストOSを物理NICと直接ブリッジ接続したい場合は、bridge-utilsをインストールし、ネットワーク接続の設定をする必要がある。ゲストOSを仮想サーバーとして使いたい場合は、この構成のほうが便利になる。直接ブリッジ接続することで、ホストOS(NAT)を介さずにゲストOSを直接外部ネットワークに繋ことができるようになるためである。2009などを参照する。6.0で試すKVM:エンジニアなら知っておきたい仮想マシンのしくみ」より)libvirtdのデフォルトのネットワーク構成libvirtdにデフォルトで設定されているNAT/DHCPのネットワーク構成を確認しておく。このデフォルトの構成では、LinuxカーネールがサポートするTAP機能、iptablesによるNAT、dnsmasqのDHCP機能を利用する。IPマスカレード」のイメージになる。KVMのネットワーク構成:KVMで始めるプライベート・クラウドへの第一歩」より)libvirtdのデフォルトのネットワーク設定ファイルは、/etc/libvirt/qemu/networks/default.xmlにある。/etc/libvirt/qemu/networks/autostart/default.xmlにシンボリックリンクが作られており、自動起動するようになっている。../default.xml設定ファイルの編集は直接せず、virshから行うよう推奨されている。Networkingに載っている。デフォルトの設定を確認する。</ip></mac></bridge></forward></network>libvirtdによって作られたデバイスを確認しておく。192.168.122.1/24)ができていることがわかる。DHCPサーバーのアドレスも192.168.122.1/24となる。ff:ff:ff:ff:ff:ff</broadcast></no-carrier></broadcast></loopback>iptablesによりNATの設定がされているか確認する。libvirtはroot権限で操作するように設定されている。ここでは、一般ユーザーから操作できるようにパーミッションの設定を行う。接続と権限」に詳しく記載されている。アクセスを参考にした。一般ユーザーが「システム接続」できるように設定を変更する。/etc/libvirt/qemu.confを、以下のように3行編集する。←「ユーザー名」は普段使う一般ユーザーのユーザー名に変える。←グループをlibvirtに変える。←コメントアウトを解除。...さらに、kvmグループに一般ユーザーを追加する。「ユーザー名」は普段使う一般ユーザーのユーザー名に変える。libvirtグループへの追加は、次のlibvirtの設定とともに行う。kvmlibvirtの設定デフォルトでlibvirtは、認証システムとしてPolicyKitを採用している。ここでは、PolicyKitによる認証を使わず、ファイルのパーミッションベースで管理する方法を採る。グループのユーザーが仮想マシンを管理できるように、ファイルベースのパーミッションを定義する。/etc/libvirt/libvirtd.confの以下の行のコメントアウトを解除する。"none"......次に、一般ユーザーとして使用しているユーザーを、libvirtグループに追加する。「ユーザー名」は普段使う一般ユーザーのユーザー名に変える。libvirtlibvirtdデーモンを起動する。libvirtd.service設定を反映させるため、PCの再起動を行う。GUIフロントエンドのインストールGUIフロントエンドvirt-managerのインストール今回は、GUIフロントエンドとして一般的に使われているvirt-managerを使用する。Boxesやqemu-launcherなどがある。BoxesからWindowsをインストールしようとしたが、CDの形式がサポートされていないとメッセージが出てインストールできなかった。OSをゲストOSとするのであれば便利なツールだと思う。virt-managerをインストールする。virt-managervirt-managerを起動すると、以下のようなウィンドウが開く。ここまでで、QEMU/KVM環境の設定は終了。設定を有効にするため、PCを再起動する。この後、virt-managerを使い仮想マシンを作成し、作成した仮想マシンにゲストOSをインストールする。