📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の1版が非表示) | |||
| 133行目: | 133行目: | ||
--enable-spice \ # SPICEプロトコルによるリモートデスクトップ機能を有効化 | --enable-spice \ # SPICEプロトコルによるリモートデスクトップ機能を有効化 | ||
--enable-spice-protocol \ # SPICEプロトコルのライブラリサポートを有効化 | --enable-spice-protocol \ # SPICEプロトコルのライブラリサポートを有効化 | ||
--enable-usb-redir \ # ホストUSBデバイスのゲストへの転送機能を有効化 | --enable-usb-redir \ # ホストUSBデバイスのゲストへの転送機能を有効化 (SPICE経由でリモートからもリダイレクト可能な方式) | ||
--enable-opengl \ # OpenGLによるGPUアクセラレーションを有効化 | --enable-opengl \ # OpenGLによるGPUアクセラレーションを有効化 | ||
--enable-tpm \ # TPM (Trusted Platform Module) エミュレーションを有効化 | --enable-tpm \ # TPM (Trusted Platform Module) エミュレーションを有効化 | ||
| 145行目: | 145行目: | ||
--enable-fdt \ # FDT (Flattened Device Tree) サポートを有効化 | --enable-fdt \ # FDT (Flattened Device Tree) サポートを有効化 | ||
--audio-drv-list=oss,alsa,sdl,pa # オーディオドライバとしてOSS, ALSA, SDL, PulseAudioを指定 | --audio-drv-list=oss,alsa,sdl,pa # オーディオドライバとしてOSS, ALSA, SDL, PulseAudioを指定 | ||
# 下記のオプションは任意 または 指定不可 | |||
--enable-vfio-user-server # 任意 : VFIO (Virtual Function I/O) ユーザサーバ機能を有効にする場合 | --enable-vfio-user-server # 任意 : VFIO (Virtual Function I/O) ユーザサーバ機能を有効にする場合 | ||
--enable-libusb # | # 仮想マシンへの直接パススルーをユーザスペースで実現するプロトコル | ||
--enable-hax # QEMU 8. | # 主にリモートPC上のデバイスを仮想マシンにアタッチしたり、ソフトウェアでエミュレートしたデバイスをVFIOデバイスとして公開する場合に使用 | ||
--enable-libusb # ローカルでUSBを直接パススルーする方式 | |||
# <code>--enable-usb-redir</code> オプションを指定している場合は不要 | |||
--enable-hax # QEMU 8.2以降は、このオプションは指定不可 | |||
--target-list=i386-softmmu,i386-linux-user,x86_64-softmmu,x86_64-linux-user # ターゲットをx86およびx86_64に限定する場合 | --target-list=i386-softmmu,i386-linux-user,x86_64-softmmu,x86_64-linux-user # ターゲットをx86およびx86_64に限定する場合 | ||
# ターゲットにARM EABIHFおよびAArch64を追加する場合は、<code>arm-softmmu,arm-linux-user,aarch64-softmmu,aarch64-linux-user</code> を指定する | # ターゲットにARM EABIHFおよびAArch64を追加する場合は、<code>arm-softmmu,arm-linux-user,aarch64-softmmu,aarch64-linux-user</code> を指定する | ||
| 155行目: | 160行目: | ||
<br> | <br> | ||
<u>※注意</u><br> | <u>※注意</u><br> | ||
<u><code>--enable-vfio-user-server</code>オプションは、QEMUのコンフィギュレーションにおいて、VFIOをユーザ空間で使用するためのサーバ機能を有効にする。<br></u> | <u><code>--enable-vfio-user-server</code> オプションは、QEMUのコンフィギュレーションにおいて、VFIOをユーザ空間で使用するためのサーバ機能を有効にする。<br></u> | ||
<br> | <br> | ||
<u>VFIO-userは、QEMUの比較的新しい機能であり、以下に示すような目的がある。</u><br> | <u>VFIO-userは、QEMUの比較的新しい機能であり、以下に示すような目的がある。</u><br> | ||
| 180行目: | 185行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
===== セキュリティ設定 : AppArmorを使用している場合 ===== | |||
QEMUを/usrディレクトリ以外の場所にインストールする場合、パーミッションの問題が発生する可能性がある。<br> | |||
そのため、libVirtにQEMUを実行するためのAppArmorパーミッションを追加する必要がある。<br> | |||
<br> | <br> | ||
まず、/etc/apparmor.d/usr.sbin.libvirtdファイルにある最後の <code>}</code> スコープの直前に、以下に示す設定を追記する。<br> | |||
まず、/etc/apparmor.d/usr.sbin. | 以下の例では、QEMUを /home/<ユーザ名>/QEMU/ディレクトリ にインストールしているものとする。<br> | ||
sudo vi /etc/apparmor.d/usr.sbin.libvirtd | sudo vi /etc/apparmor.d/usr.sbin.libvirtd | ||
<br> | <br> | ||
| 192行目: | 197行目: | ||
# ...略 | # ...略 | ||
# 例 : | # 例 : | ||
/usr/bin/kvm rmix, | /usr/bin/kvm rmix, | ||
/home/<ユーザ名> | /home/<ユーザ名>/QEMU/bin/qemu-i386 rmix, | ||
/home/<ユーザ名> | /home/<ユーザ名>/QEMU/bin/qemu-system-i386 rmix, | ||
/home/<ユーザ名> | /home/<ユーザ名>/QEMU/bin/qemu-x86_64 rmix, | ||
/home/<ユーザ名> | /home/<ユーザ名>/QEMU/bin/qemu-system-x86_64 rmix, | ||
} | } | ||
<br> | <br> | ||
| 206行目: | 210行目: | ||
# /etc/apparmor.d/abstractions/libvirt-qemuファイル | # /etc/apparmor.d/abstractions/libvirt-qemuファイル | ||
/usr/bin/kvm rmix, | /usr/bin/kvm rmix, | ||
/home<ユーザ名> | /home/<ユーザ名>/QEMU/bin/qemu-i386 rmix, | ||
/home/<ユーザ名> | /home/<ユーザ名>/QEMU/bin/qemu-system-i386 rmix, | ||
/home/<ユーザ名> | /home/<ユーザ名>/QEMU/bin/qemu-x86_64 rmix, | ||
/home/<ユーザ名> | /home/<ユーザ名>/QEMU/bin/qemu-system-x86_64 rmix, | ||
<br> | <br> | ||
AppArmorの設定を反映させるため、ルールセットを再読み込みする。<br> | |||
sudo systemctl reload apparmor | sudo systemctl reload apparmor | ||
<br> | |||
===== セキュリティ設定 : SELinuxを使用している場合 ===== | |||
QEMUを/usrディレクトリ以外の場所にインストールする場合、SELinuxによるアクセス拒否が発生する可能性がある。<br> | |||
そのため、QEMUバイナリに適切なセキュリティコンテキスト(ラベル)を付与する必要がある。<br> | |||
<br> | |||
まず、現在のSELinuxモードを確認する。<br> | |||
getenforce | |||
<br> | |||
<u>Permissive</u> または <u>Disabled</u> と表示された場合は、設定は不要である。<br> | |||
<u>Enforcing</u> と表示された場合は、以下に示す設定が必要となる。<br> | |||
<br> | |||
====== ファイルコンテキストの設定 ====== | |||
QEMUバイナリに適切なコンテキストを設定する。<br> | |||
以下の例では、QEMUを /home/<ユーザ名>/QEMU/ディレクトリにインストールしているものとする。<br> | |||
<br> | |||
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/bin/qemu-system-.*" | |||
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/bin/qemu-i386" | |||
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/bin/qemu-x86_64" | |||
<br> | |||
関連ライブラリやデータファイルにも必要に応じて設定する。<br> | |||
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/libexec(/.*)?" | |||
sudo semanage fcontext -a -t virt_image_t "/home/<ユーザ名>/QEMU/share(/.*)?" | |||
<br> | |||
====== コンテキストの適用 ====== | |||
設定したコンテキストを実際のファイルに適用 (再ラベル付け) する。<br> | |||
sudo restorecon -Rv /home/<ユーザ名>/QEMU/ | |||
<br> | |||
====== 設定の確認 ====== | |||
コンテキストが正しく設定されたかどうかを確認する。<br> | |||
ls -Z /home/<ユーザ名>/QEMU/bin/ | |||
<br> | |||
正しく設定されていれば、<u>qemu_exec_t</u> ラベルが表示される。<br> | |||
<br> | |||
====== ブール値の調整(必要に応じて) ====== | |||
状況によっては、SELinuxのブール値を変更する必要がある。<br> | |||
<br> | |||
仮想化関連のブール値を確認する。<br> | |||
getsebool -a | grep virt | |||
<br> | |||
必要に応じて有効化する。<br> | |||
sudo setsebool -P virt_use_nfs on # NFSを使用する場合 | |||
sudo setsebool -P virt_use_samba on # Sambaを使用する場合 | |||
sudo setsebool -P virt_sandbox_use_all_caps on # 特権が必要な場合 | |||
<br> | |||
====== 上記で解決しない場合 : カスタムポリシーモジュールの作成 ====== | |||
上記の設定でもアクセス拒否が発生する場合は、カスタムポリシーを作成する。<br> | |||
<br> | |||
拒否ログを確認する。<br> | |||
sudo ausearch -m avc -ts recent | |||
<br> | |||
ログからポリシーモジュールを自動生成する。<br> | |||
sudo ausearch -m avc -ts recent | audit2allow -M qemu_custom | |||
<br> | |||
モジュールをインストールする。<br> | |||
sudo semodule -i qemu_custom.pp | |||
<br> | <br> | ||