QEMU / KVM SPICE - コピー&ペースト機能はWindows VMでは機能しますが、Debian VMでは機能しません。

QEMU / KVM SPICE - コピー&ペースト機能はWindows VMでは機能しますが、Debian VMでは機能しません。

顧客:

spice-client-gtkQEMU-KVMで仮想マシンを実行しているハイパーバイザーであるリモートサーバーに接続するDebianワークステーションにパッケージをインストールしました。spice-client-gtkハイパーバイザー自体にはインストールされません。

仮想デバイス:

各仮想マシンをダブルクリックしvirt-managerてメインメニューに移動し、ViewDetailsというプロパティを選択しDisplay [Spice|VNC]てセクションTypeをに設定しましたSpice server。また、左の別のプロパティを選択してにVideo [QXL|Virtio|VGA]設定しました。次に、をクリックしてプロパティを選択し、セクションをに設定してからセクションをに設定します。ModelQXLAdd HardwareChannelNamecom.redhat.spice.0Device TypeSpice agent (spicevmc)

私がインストールしたWindows仮想マシンからスパイスゲストツール仮想マシンを再起動したら、ワークステーションとWindows仮想マシンの間でコピーして貼り付けることができます。

Debian VMでパッケージをインストールしspice-vdagentて再起動しましたが、コピーと貼り付けは機能しませんでした。

systemctlサービス確認を行った結果、spice-vdagentd.socketonly サービスのみが実行されていることがわかりました。その後、すべてのサービスのステータスを確認しました。

┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> systemctl status spice-vdagentd.service
● spice-vdagentd.service - Agent daemon for Spice guests
   Loaded: loaded (/lib/systemd/system/spice-vdagentd.service; indirect; vendor preset: enabled)
   Active: inactive (dead)

┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> systemctl status spice-vdagent.service
● spice-vdagentd.service - Agent daemon for Spice guests
   Loaded: loaded (/lib/systemd/system/spice-vdagentd.service; indirect; vendor preset: enabled)
   Active: inactive (dead)

┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> systemctl status spice-vdagentd.socket
● spice-vdagentd.socket - Activation socket for spice guest agent daemon
   Loaded: loaded (/lib/systemd/system/spice-vdagentd.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Fri 2021-01-08 08:57:50 CET; 4min 59s ago
   Listen: /var/run/spice-vdagentd/spice-vdagent-sock (Stream)
   CGroup: /system.slice/spice-vdagentd.socket

Jan 08 08:57:50 localhost systemd[1]: Listening on Activation socket for spice guest agent daemon.

┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> ls /lib/systemd/system/ | grep spice
-rw-r--r-- 1 root root  335 Oct  3  2018 spice-vdagentd.service
-rw-r--r-- 1 root root  280 Oct  3  2018 spice-vdagentd.socket
lrwxrwxrwx 1 root root   22 Oct  3  2018 spice-vdagent.service -> spice-vdagentd.service

サービスがをspice-vdagent.service指していることに注意してくださいspice-vdagentd.service

これでサービス定義ファイルを確認しましたsystemd

┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> cat /lib/systemd/system/spice-vdagentd.service
[Unit]
Description=Agent daemon for Spice guests
Requires=spice-vdagentd.socket

[Service]
Type=forking
EnvironmentFile=-/etc/default/spice-vdagentd
ExecStart=/usr/sbin/spice-vdagentd $SPICE_VDAGENTD_EXTRA_ARGS
PIDFile=/var/run/spice-vdagentd/spice-vdagentd.pid
PrivateTmp=true
Restart=on-failure

[Install]
Also=spice-vdagentd.socket
    
┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> cat /lib/systemd/system/spice-vdagentd.socket
[Unit]
Description=Activation socket for spice guest agent daemon
# only start the socket if the virtio port device exists
Requisite=dev-virtio\x2dports-com.redhat.spice.0.device

[Socket]
ListenStream=/var/run/spice-vdagentd/spice-vdagent-sock

[Install]
WantedBy=sockets.target

メモ:

構成パラメータのルートフォルダの前にはEnvironmentFileマイナス記号()が付いています。-

EnvironmentFile=-/etc/default/spice-vdagentd

@Zarothが彼の答えで指摘したように、これはバグではありません。

/etc/default/spice-vdagentdまた、基本的に存在しないものを作成することにしました。次に、内部に次のようにスパイスチャンネルを明示的に設定する行を追加しました。マニュアルページ:

┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> touch /etc/default/spice-vdagentd

┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> echo "SPICE_VDAGENTD_EXTRA_ARGS = -s "/dev/virtio-ports/com.redhat.spice.0"

Spiceチャンネルは、/dev/virtio-ports/com.redhat.spice.0以前にDebian VMで設定したとおり、Debian VMにすでに存在していますvirt-manager

Debian VMを再起動してみましたが、まだ...コピーして貼り付けることは機能しません。


次に追加:

@Zarothは、サービスを手動で開始して有効にすることを提案しましたspice-vdagentd.service。私はこれを実行した後、両方のサービスの状態を確認しました。

┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> systemctl status spice-vdagentd.socket
● spice-vdagentd.socket - Activation socket for spice guest agent daemon
   Loaded: loaded (/lib/systemd/system/spice-vdagentd.socket; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2021-01-08 10:08:06 CET; 2min 28s ago
   Listen: /var/run/spice-vdagentd/spice-vdagent-sock (Stream)
    Tasks: 0 (limit: 1149)
   Memory: 0B
   CGroup: /system.slice/spice-vdagentd.socket

Jan 08 10:08:06 localhost systemd[1]: Listening on Activation socket for spice guest agent daemon.

┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> sudo systemctl status spice-vdagentd.service
● spice-vdagentd.service - Agent daemon for Spice guests
   Loaded: loaded (/lib/systemd/system/spice-vdagentd.service; indirect; vendor preset: enabled)
   Active: active (running) since Fri 2021-01-08 10:09:02 CET; 1min 38s ago
  Process: 1263 ExecStart=/usr/sbin/spice-vdagentd $SPICE_VDAGENTD_EXTRA_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 1264 (spice-vdagentd)
    Tasks: 1 (limit: 1149)
   Memory: 520.0K
   CGroup: /system.slice/spice-vdagentd.service
           └─1264 /usr/sbin/spice-vdagentd -s /dev/virtio-ports/com.redhat.spice.0

Jan 08 10:09:02 localhost systemd[1]: Starting Agent daemon for Spice guests...
Jan 08 10:09:02 localhost systemd[1]: spice-vdagentd.service: Can't open PID file /run/spice-vdagentd/spice-vdagentd.pid
Jan 08 10:09:02 localhost systemd[1]: Started Agent daemon for Spice guests.

サービス状態ではspice-vdagentd.servicePIDファイルを開くことができないと報告しますが、再確認した後は手動で起動するたびにspice-vdagentd.service次のようになります。

┌───┐
│ # │ ziga > debian--vm > ~
└─┬─┘
  └─> ls -l /run/spice-vdagentd/spice-vdagentd.pid
-rw-r--r-- 1 root root 5 Jan  8 10:19 /run/spice-vdagentd/spice-vdagentd.pid

spice-vdagentd.serviceすべてがそうであるように見えますが、アクティブにしても起動しないため、これは奇妙です。この問題をどのように解決しますか?

答え1

inパスの前のマイナス記号はEnvironmentFileエラーではありません。それはただ意味するこのファイルはオプションです。:

渡される引数は絶対ファイル名であるか、オプションで「-」プレフィックスが付いたワイルドカード式でなければなりません。つまり、ファイルが存在しないとファイルを読み取ることができず、エラーや警告メッセージは記録されません。

ご質問については基本から始めます。実際にサービスを有効化および/または開始するとはどこにも言及していません。簡単に試してみましたかsystemctl enable spice-vdagentd.service && systemctl start spice-vdagentd.service?スタートアップは失敗するか?それでは、ジャーナルドのバグは何ですか?

関連情報