ゲストオペレーティングシステム用のパススルーPS / 2キーボード

ゲストオペレーティングシステム用のパススルーPS / 2キーボード

Windowsオペレーティングシステムは、仮想マシン(ubuntu、libvirt、qemu-kvm)で実行されます。私のコンソールハードウェアにPS / 2キーボードがあります。パフォーマンスを低下させることなくゲストOSに転送する方法はありますか(おそらくPS / 2キーボードのキーマッピングを使用してUSBキーボードをエミュレートするなど)。 Spiceサーバー(libvirt GUI「Virtual Machine Manager」で)を試してみましたが、キーを押すと非常に迷惑な遅延が発生します。

ベストアンサー1

virsh edit <vm-name>まず、virt-manager GUIを介して構成XMLを変更するために使用する必要があります。

<domain>タグを確認してください。次のようにする必要があります。

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

タイプがkvmでない場合は、間違ったフライトに搭乗しました。新しいVMで再起動してください。 xmlns:qemu 属性がない場合は追加します。

セクションが既にある場合は、<qemu:commandline>次の2行を追加します。

<qemu:arg value='-object'/>
<qemu:arg value='input-linux,id=kbd,evdev=/dev/input/eventN,grab_all=on,repeat=on'/>

そうでない場合は、タグの下に作成し、<domain>これら2つのタグを含めます。

<devices>また、このセクションに追加する必要がある次のXMLを使用して、クライアントからキーボードデバイスを作成する必要があります。

<serial type='dev'>
<source path='/dev/input/eventN'/>
<target port='0'/>
</serial>

ここで定義された2番目のqemu:argとソースコードパスがeventN定義されました。 Nをキーボードの入力デバイス番号に置き換える必要があります。宛先ポートを変更するのではなく、ソースパスのみを変更してください。

私のキーボードデバイスは2ですが、あなたのキーボードデバイスは0または他の数字かもしれません。どのキーボードデバイスがあるかを調べるには、dmesg | grep input適切なキーボードデバイスを見つけます。私の言葉は:

input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2

それでも/dev/input/eventNパスを使いたいです。これにより、Nに使用する正しい番号が何であるかがわかります。 evdevでXを使用している場合(おそらくそうです)、Xログファイルにこの情報を見つけることもできます。注:ホストハードウェアを再構成すると、デバイス番号が変わる可能性があります。

ゲストでキーボードを使用すると、ホストはキーボードを認識しなくなります。ホストを制御するには、次のようにします。

  • ゲストを終了するか
  • USB経由で他のキーボードを接続する
  • SSH経由でログインする
  • シリアルコンソールを使用してください。

次のリンクからほとんどの情報を入手しました。

https://www.reddit.com/r/VFIO/comments/5hja2k/how_do_you_pass_through_a_ps2_keyboard/

おすすめ記事