Profile

coolwolf0: (Default)
coolwolf0

May 2026

S M T W T F S
      12
3456789
101112 13 1415 16
17 1819 20 212223
24252627282930
31      

Custom Text

Наш (уже бывший) украинский контрактор поставил одну очень полезную систему тестирования на выделенный для этого линуксовый хост. Мы раньше пытались работать с этой системой через Винду, но выходило как-то криво. Однако для отладки понадобилось подглядывать за процессом тестирования, при том что система работала исключительно безголовым сервером. Естественно, как любое юниксовое приложение, она могла посылать свою "морду" на указанный в $DISPLAY X-сервер. Вот только какой? Я было предложил выделить чей-то юниксовый десктоп в качестве "песочницы", но это ужасно неудобно: работаешь так и вдруг у тебя на экране начинает бежать чей-то тест. Короче говоря, было решено запустить выделенный VNC-сервер.

Вы не представляете, как давно я последний раз запускал Иксы. Обычно эту задачу штатно решали корпоративные айтишники, но тут надо было сделать нечто штучное. Попытка запустить известные команды от имени локального рута привела к кромешным ошибкам и чёрному-пречёрному десктопу в 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, чтобы выносили за ней какахи.

Expand Cut Tags

No cut tags

Style Credit