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

    Продолжаем переваривать специи 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
    2. Mint 13 Maya

    *Способы автоматизации загрузки раскладки приведены по ссылке
    Метки:
    • +6
    • 18,7k
    • 3
    Поделиться публикацией
    Комментарии 3
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Да, скорей бы, а то намечаешься тут с VGA Pass-Through…
        • 0
          * намечаешься намучаешься

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.