Я экспериментировал с переадресацией X11 последние несколько часов, и пока что мне удалось переадресовать X-сервер моего настольного ПК на мой ноутбук, используя X11VNC в качестве сервера и X2VNC в качестве клиента. X2VNC использует Xinerama для обеспечения поведения, похожего на двухэкранное, между моим ноутбуком и моим настольным ПК.
Это на самом деле очень здорово!
Я знаю, что большинство систем Linux запускают Xorg и среды рабочего стола на TTY7.
Поэтому я задумался, возможно ли каким-либо образом привязать VNC-туннель к собственному TTY?
Было бы здорово иметь возможность переключаться между двумя TTY, чтобы выбирать, какой машиной управлять. И мне бы такой подход понравился больше, чем использование Xinerama или GUI.
решение1
Думаю, это не совсем ответ, но это может стать отправной точкой.
Я запустил несколько дополнительных X-серверов, используя xinit, вот так:
xinit -- :1 tty3
xinit -- :2
xinit -- :3 tty5
xinit -- :4
Похоже, я даже могу запустить несколько сеансов gnome3 и xfce на разных виртуальных дисплеях.
startx -- :2 tty3
startx -- :3 tty4
И теперь я могу начать что-то в этих сеансах, экспортировав переменную DISPLAY export DISPLAY=:3
, а затем выбрать ее с помощью Ctrl-Alt-F2, F3 и т. д.
Однако я совершенно не представляю, что я делаю (переключаю ли я ДИСПЛЕЙ, сессию, консоль или tty?), это просто здорово, как вы говорите... ;-)
[tomh@workstation001 ~]$ export DISPLAY=:4
[tomh@workstation001 ~]$ google-chrome
решение2
Я знаю, что это старо, но:
xinit -e ssh -XYC $HOSTTOSSHTO startx -- :1
Единственный недостаток, который я вижу, это то, что вы не можете закрыть терминал входа после начала сеанса. Двигайтесь вперед и назад с помощью CTRL+ ALT+ F#, как упоминалось в других постах. Я делаю это с моим Raspberry Pi все время, и делал это с серверами и т. п. по всему интернету (немного медленно). Вы также можете поменяться startx
с помощью /usr/bin/icewm
, openbox
, startKDE
или что-то еще.
решение3
Кажется, я нашел правильное решение этой проблемы.
Я создал пользователя специально для подключения к моему настольному компьютеру.
Внутри пользовательского файла ~/.xinitrc на моем ноутбуке есть следующая строка (/home/desktop/.xinitrc):
exec vncviewer 192.168.1.2
192.168.1.2 — это IP-адрес моего настольного компьютера в моей сети.
В моем случае я теперь использую Tiger VNC в качестве клиента и по-прежнему X11VNC в качестве сервера на моем настольном ПК.
Думаю, подойдет любой клиент.
Сейчас это работает так: я вхожу в tty2 через CTRL+ALT+F2, вхожу как новый пользователь рабочего стола и затем инициирую x с помощью xinit -- :1
. Новый сервер x запустится на tty8, поскольку мой основной сервер x уже запущен на tty7.
vncviewer запускается и успешно подключается к моему настольному ПК, обеспечивая отображение всего экрана плюс полосы прокрутки, если разрешение настольного ПК больше, чем у моего ноутбука.
Теперь я могу легко переключаться между ноутбуком и настольным ПК с помощью сочетания клавиш CTRL+ALT+7 и CTRL+ALT+8.
Вот полная процедура, предполагающая, что вы используете Tiger VNC (единственное отличие exec vncviewer x.x.x.x
):
- Создать нового пользователя с
adduser desktop
- Конфигурация нового пользователя соответствует значениям по умолчанию, поэтому продолжайте нажимать Enter, пока пользователь не будет создан.
- Откройте
/home/desktop/.xinitrc
(не забудьте сделать это как root, если вы не вошли в систему как пользователь рабочего стола, а также помните о правах доступа) и очистите файл (если в нем есть какой-либо контент) и введите следующую строку:exec vncviewer x.x.x.x
- Замените
x.x.x.x
на нужный вам IP-адрес. - Сохраните файл.
- Введите неиспользуемый tty с помощью сочетания клавиш CTRL+ALT+X, где X — число от 1 до 9.
- Войти как
desktop
- Инициируйте новый X-сервер с помощью
xinit -- :1
, вы можете использовать другой дисплей, если :1 уже используется. - Вас перенаправят на новый tty, где запущен X-сервер, и вуаля! Теперь Tiger VNC должен подключиться к выбранному вами IP-адресу.
Тыможетстолкнуться с проблемами, если у вас есть среда рабочего стола, которая автоматически запускается при запуске X от любого пользователя. Так что имейте это в виду, если что-то работает не так, как должно.