Вопрос или проблема
Я запустил vncserver
или удаленный экземпляр с помощью команды vncserver
, и теперь могу подключиться к нему с помощью VNC-клиента.
К сожалению, я не могу запустить vncconfig
из-за ошибки
Нет расширения VNC на дисплее
Все это происходит в VNC. Как это возможно?
1) Создайте копию vncserver
sudo cp /usr/bin/vncserver /usr/bin/vncserver.bkp
2) Откройте vncserver и найдите $defaultXStartup
sudo vi /usr/bin/vncserver
3) Измените строки на:
$defaultXStartup
= ("#!/bin/sh\n\n".
"# Раскомментируйте следующие две строки для нормального рабочего стола:\n".
"# unset SESSION_MANAGER\n".
"# exec /etc/X11/xinit/xinitrc\n\n".
"[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup\n".
"[ -r \$HOME/.Xresources ] && xrdb \$HOME/.Xresources\n".
"xsetroot -solid grey\n".
"vncconfig -iconic &\n".
"x-terminal-emulator -geometry 80x24+10+10 -ls -title \"\$VNCDESKTOP Desktop\" &\n".
"x-window-manager &\n");
Это обеспечит запуск всех необходимых компонентов внутри VNC.
Если у вас возникнут проблемы, пожалуйста, перейдите по следующей ссылке и убедитесь, что все необходимые компоненты правильно установлены.
Смотрите Установка VNC-сервера на Ubuntu.
.
Ответ или решение
Проблема: Отсутствие расширения VNC на дисплее VNC
Вы столкнулись с сообщением об ошибке "No VNC extension on display" при попытке запустить vncconfig
на вашем VNC-сервере. Это достаточно распространенная проблема, и, к счастью, существуют решения, которые могут помочь устранить её. В этой статье мы подробно рассмотрим возможные причины возникновения проблемы и предложим шаги для её решения.
1. Понимание ошибки
Ошибка "No VNC extension on display" указывает на то, что расширение VNC не активировано на дисплее X11, что препятствует нормальному функционированию vncconfig
. Это может произойти если:
- Dисплей X11 не создан правильно.
- Не установлены необходимые компоненты.
- Скрипт инициализации X11 неправильно настроен.
2. Проверка конфигурации VNC сервера
Чтобы решить эту проблему, начнем с проверки конфигурации vncserver
и его инициализации:
-
Создание резервной копии
vncserver
:Для начала рекомендуется сделать резервную копию текущего скрипта
vncserver
, чтобы иметь возможность вернуться к оригинальной версии в случае ошибок.sudo cp /usr/bin/vncserver /usr/bin/vncserver.bkp
-
Изменение файла
vncserver
:Откройте файл
vncserver
для редактирования:sudo vi /usr/bin/vncserver
Найдите переменную
$defaultXStartup
и убедитесь, что она настроена правильно. Например:$defaultXStartup = ("#!/bin/sh\n\n". "# Uncomment the following two lines for normal desktop:\n". "# unset SESSION_MANAGER\n". "# exec /etc/X11/xinit/xinitrc\n\n". "[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup\n". "[ -r \$HOME/.Xresources ] && xrdb \$HOME/.Xresources\n". "xsetroot -solid grey\n". "vncconfig -iconic &\n". "x-terminal-emulator -geometry 80x24+10+10 -ls -title \"\$VNCDESKTOP Desktop\" &\n". "x-window-manager &\n");
Эти изменения гарантируют, что все необходимые компоненты инициализируются корректно при старте VNC-сессии.
3. Убедитесь в установке необходимых компонентов
Проверьте, что все необходимые пакеты и зависимости установлены на вашем сервере. Используйте следующую команду для установки:
sudo apt-get install tightvncserver xtightvncviewer
Это важно, так как неработающие компоненты могут приводить к несанкционированным ошибкам.
4. Перезапуск VNC-сервера
После внесения всех изменений не забудьте перезапустить ваш VNC-сервер:
vncserver -kill :1
vncserver :1
Замените :1
на правильный номер дисплея, если необходимо.
5. Проверка логов
Если ошибка продолжает возникать, проверьте логи VNC на наличие дополнительных подсказок или ошибок. Они могут находиться в $HOME/.vnc
и выглядеть как hostname:displaynumber.log
.
Заключение
Надеемся, что предложенные шаги помогут вам решить проблему с отсутствием расширения VNC на дисплее. Если проблема сохраняется даже после выполнения всех шагов, вы можете обратиться к документации или форумам по VNC-серверам для получения дополнительных рекомендаций.
Обеспечьте себя необходимыми знаниями и пониманием работы VNC, чтобы минимизировать вероятные ошибки в будущем.