SPICE: различия между версиями

Материал из ALT Linux Wiki
Строка 21: Строка 21:
=== SPICE-клиенты ===
=== SPICE-клиенты ===


'''SPICE-клиенты''' - это программы, которые используются для удалённого доступа по протоколу SPICE. Рекомендуемым SPICE-клиентом является '''remote-viewer''' из пакета '''virt-viewer'''. Программа '''spicy''' из пакета '''libspice-gtk-tools''' может использоваться в тестовых целях, всей функциональности она не предоставляет. Установив пакет '''spice-html5''', можно получить удалённый доступ прямо из веб-браузера.
'''SPICE-клиенты''' - это программы, которые используются для удалённого доступа по протоколу SPICE. Рекомендуемым SPICE-клиентом является '''remote-viewer''' из пакета '''virt-viewer'''. Программа '''spicy''' из пакета '''libspice-gtk-tools''' может использоваться в тестовых целях, всей функциональности она не предоставляет. Установив пакет '''spice-html5''', можно получить удалённый доступ к «виртуальному рабочему столу» прямо из веб-браузера.


=== Драйвер QXL VGA ===
=== Драйвер QXL VGA ===

Версия от 02:18, 1 марта 2018

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Краткий обзор технологий

Протокол SPICE

SPICE - простой протокол для независимой вычислительной среды. Позволяет работать с «виртуальным рабочим столом», в том числе, через Интернет, причём и на стороне «клиента», и на стороне «сервера» могут выступать различные операционные системы и аппаратные платформы (подробнее). Хотя изначально SPICE проектировался исключительно для виртуальных сред, его можно поставить в один ряд с новейшими (объектными) версиями таких «чисто терминальных» протоколов, как RDP и NX.

Proxmox Virtual Environment

PVE - готовое решение для управления средой виртуализации, позволяющее обеспечить, в числе прочего, безопасный удалённый доступ по протоколу SPICE к большому количеству терминальных серверов, работающих внутри виртуальных машин KVM. При этом можно задействовать максимум возможностей, предоставляемых протоколом SPICE и средой эмуляции QEMU, в том числе, проброс USB-флэшек, смарт-карт, принтеров, звука, получить более тесную интеграцию с окном гостевой системы (бесшовную работу мыши, клавиатуры, динамическое переключение разрешения экрана, общий с гостевой системой буфер обмена для операций копирования/вставки).

OpenStack

OpenStack - ещё одно готовое решение для построения более масштабной инфраструктуры облачных сервисов и облачных хранилищ. Как и PVE, OpenStack позволяет обеспечить, в числе прочего, безопасный удалённый доступ по протоколу SPICE к большому количеству терминальных серверов, работающих внутри виртуальных машин, использующих гипервизор QEMU/KVM.

SPICE-сервер

SPICE-сервер реализован библиотекой libspice. Пока что основным пользователем этой библиотеки является QEMU, использующей SPICE-сервер для обеспечения удалённого доступа к виртуальным машинам через протокол SPICE. Интерфейс виртуального устройства (Virtual Device Interface, VDI) определяет набор интерфейсов, которые предоставляют стандартный способ публикации виртуальных устройств (например, дисплеи, клавиатуры, мыши) и позволяет различным компонентам SPICE взаимодействовать с этими устройствами. С одной стороны, сервер связывается с удалённым клиентом с использованием протокола SPICE, а с другой стороны, он взаимодействует с хост-приложением VDI (например, QEMU). Таким образом, все возможности протокола SPICE на данный момент могут быть предоставлены только в виртуальной среде на основе QEMU/KVM. Поскольку код сервера вынесен в отдельную библиотеку, есть надежда на скорое появление реализаций, выходящих за рамки виртуальной среды QEMU/KVM.

SPICE-клиенты

SPICE-клиенты - это программы, которые используются для удалённого доступа по протоколу SPICE. Рекомендуемым SPICE-клиентом является remote-viewer из пакета virt-viewer. Программа spicy из пакета libspice-gtk-tools может использоваться в тестовых целях, всей функциональности она не предоставляет. Установив пакет spice-html5, можно получить удалённый доступ к «виртуальному рабочему столу» прямо из веб-браузера.

Драйвер QXL VGA

SPICE-сервер поддерживает интерфейс VDI QXL. Когда libspice используется с QEMU, для улучшения производительности «удалённого» дисплея и улучшения графических возможностей «гостевой» графической системы можно задействовать определенное видео-устройство PCI. Это видео-устройство называется устройством QXL. Оно требует наличия «гостевых» драйверов QXL для полной функциональности.

Агент «виртуального рабочего стола»

...

Терминальный сервер на физическом узле

Терминальный сервер может быть развёрнут не только в виртуальной среде. Он может работать и на физическом железе, даже без видеокарты. 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

Продолжение следует...