QEMU/トラブルシューティング
目次
- 1 マウスカーソルが敏感すぎたり迷走する
- 2 カーソルが表示されない
- 3 2つの異なるマウスカーソルが表示される
- 4 VNC 使用時のキーボードの問題
- 5 キーボードが壊れているまたは矢印キーが動作しない
- 6 キーマップファイルを読み込めない
- 7 ウィンドウのリサイズでゲストのディスプレイが引き伸ばされる
- 8 ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy
- 9 libgfapi エラーメッセージ
- 10 ライブ環境でカーネルパニックが発生する
- 11 Windows 7 ゲストの音質が酷い
- 12 Could not access KVM kernel module: Permission denied
- 13 Windows 仮想マシンを起動したときに "System Thread Exception Not Handled"
- 14 特定の Windows のゲームやアプリケーションでクラッシュやブルスクリーンが発生する
- 15 高い割り込みレイテンシとマイクロスタッタリング
- 16 QXL ビデオの低解像度化
- 17 セキュアブート対応 OVMF を使用すると仮想マシンが起動しない
- 18 仮想マシンが Arch ISO で起動しない
- 19 ゲスト CPU の割り込みが発生しない
- 20 sddm を使用した KDE でログイン時に spice-vdagent が自動的に起動しない
- 21 QEMU 開始後に Bluetooth オーディオの音質が低下する
マウスカーソルが敏感すぎたり迷走する
カーソルが画面を飛び回って手に負えない場合、QEMU を起動する前にターミナルに次を入力することで直るかもしれません:
$ export SDL_VIDEO_X11_DGAMOUSE=0
このコマンドで直ったら、~/.bashrc ファイルにコマンドを追加することができます。
カーソルが表示されない
マウスカーソルを表示するには -display default,show-cursor=on を QEMU のオプションに追加してください。
オプションを追加しても表示されない場合、ディスプレイデバイスが正しく設定されているか確認してください。例: -vga qxl。
QEMU#マウスの統合 で説明されているように -usb-device usb-tablet を試すこともできます。これはデフォルトの PS/2 マウスエミュレーションを上書きし、追加のボーナスとしてホストとゲスト間でポインタ位置を同期させます。
2つの異なるマウスカーソルが表示される
ヒント QEMU#マウスの統合 を適用してください。
VNC 使用時のキーボードの問題
VNC の使用中、ここに (生々しく詳細に) 書かれているキーボードの問題を経験するかもしれません。解決策は QEMU で -k オプションを使用 しない ことと、gtk-vnc の gvncviewer を使用することです。libvirt のメーリングリストに投稿された この メッセージも参照してください。
キーボードが壊れているまたは矢印キーが動作しない
キーの一部が動かなかったり間違ったキーが "押されてしまう" (特に矢印キー) ときは、おそらくキーボードレイアウトをオプションとして指定する必要があります。キーボードレイアウトは /usr/share/qemu/keymaps で探すことができます。
$ qemu-system-x86_64 -k keymap disk_image
キーマップファイルを読み込めない
qemu-system-x86_64: -disnplay vnc=0.0.0.0:0: could not read keymap file: 'en'
-k 引数に渡された無効な keymap が原因です。たとえば、en は無効ですが、en-us は有効です。/usr/share/qemu/keymaps/ を参照してください。
ウィンドウのリサイズでゲストのディスプレイが引き伸ばされる
デフォルトのウィンドウサイズに戻すには、Ctrl+Alt+u を押して下さい。
ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy
-enable-kvm オプションを使って QEMU を起動した時に以下のようなエラーメッセージが表示される場合:
ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy failed to initialize KVM: Device or resource busy
他の ハイパーバイザ が動作しています。同時に複数のハイパーバイザを動かすのは推奨されていません、もしくは不可能です。
libgfapi エラーメッセージ
起動時に以下のエラーメッセージが表示される場合:
Failed to open module: libgfapi.so.0: cannot open shared object file: No such file or directory
glusterfs を インストール するか無視してください。GlusterFS はオプションの依存関係です。
ライブ環境でカーネルパニックが発生する
ライブ環境を起動した(あるいはシステムを起動)際に以下が発生する:
[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown block(0,0)
または起動を妨げる他の処理(例えば initramfs をアンパックできない、サービス foo を起動できない)など。
-m VALUE スイッチを付けて適当な量の RAM を指定して仮想マシンを開始してみてください。メモリスイッチがない場合、RAM が足りなくなると上記のような問題が発生することがあります。
Windows 7 ゲストの音質が酷い
Windows 7 ゲストで hda オーディオドライバを使用すると、音質が低下する場合があります。-soundhw ac97 引数をQEMU に渡してオーディオドライバを ac97 に変更し、ゲストに Realtek AC'97 Audio Codecs の AC97 ドライバをインストールすると問題が解決する場合があります。詳しくは Red Hat Bugzilla - Bug 1176761 を参照してください。
Could not access KVM kernel module: Permission denied
以下のエラーが表示される場合:
libvirtError: internal error: process exited while connecting to monitor: Could not access KVM kernel module: Permission denied failed to initialize KVM: Permission denied
Systemd 234 は kvm グループに動的 ID を割り当てます (FS#54943 を参照)。このエラーを回避するには、/etc/libvirt/qemu.conf ファイルを編集して group = "78" の行を group = "kvm" に変更する必要があります。
Windows 仮想マシンを起動したときに "System Thread Exception Not Handled"
Windows 8 や Windows 10 ゲストは起動時に "System Thread Exception Not Handled" という一般的な互換性例外を発生させることがあります。これは実機で奇妙な振る舞いをするレガシードライバ原因であることが多いようです。KVM マシンでは一般的に CPU モデルをcore2duo に設定することでこの問題を解決できます。
特定の Windows のゲームやアプリケーションでクラッシュやブルスクリーンが発生する
物理マシンでは問題なく動作するのに、仮想マシンで実行すると予期せずにクラッシュすることがあります。root で dmesg -wH を実行したときに MSR というエラーが発生した場合、クラッシュの原因はゲストがサポートされていない Model-specific registers (MSRs) にアクセスしようとすると、KVM が一般保護違反 (GPF) を起こすためです。これにより、ゲストアプリケーション/OS がクラッシュすることがよくあります。これらの問題の多くは、KVM モジュールに ignore_msrs=1 オプションを指定して実装されていない MSR を無視することで解決できます。
/etc/modprobe.d/kvm.conf
... options kvm ignore_msrs=1 ...
上記のオプションが役に立つのは以下のような場合です:
- GeForce Experience でサポートされていない CPU が存在するとエラーが表示される。
- StarCraft 2 や L.A.Noire で
KMODE_EXCEPTION_NOT_HANDLEDが発生して Windows 10 が確実にブルースクリーンになる。これらの場合、ブルースクリーン情報はドライバファイルを識別しません。
高い割り込みレイテンシとマイクロスタッタリング
この問題は小さな一時停止(カクつき)として現れ、特にゲームなどのグラフィックスを多用するアプリケーションで顕著になります。
- 原因の1つは、CPU 周波数スケーリング によって制御される CPU の省電力機能です。すべてのプロセッサコアについて
performanceに変更してください。 - もう1つの原因として、PS/2 入力が考えられます。PS/2 入力から Virtio 入力に切り替えてください。OVMF_による_PCI_パススルー#Evdev でキーボード・マウスを接続 を参照してください。
QXL ビデオの低解像度化
QEMU 4.1.0 では、QXL ビデオがスパイスで表示されると低解像度に戻るというリグレッションが発生しました。[1] たとえば、KMS が開始すると、テキストの解像度が 4x10 文字に低下することがあります。GUI の解像度を上げようとすると、サポートされている最低の解像度になることがあります。
回避策として、次の形式でデバイスを作成してください:
-device qxl-vga,max_outputs=1...
セキュアブート対応 OVMF を使用すると仮想マシンが起動しない
edk2-ovmf の OVMF_CODE.secboot.4m.fd と OVMF_CODE.secboot.fd ファイルは SMM サポート付きでビルドされています。仮想マシンで S3 サポートが無効になっていない場合、仮想マシンがまったく起動しない可能性があります。
qemu コマンドに -global ICH9-LPC.disable_s3=1 オプションを追加してください。
QEMU でセキュアブートを使用するために必要なオプションの詳細は FS#59465および https://github.com/tianocore/edk2/blob/master/OvmfPkg/README を参照してください。
仮想マシンが Arch ISO で起動しない
Arch ISO イメージから初めて仮想マシンを起動しようとすると、ブートプロセスがハングします。ブートメニューで e を押して console=ttyS0 をカーネルブートオプションに追加すると、さらに多くのブートメッセージと次のエラーが表示されます:
:: Mounting '/dev/disk/by-label/ARCH_202204' to '/run/archiso/bootmnt' Waiting 30 seconds for device /dev/disk/by-label/ARCH_202204 ... ERROR: '/dev/disk/by-label/ARCH_202204' device did not show up after 30 seconds... Falling back to interactive prompt You can try to fix the problem manually, log out when you are finished sh: can't access tty; job control turned off
このエラーメッセージは、実際の問題が何なのかを明確に示すものではありません。問題は、QEMU が仮想マシンに割り当てるデフォルトの 128MB の RAM にあります。-m 1024 で制限を 1024MB に増やすと問題が解決し、システムが起動します。その後、通常どおり Arch Linux のインストールを続けることができます。インストールが完了したら、仮想マシンへのメモリ割り当てを減らすことができます。1024MB が必要になるのは、RAM ディスクの要件とインストールメディアのサイズによるものです。 arch-releng メーリングリストのこのメッセージ とこのフォーラムのスレッド を参照してください。
ゲスト CPU の割り込みが発生しない
OSDev wiki に従って独自のオペレーティングシステムを作成している場合や、QEMU の gdb インターフェースで -s フラグを使用してゲストアーキテクチャアセンブリコードをステップ実行している場合、QEMU を含む多くのエミュレーターが、通常はいくつかの CPU 割り込みを実装し、多くのハードウェア割り込みは実装していないということを知っておくと役に立ちます。あなたのコードが割り込みを発生させているかどうかを知る1つの方法は、以下を使用して:
-d int
標準出力に割り込み/例外の表示を有効にすることです。
QEMU が提供するその他のゲストデバッグ機能については、以下を参照してください:
qemu-system-x86_64 -d help
もしくは、x86_64 をあなたの選択したゲストアーキテクチャに置き換えてください。
sddm を使用した KDE でログイン時に spice-vdagent が自動的に起動しない
/etc/xdg/autostart/spice-vdagent.desktop から X-GNOME-Autostart-Phaseテンプレート:=WindowManager を削除するかコメントアウトしてください。 [2]
QEMU 開始後に Bluetooth オーディオの音質が低下する
WirePlumber のプロファイル自動切り替え機能を無効にすることで、モノラル音声プロファイルへの切り替えを防止できます。
$ wpctl settings --save bluetooth.autoswitch-to-headset-profile false