QEMU/KVM SPICE - 복사 및 붙여넣기 기능은 Windows VM에서는 작동하지만 Debian VM에서는 작동하지 않습니다.

QEMU/KVM SPICE - 복사 및 붙여넣기 기능은 Windows VM에서는 작동하지만 Debian VM에서는 작동하지 않습니다.

고객:

spice-client-gtkQEMU-KVM에서 가상 머신을 실행하는 하이퍼바이저인 원격 서버에 연결하는 데비안 워크스테이션에 패키지를 설치했습니다 . 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또한 기본적으로 존재하지 않는 것을 만들기로 결정했습니다 . 그런 다음 내부에 다음과 같이 Spice 채널을 명시적으로 설정하는 줄을 추가했습니다.매뉴얼 페이지:

┌───┐
│ # │ 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? 스타트업은 실패할까? 그렇다면 저널드의 버그는 무엇입니까?

관련 정보