Рендеринг OpenGL с переадресацией X11

Во-первых, вы должны сделать полную резервную копию, прежде чем пытаться сделать что-либо подобное.

Вам необходимо удалить этот 2-й раздел из таблицы разделов (, например. с помощью gdiskили parted), затем расширьте первый раздел до конца вновь доступного пространства и, наконец, увеличьте файловую систему, чтобы она знала, что у нее есть больше доступного хранилища -этот последний шаг отличается для каждого типа файловой системы. например. если fs - это xfs, вы должны использовать xfs_growfs. Для ext2/3/4 вы должны использовать resize2fs. На этом сайте есть несколько вопросов с хорошими ответами о расширении файловой системы -. Я настоятельно рекомендую тщательно изучить эту тему, прежде чем пытаться это сделать. Это несложно, но даже небольшие ошибки могут привести к катастрофической потере данных.

Другой вариант — просто создать новую виртуальную машину с диском 16 Гб или больше (или небольшим диском /dev/xvda boot/OS емкостью 1 -4 ГБ и вторым диском /dev/xvdb большего размера для базы данных -, что упростит задачу, если вам когда-нибудь понадобится снова увеличить объем памяти ). Получите вторую виртуальную машину, работающую точно так же, как оригинал, а затем скопируйте данные с исходной виртуальной машины на новую.

rsync, вероятно, лучше всего подходит для копирования -вы можете выполнить rsync данных, пока исходная виртуальная машина все еще работает и обслуживает запросы, чтобы передать большую часть данных,затем отключите службу базы данных на нем и снова выполните rsync, чтобы передать любые данные, которые были добавлены/изменены/удалены с момента запуска первого rsync. Затем выключите оригинал и перезапустите новую виртуальную машину, чтобы она имела тот же IP-адрес и т. д., что и оригинал. Это сведет к минимуму время простоя.

1
12.03.2018, 17:35
2 ответа

Я получил такой способ работы на Mac OS Mojave с использованием значений по умолчанию; напишите org.macports.X11 enable_iglx -bool trueв терминальном приложении, затем запустите Xquartz + extension GLX `в том же терминале.

После этого я могу запустить glxgears и начать растрирование, но оно отбрасывает изображение в верхний левый угол моего внешнего монитора (вместо отображения по умолчанию/сетчатки )и не рисует никаких кадров для изменения размера. /подвинь это.

Это напоминает мне дерьмовую поддержку драйверов, которую я имел с графическими картами Nvidia и пытался запустить рабочий стол Linux в 1990-х:)

Я просмотрел репозиторий ошибок на freedesktop.org, и оказалось, что дисплеи Retina пока не поддерживаются Xquartz/X11. Есть несколько хаков, но это напоминает мне о том, как неуклюже было запускать Wireshark несколько лет назад внутри XQuartz на моем Mac. Я просто хочу, чтобы переадресация X11 работала правильно, чтобы перерисовка кадров не занимала ~3–5 минут. См.https://gitlab.freedesktop.org/xorg/xserver/-/issues/187

1
17.09.2020, 00:03

РЕДАКТИРОВАТЬ 5 мая 2021 г.:С выпуском XQuartz 2.8.0 путь конфигурации изменился с org.macosforge.xquartz.X11на org.xquartz.X11. Применяются те же инструкции, просто замените старый путь на новый, если вы из будущего.


Хотя в ответах здесь есть исправления, я отправляю еще один, который я могу использовать для справки в будущем, когда эта проблема будет возникать в моей работе раз в два года:)

Это часто происходит при пересылке X (через SSH, Docker и т. д. ). Вам необходимо разрешить отрисовку OpenGL (iglx ), которая по умолчанию отключена на многих серверах X11 (, таких как XQuarts или стандартный сервер X11 в Ubuntu ). Ниже приведены некоторые другие журналы, связанные с этим.

XRequest.155: GLXBadContext 0x500003a
XRequest.155: BadValue (integer parameter out of range for operation) 0x0
XRequest.155: GLXBadContext 0x500003b
[xcb] Unknown sequence number while processing queue
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
../../src/xcb_io.c:259: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed.

Исправление заключается в включении iglx. Сначала проверьте, поддерживает ли ваша версия XQuarts эту функцию. Последний на момент написания этой статьи делает это, но он устарел, поэтому, возможно, не в будущем. Моя версия XQuartz 2.7.11 (xorg-server 1.18.4).

Затем запустите defaults write org.macosforge.xquartz.X11 enable_iglx -bool true. Вы должны быть в состоянии подтвердить, что он установлен, запустив

$ defaults read org.macosforge.xquartz.X11
{
    "app_to_run" = "/opt/X11/bin/xterm";
    "cache_fonts" = 1;
    "done_xinit_check" = 1;
    "enable_iglx" = 1; ####### this should be truthy
    "login_shell" = "/bin/sh";
    "no_auth" = 0;
    "nolisten_tcp" = 0;
    "startx_script" = "/opt/X11/bin/startx -- /opt/X11/bin/Xquartz";
}

Наконец, перезапустите xquartz (или всю машину ). Возможно, вам придется повторно -запустить xhost +, чтобы отключить безопасность и аутентификацию (нормально для изолированных машин, опасно для Интернета -открыто ). Теперь вы должны иметь возможность запускать приложения с графическим интерфейсом, как и ожидалось. Надеюсь это поможет!

4
31.03.2021, 15:43

Теги

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