Наш (уже бывший) украинский контрактор поставил одну очень полезную систему тестирования на выделенный для этого линуксовый хост. Мы раньше пытались работать с этой системой через Винду, но выходило как-то криво. Однако для отладки понадобилось подглядывать за процессом тестирования, при том что система работала исключительно безголовым сервером. Естественно, как любое юниксовое приложение, она могла посылать свою "морду" на указанный в $DISPLAY X-сервер. Вот только какой? Я было предложил выделить чей-то юниксовый десктоп в качестве "песочницы", но это ужасно неудобно: работаешь так и вдруг у тебя на экране начинает бежать чей-то тест. Короче говоря, было решено запустить выделенный VNC-сервер.
Вы не представляете, как давно я последний раз запускал Иксы. Обычно эту задачу штатно решали корпоративные айтишники, но тут надо было сделать нечто штучное. Попытка запустить известные команды от имени локального рута привела к кромешным ошибкам и чёрному-пречёрному десктопу в VNC-вьюере. Разговор с умными людьми помог осознать: у локального рута не смонтирована домашняя директория, поэтому бедному VNC и кедам некуда складывать свои конфиги. Ну, подумал я радостно, наконец-то создам что-то от рута! И ... создал. Сначала - домашнюю директорию нового аккаунта. Потом - сам аккаунт:
Создав аккаунт и пароль, настроил права в домашней директории:
Теперь можно привязать аккаунт и директорию:
Всё, начинаем строить инфрастуктуру для иксов:
После этого в домашнюю директорию был скопирован профайл xstartup и запущен VNC (не спрашивайте, почему на втором дисплее и зачем файл хранится в /tmp, это была какая-то итерация после неудачных попыток)
Собственно, вот и вся история. Кеды поднялись согласно сценарию в xstartup, резолюцию экрана настроил при помощи xrandr, а остальное заработало как обычно. Десктоп, работа с клипбордом, иксовый терминал, всё пашет (а почему бы и нет?). Воодушевлённый, переписал свой старый ланчер с Перла/Tk на Пайтон/Tkinter - тоже заработал как часы. Эх, молодость, чего мы только не вытворяли в своё время...
Вы скажете, ну сделал чувак пару стандартных телодвижений, которые можно нагуглить на раз-два. А теперь представьте себе, какие надо сделать телодвижения, чтобы с виндового десктопа приложение открыло окно ... на другом компьютере? Или изменить процесс загрузки десктопа (включая выбор самой оконной системы)? Или запустить на одном компьютере несколько независимых десктопов?
PS: система тестирования оказалась не без дефектов: падая она периодически создаёт core-дамп в текущей директории. Таким образом ей довольно быстро удалось загадить свой локальный диск до 100%. Пришлось дописать парочку crontab, чтобы выносили за ней какахи.
Вы не представляете, как давно я последний раз запускал Иксы. Обычно эту задачу штатно решали корпоративные айтишники, но тут надо было сделать нечто штучное. Попытка запустить известные команды от имени локального рута привела к кромешным ошибкам и чёрному-пречёрному десктопу в VNC-вьюере. Разговор с умными людьми помог осознать: у локального рута не смонтирована домашняя директория, поэтому бедному VNC и кедам некуда складывать свои конфиги. Ну, подумал я радостно, наконец-то создам что-то от рута! И ... создал. Сначала - домашнюю директорию нового аккаунта. Потом - сам аккаунт:
mkdir -p /var/home/vncuser useradd vncuser -m passwd vncuser
Создав аккаунт и пароль, настроил права в домашней директории:
chown vncuser /var/home/vncuser chgrp vncuser /var/home/vncuser
Теперь можно привязать аккаунт и директорию:
usermod -m -d /var/home/vncuser vncuser
Всё, начинаем строить инфрастуктуру для иксов:
sudo -u vncuser mkdir -p /var/home/vncuser/.vnc sudo -u vncuser vncpasswd
После этого в домашнюю директорию был скопирован профайл xstartup и запущен VNC (не спрашивайте, почему на втором дисплее и зачем файл хранится в /tmp, это была какая-то итерация после неудачных попыток)
sudo -u vncuser Xvnc :2 PasswordFile=/var/home/vncuser/.vnc/passwd -auth /tmp/.Xauthority
Собственно, вот и вся история. Кеды поднялись согласно сценарию в xstartup, резолюцию экрана настроил при помощи xrandr, а остальное заработало как обычно. Десктоп, работа с клипбордом, иксовый терминал, всё пашет (а почему бы и нет?). Воодушевлённый, переписал свой старый ланчер с Перла/Tk на Пайтон/Tkinter - тоже заработал как часы. Эх, молодость, чего мы только не вытворяли в своё время...
Вы скажете, ну сделал чувак пару стандартных телодвижений, которые можно нагуглить на раз-два. А теперь представьте себе, какие надо сделать телодвижения, чтобы с виндового десктопа приложение открыло окно ... на другом компьютере? Или изменить процесс загрузки десктопа (включая выбор самой оконной системы)? Или запустить на одном компьютере несколько независимых десктопов?
PS: система тестирования оказалась не без дефектов: падая она периодически создаёт core-дамп в текущей директории. Таким образом ей довольно быстро удалось загадить свой локальный диск до 100%. Пришлось дописать парочку crontab, чтобы выносили за ней какахи.
Tags: