SPICE
Краткий обзор технологий
Данная статья ещё не завершена!
Протокол SPICE
SPICE - простой протокол для независимой вычислительной среды. Позволяет работать с «виртуальным рабочим столом», в том числе, через Интернет, причём и на стороне «клиента», и на стороне «сервера» могут выступать различные операционные системы и аппаратные платформы (подробнее). Хотя изначально SPICE проектировался исключительно для виртуальных сред, его можно поставить в один ряд с новейшими (объектными) версиями таких «чисто терминальных» протоколов, как RDP и NX.
Proxmox Virtual Environment
PVE - готовое решение для управления средой виртуализации, позволяющее обеспечить, в числе прочего, безопасный удалённый доступ по протоколу SPICE к большому количеству терминальных серверов, работающих внутри виртуальных машин KVM. При этом можно задействовать максимум возможностей, предоставляемых протоколом SPICE и средой эмуляции QEMU, в том числе, проброс USB-флэшек, смарт-карт, принтеров, звука, получить более тесную интеграцию с окном гостевой системы (бесшовную работу мыши, клавиатуры, динамическое переключение разрешения экрана).
Драйвер QXL VGA
...
Агент виртуального рабочего стола
...
Терминальный сервер на физическом узле (даже без видеокарты)
Headless/bare-metal конфигурация теперь легко настраивается благодаря наличию в репозитории Xorg-модуля spiceqxl.
Общий доступ к рабочему столу
x11spice позволяет предоставлять удалённый общий доступ к своему рабочему столу (сеансу, уже запущенному на реальной видеокарте). Ленар Шакиров предлагает всем желающим протестировать аналог общего рабочего стола x2go (похожая функция в Windows называется "Удалённый помощник", для тех же целей служит TeamViewer). Установка в p8 или на Сизифе:
# apt-repo test 201098
# Правим конфигурацию под обычным пользователем
$ mkdir ~/.config/x11spice
$ cp -L /etc/xdg/x11spice/x11spice.conf ~/.config/x11spice/
$ mcedit ~/.config/x11spice/x11spice.conf
Чтобы подключаемый мог не только видеть рабочий стол, но и менять на нём что-либо, требуется включить опцию allow-control=true.
Прямое использование qemu/kvm
...
Настройка терминального сервера
# apt-get install spiceqxl
# cp -af /etc/X11/xorg.conf.d /root/
# rm -f /etc/X11/xorg.conf.d/*
# cat >/etc/X11/xorg.conf <<EOF
# https://cgit.freedesktop.org/xorg/driver/xf86-video-qxl/plain/examples/spiceqxl.xorg.conf.example
Section "Device"
Identifier "XSPICE QXL"
Driver "spiceqxl"
# ---- Network and security options
#Option "SpiceDisableTicketing" "False"
Option "SpicePassword" "123"
#Option "SpicePort" "5900"
#Option "SpiceTlsPort" "5900"
#Option "SpiceSasl" "False"
#Option "SpiceX509Dir" ""
#Option "SpiceCacertFile" ""
#Option "SpiceX509KeyFile" ""
#Option "SpiceX509KeyPassword" ""
#Option "SpiceX509CertFile" ""
#Option "SpiceDhFile" ""
#Option "SpiceTlsCiphers" ""
#Option "SpiceAddr" ""
#Option "SpiceIPV4Only" "True"
#Option "SpiceIPV6Only" "False"
#Option "SpiceExitOnDisconnect" "False"
# ---- Monitor configuration options
Option "NumHeads" "1"
# ---- Compression options
#Option "SpiceZlibGlzWanCompression" "auto"
#Option "SpiceJpegWanCompression" "auto"
#Option "SpiceImageCompression" "auto_glz"
#Option "SpiceDeferredFPS" "10"
#Option "SpiceStreamingVideo" "filter"
#Option "SpiceVideoCodecs" ""
#Option "EnableImageCache" "True"
#Option "EnableFallbackCache" "True"
#Option "EnableSurfaces" "True"
# ---- Xspice-specific buffer options
#Option "SurfaceBufferSize" "128"
#Option "CommandBufferSize" "128"
#Option "FrameBufferSize" "16"
# ---- VDAgent options
#Option "SpiceVdagentEnabled" "False"
#Option "SpiceVdagentVirtioPath" "/tmp/xspice-virtio"
#Option "SpiceVdagentUinputPath" "/tmp/xspice-uinput"
#Option "SpiceVdagentUid" "0"
#Option "SpiceVdagentGid" "0"
#Option "SpiceAgentMouse" "True"
#Option "SpicePlaybackCompression" "True"
#Option "SpiceDisableCopyPaste" "False"
#Option "SpicePlaybackFIFODir" ""
#Option "SpiceSmartCardFile" "/tmp/spice.pcsc.comm"
EndSection
Section "InputDevice"
Identifier "XSPICE Pointer"
Driver "xspice pointer"
EndSection
Section "InputDevice"
Identifier "XSPICE Keyboard"
Driver "xspice keyboard"
EndSection
Section "Monitor"
Identifier "XSPICE Monitor"
EndSection
Section "Screen"
Identifier "XSPICE Screen"
Monitor "XSPICE Monitor"
Device "XSPICE QXL"
DefaultDepth 24
EndSection
Section "ServerLayout"
Identifier "XSPICE Layout"
Screen "XSPICE Screen"
InputDevice "XSPICE Keyboard"
InputDevice "XSPICE Pointer"
EndSection
Section "ServerFlags"
Option "AutoAddDevices" "False"
EndSection
EOF
Удалённое подключение к терминальному серверу
# apt-get install libspice-gtk-tools virt-viewer spice-html5
$ remote-vewer "spice://10.X.Y.Z?port=5900&password=123"
$ spicy -p 5900 -h 10.X.Y.Z -w 123
Продолжение следует...