virt-manager(libvirt)で自分でビルドしたQEMUを使用する
僕のサーバーではKVM上のWindows用にIntel 760p SSDを積んでいるのですが、SSDのバグがあるみたいでそのままではPCIパススルーすることができず、QEMUのソースコードを書き換えなきゃいけなかった。
なので、QEMUのビルド、インストール、virt-manager経由での実行までの方法をここに残しておきます。
SELinux有効化されたCentOS 8上で行っていますが、他のLinuxでも同じようにできると思います。
必要なパッケージ
"Development Tools"はもちろん必要です。あとはpython・gtk2-devel・spice-server-devel・usbredir-develが必要です。
なので、CentOS 8だと
sudo dnf install python36
sudo dnf install gtk2-devel
sudo dnf -–enablerepo=PowerTools install spice-server-devel usbredir-devel
となります。
QEMU
ダウンロード
ここから最新版のソースコードをダウンロードして使います。
現在の最新版は4.2.0であり、ダウンロードリンクがhttps://download.qemu.org/qemu-4.2.0.tar.xzなので、
curl -O https://download.qemu.org/qemu-4.2.0.tar.xz
tar xvJf qemu-4.2.0.tar.xz
cd qemu-4.2.0
これでダウンロードできます。wgetはcurl -Oで代用できるので知っておくと便利。
ビルド・インストール
./configure --target-list=x86_64-softmmu --enable-kvm --enable-spice --enable-usb-redir
make -j4
sudo make install
今回KVMで使うだけなので、targetをx86_64に限定しました。spiceはvirt-manager上での画面表示に、usb-redirは仮想マシンでUSBを使いたい時に必要となります。
SELinux
SELinuxを無効化してる場合はしなくていいです。
/usr/local/bin/qemu-system-x86_64にインストールされるのですが、このファイルがSELinuxによりlibvirtからの実行をブロックされてしまうのでコンテキストを変更します。
sudo chcon -t qemu_exec_t /usr/local/bin/qemu-system-x86_64
virt-manager
CentOSの標準ではEmulatorは/usr/libexec/qemu-kvmになっています。これを変更するにはXMLを直接書き換える必要があります。virt-managerでXML編集できない場合は virsh edit [仮想マシン名]
と実行するとXMLを編集できます。
まずXMLの編集を有効にして、
あとは、XMLのemulatorの部分を/usr/local/bin/qemu-system-x86_64に書き換えてApplyしてください。
あと、rhelと書いてあるmachineはCentOS標準のものでしか使えないので変更する必要があります。
例えば、上の画像のような状態ならば、ここをq35に変更してApplyすればq35の中で使える最新版が選択されます。
その他、ここに使えるマシン一覧は/usr/local/bin/qemu-system-x86_64 -M help
で見れるので、適宜この中から選んでください。
Emulatorの欄が変わったはず。あとは起動できれば完了です。
コメント