Виртуальная видеокарта QXL на реальном железе

в 9:06, , рубрики: vnc, виртуализация, системное администрирование, удалённый доступ, метки: , ,

Продолжаем переваривать специи SPICE RedHat Desktop Virtualization. В данной заметке будет рассмотрен SPICE-сервер исключительно как альтернатива VNC-серверу также будет рассмотрен эксперимент по настройке в операционной системе Fedora 17 и в операционных системах семейства Ubuntu 12.04 Precise Pangolin, например LinuxMint.

QXL vs. VNC

Виртуальная видеокарта QXL изначально была разработана для использования в эмуляторе KVM для улучшения вывода графики через протокол SPICE. С недавнего времени виртуальная видеокарта QXL может использоваться на реальном оборудовании для предоставления удаленного доступа по сети по протоколу SPICE к экрану сервера под управлением X-сервера, как альтернатива VNC-серверу.

Для запуска VNC-сервера нужен X-сервер, который должен быть запущен локально и которому для работы нужна видеокарта. В отличие от VNC-сервера, SPICE-сервер встроен в драйвер виртуальной видеокарты QXL, а как следствие может запускать X-сервер без наличия реальной видеокарты.

Работа с компьютером без использования видеокарты может использоваться не только для снижения стоимости конфигурации и использования, но также и для проброса всех установленных PCI-видеокарт в виртуальные машины спомощью технологий Vt-d и IOMMU.

Виртуальная видеокарта QXL налагает некоторые ограничения, которые необходимо учитывать при принятии решения о её использовании:

  1. Работа по выводу изображения переносится с графического процессора и памяти видеокарты на центральный процессор и оперативную память компьютера, что в свою очередь отражается на производительности. Хотя если процессор компьютера обладает несколькими ядрами и достаточным объемом оперативной памяти возрастание потребления вычислительных ресурсов будет не столь заметно.
  2. В силу переноса вычислений по обработке вывода графики с видеокарты на компьютер снижается не только производительность но и становятся недоступными некоторые возможности. Например: ускорение 3D-графики через аппаратный рендеринг, поддержка ускорения видео через оверлей и т.д. и т.п.
  3. Невозможность отладки загрузки до момента запуска X-сервера. Отладка в случае возникновения ошибок на этапе згрузки осуществляется путем подключения видео карты либо использованием SSH или вывода консоли на последовательный порт.
  4. В отличае от VNC-сервера у SPICE-сервера имеется баг суть которго заключается в том что XKB в результате запуска QXL отваливается по этой причине необходимо каждый раз при запуске инициализировать раскладки с помощью команды*:
    setxkbmap -option grp:switch,grp:alt_shift_toggle,grp_led:scroll us,ru
    

  5. В отличие от виртуальной машины, реальный компьютер не имеет виртуального канала для работы с гипервизором в следствие чего работа с буфером обмена, проброс USB-устройств будут не доступны.
  6. После установки QXL-видеокарты Х-сервер не будет использовать реальную видеокарту.

Таким образом использование виртуальной видеокарты QXL неудобно для доступа к рабочим компьютерам напрямую, но может использоваться на серверах например на узлах виртуализации. Однако стоит отметить что при желании можно виртуализовать рабочие компьютеры и удаленно пробросить в них необходимое USB-оборудование обеспечив тем самым удаленный доступ.

Установка и настройка

В качестве примера проведем эксперимент по настройке удаленного доступа через SPICE-сервер на виртуальных машинах под управлением Ubuntu 12.04 и Fedora 17 после настройки из которых удалим видеоакарты. Если эксперимент с виртуальными машинами у Вас удастся можно переходить к реальному железу.

Прежде чем приступить к эксперименту, на компьютерах под управлением операционной системы GNU/Linux семейства Ubuntu 12.04 далее (Ubuntu) подключаем репозиторий repo.umvirt.org:

sudo -i
 # становимся root
cd /etc/apt/sources.list.d
 # переходим в каталог генерации списка репозиториев
wget -q -O- http://repo.umvirt.org/umvirt.key | sudo apt-key add -
 # импортируем ключ
wget http://repo.umvirt.org/umvirt_precise.list
 # загружаем параметры доступа к репозиторию для семейства Ubuntu 12.04
apt-get update
 # обновляем списки пакетов

Внимание: в настоящее время в репозитории представлены пакеты только для платформы amd64!

На компьютерах под управлением Fedora17 (далее Fedora) подключать репозиторий не нужно. Другие версии и дистрибутивы не тестировались.

Для того чтобы приступить к использованию QXL-видеокарты нужно:

  1. Установить QXL-драйвер (как минимум версии 0.0.17) и SPICE-сервер.
    Fedora:

    yum -y install xorg-x11-server-Xspice
    

    Ubuntu:

    apt-get install xserver-xorg-video-qxl xserver-xspice
    

  2. Установить и настроить SSH для удаленного доступа к консоли:
    Fedora:

    yum -y install openssh-server
    service sshd start #Запускаем sshd
    chkconfig --level 345 sshd on #включаем автозагрузку sshd
    system-config-firewall #отключаем firewall включенный по-умолчанию
    

    Ubuntu:

    apt-get install openssh-server
    

    Если SSH-соединение работает переходим к следующему этапу

  3. Явно прописать в настройках X-сервера в файле /etc/X11/xorg.conf использование видеокарты QXL и настройки SPICE-сервера:
    Section "Device"
        Identifier "XSPICE"
        Driver "spiceqxl"
    
        # Enable regular port. Either this or SpiceTlsPort, or one of XSPICE_PORT or
        # XSPICE_TLS_PORT environment variables must be specified
        # Defaults to 5900.
        Option "SpicePort" "5900"
    
        # Do not request any password from client
        Option "SpiceDisableTicketing" "0"
    
        # Set password client will be required to produce.
        Option "SpicePassword" "password"
    EndSection
    
    Section "InputDevice"
        Identifier "XSPICE POINTER"
        Driver     "xspice pointer"
    EndSection
    
    Section "InputDevice"
        Identifier "XSPICE KEYBOARD"
        Driver     "xspice keyboard"
    EndSection
    
    Section "Monitor"
        Identifier    "Configured Monitor"
    EndSection
    
    Section "Screen"
        Identifier     "XSPICE Screen"
        Monitor        "Configured Monitor"
        Device        "XSPICE"
        DefaultDepth    24
    EndSection
    
    Section "ServerLayout"
        Identifier "XSPICE Example"
        Screen "XSPICE Screen"
        InputDevice "XSPICE KEYBOARD"
        InputDevice "XSPICE POINTER"
    EndSection
    
    # Prevent udev from loading vmmouse in a vm and crashing.
    Section "ServerFlags"
        Option "AutoAddDevices" "False"
    EndSection
    
    

    Если файл не существует его следует создать. Для удоства, через SSH и буфер обмена вы можете вставить вышеуказанный код в файл.

  4. На машине клиента нужно установить необходимые пакеты:
    Fedora:

    yum -y install spice-gtk-tools spice-client
    

    Ubuntu:

    apt-get install spice-client spice-client-gtk
    

  5. Подключиться клиентом к SPICE-сервру. Например, для доступа к SPICE-серверу расположенному по адресу 192.168.122.10 выполним команду:
    spicec -h 192.168.122.10 -p 5900 -w password
    

    или

    spicy
    

В доказательство того, что SPICE-сервер может запускать X-сервер без видеокарты, привожу скриншоты Fedora и Mint 13 Maya (семейство Ubuntu 12.04) c выводом списка PCI устройств для подтверждения с помощью команды lspci:

  1. Fedora 17
    Виртуальная видеокарта QXL на реальном железе
  2. Mint 13 Maya
    Виртуальная видеокарта QXL на реальном железе

*Способы автоматизации загрузки раскладки приведены по ссылке

Автор: b0r1s

* - обязательные к заполнению поля