고객:
spice-client-gtk
QEMU-KVM에서 가상 머신을 실행하는 하이퍼바이저인 원격 서버에 연결하는 데비안 워크스테이션에 패키지를 설치했습니다 . spice-client-gtk
하이퍼바이저 자체에는 설치되지 않습니다.
가상 기기:
각 가상 머신을 두 번 클릭 virt-manager
하고 기본 메뉴로 이동한 다음 ViewDetails이라는 속성을 선택 Display [Spice|VNC]
하고 섹션을 Type
로 설정했습니다 Spice server
. 또한 왼쪽의 다른 속성을 선택 하고 로 Video [QXL|Virtio|VGA]
설정했습니다 . 그런 다음 을 클릭하고 속성을 선택 하고 섹션을 로 설정한 다음 섹션을 로 설정합니다 .Model
QXL
Add HardwareChannel
Name
com.redhat.spice.0
Device Type
Spice agent (spicevmc)
내가 설치한 Windows 가상 머신에서스파이스 게스트 도구가상 머신을 다시 시작한 후 워크스테이션과 Windows 가상 머신 간에 복사하여 붙여넣을 수 있습니다.
Debian VM에서 패키지를 설치 spice-vdagent
하고 재부팅했는데 복사 및 붙여넣기가 작동하지 않았습니다.
systemctl
서비스 확인을 수행한 결과 spice-vdagentd.socket
only 서비스만 실행되고 있는 것으로 나타났습니다. 그런 다음 모든 서비스의 상태를 확인했습니다.
┌───┐
│ # │ 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.service
PID 파일을 열 수 없다고 보고하지만, 다시 확인한 후에는 수동으로 시작할 때마다 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
? 스타트업은 실패할까? 그렇다면 저널드의 버그는 무엇입니까?