Драйвер вулкана прекращает работать при выполнении в удаленном рабочем столе Google

Я выполняю человечность gcp экземпляр с присоединенным nvidia v100. Я установил графические драйверы и проверил использование правильности nvidia-smi и vulkaninfo. Оба шоу никакие ошибки. Это показывает, что графические драйверы установлены правильно.

Теперь я хочу иметь удаленную службу удаленного рабочего стола Google использования доступа дисплея. Таким образом, я следовал бездисплейным инструкциям по установке и всему seemd, чтобы подходить, пока я не протестировал видеокарту. Так или иначе при выполнении vulkaninfo в терминале в удаленном рабочем столе это ошибки с этим сообщением:

/build/vulkan-UL09PJ/vulkan-1.1.70+dfsg1/demos/vulkaninfo.c:2700: failed with VK_ERROR_INITIALIZATION_FAILED

Я погуглил везде и даже искал vulkaninfo исходный код для понимания, где эта ошибка происходит из, но я не могу найти его.

Кто-либо знает то, что вызывает эту ошибку? Почему драйвер вулкана хорошо работает в ssh терминале, но не в виртуальном дисплее?

0
задан 26 April 2020 в 03:55

1 ответ

Я выяснил способ заставить это работать, но это - симпатичный hacky. Я не делаю reccommand это для чувствительных систем

Все это запустилось с этой страницы, которая говорит нам

Если сервер X11, связанный с dpy, не владеет дисплеем, или если разрешение получить доступ к нему было уже получено другим объектом, вызов должен возвратить код ошибки VK_ERROR_INITIALIZATION_FAILED.

Это приводит меня к этому вопросу и этой команде: ps -ef | grep X. Это показало, что текущий дисплей был запущен с помощью xvfb. Это - x виртуальный кадровый буфер. По-видимому, xvbf не поддерживает вулкан. Поэтому давайте посмотрим, можем ли мы заставить удаленный рабочий стол Google использовать нормальный X-сервер (спойлер: да!).

Код позади chrome-remote-desktop сервис находится в /etc/init.d/chrome-remote-desktop, который в свою очередь работает /opt/google/chrome-remote-desktop/chrome-remote-desktop (исходный код). Там мы находим, что можем использовать CHROME_REMOTE_DESKTOP_USE_XORG переменная среды, чтобы заставить удаленный рабочий стол Google запустить дисплей Xorg с фиктивным драйвером. Давайте включим его путем добавления следующей строки к /etc/environment файл:

CHROME_REMOTE_DESKTOP_USE_XORG=1

После перезапуска сервиса я получил следующую ошибку

Only console users are allowed to run the X server

Почему X-сервер не запущен корнем? Поскольку сервис удаленного рабочего стола Chrome запускает отдельный дисплей для каждого пользователя от имени того пользователя.

Для фиксации выше ошибки, можно отредактировать /etc/X11/Xwrapper.config и набор allowed_users = anybody.

Теперь X-сервер жалуется что -logfile только доступно, когда сервер выполняется как корень (т.е. с реальным-uid 0). Если Вы похожи на меня и не заботитесь о входе, можно отредактировать /opt/google/chrome-remote-desktop/chrome-remote-desktop и удалите следующую строку (вокруг номера строки 581):

"-logfile", "/dev/null",

Почти там!

Теперь X-сервер жалуется что -config должен быть относительный путь. Эта страница объясняет, что файл конфигурации должен быть помещен в /etc/X11/<cmdline> или /usr/etc/X11/<cmdline>. Просмотр исходного кода /opt/google/chrome-remote-desktop/chrome-remote-desktop мы видим следующее:

    with tempfile.NamedTemporaryFile(
        prefix="chrome_remote_desktop_",
        suffix=".conf", delete=False) as config_file:
      config_file.write(gen_xorg_config(self.sizes).encode())

В данный момент файл конфигурации создается в /tmp, поэтому давайте переместим это. Добавьте следующую строку между префиксом и снабдите суффиксом строку:

dir="/etc/X11/",

X хочет получить относительный путь, таким образом, мы должны измениться

"-config", config_file.name

кому:

"-config", os.path.basename(config_file.name)

И потому что мы не корень, который мы должны дать пользователям, пишут разрешение в эту папку. Поэтому давайте работать:

sudo chmod 777 /etc/X11

Мы делаем все это так, чтобы мы могли использовать драйверы Nvidia. Замените фиктивный драйвер:

      'Section "Device"\n'
      '  Identifier "Chrome Remote Desktop Videocard"\n'
      '  Driver "dummy"\n'
      '  VideoRam {video_ram}\n'
      'EndSection\n'

с драйвером Nvidia:

      'Section "Device"\n'
      '  Identifier "Chrome Remote Desktop Videocard"\n'
      '  Driver "nvidia"\n'
      '  VendorName "NVIDIA Corporation"\n'
      '  VideoRam {video_ram}\n'
      'EndSection\n'

Так или иначе этой установке не нравится изменять размер, поэтому я вызвал единственный размер путем установки DEFAULT_SIZES_XORG кому: "1920x1080".

И теперь это работает!

0
ответ дан 26 April 2020 в 19:15

Другие вопросы по тегам:

Похожие вопросы: