UbuntuでQEMU6.2をビルドして使ってみる
AppArmor周りでハマったのでメモ
必要なパッケージのインストール
sudo apt-get install -y git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev
sudo apt-get install -y git-email
sudo apt-get install -y libaio-dev libbluetooth-dev libbrlapi-dev libbz2-dev
sudo apt-get install -y libcap-dev libcap-ng-dev libcurl4-gnutls-dev libgtk-3-dev
sudo apt-get install -y libibverbs-dev libjpeg8-dev libncurses5-dev libnuma-dev
sudo apt-get install -y librbd-dev librdmacm-dev
sudo apt-get install -y libsasl2-dev libsdl1.2-dev libseccomp-dev libsnappy-dev libssh2-1-dev
sudo apt-get install -y libvde-dev libvdeplug-dev libvte-2.90-dev libxen-dev liblzo2-dev
sudo apt-get install -y valgrind xfslibs-dev
sudo apt-get install -y libnfs-dev libiscsi-dev
リポジトリを落とす
git clone git://git.qemu-project.org/qemu.git
git checkout v6.2.0
git submodule update --init --recursive
ビルド用のディレクトリ作成
cd qemu
mkdir -p user/Build
cd user/Build
ビルド
../../configure --target-list=x86_64-softmmu # x86_64-softmmuのCPUのみをビルドする
make -j 16
AppAmorへ設定追加
Ubuntuのセキュリティ機能が邪魔をするので、先にバイナリを登録しておきます。
/etc/apparmor.d/usr.sbin.libvirtd
以下の2行を追加
/home/user/Workspace/qemu/user/Build/* PUx,
/home/user/Workspace/qemu/user/Build/pc-bios/** PUxr,
/etc/apparmor.d/abstractions/libvirt-qemu
以下の1行を追加
/home/user/Workspace/qemu/rarudo/Build/* rmix,
sudo systemctl reload apparmor.service
起動したいVishのxmlをいじる
virsh edit vmの名前
<!-- VM起動を妨げるAppArmorを使わない -->
<domain>
<seclabel type='none' model='apparmor'/>
...
<!-- ビルドしたqemuのパス指定 -->
<emulator>/home/user/Workspace/qemu/user/Build/qemu-system-x86_64</emulator>
トラブルシューティング
virsh edit時にcannot execute binary
AppArmorの設定に不備がある
virsh start時にPermission Denied
<seclabel type='none' model='apparmor'/>
を設定すると実行できる
参考
Author And Source
この問題について(UbuntuでQEMU6.2をビルドして使ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/rarudonet/items/cd245754f06894481ce8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .