rdesktop vs Thinstation
Оригинал
статьи http://huefisher.livejournal.com/119734.html
rdesktop vs Thinstation
Последний месяц я был с головой погружен в
развертывание новой старой системы, состоящей из "мэйнфрейма",
сервер с Windows 2003 Server R2, и "тонких" клиентов,
бездисковые машины с загрузкой по сети через механизм PXE
линуксового дистрибутива Thinstation.
Когда гонял всю эту байду на испытательном стенде,
все работало безукоризненно, но при развертывании в реале вполне
закономерно всплыли некоторые грабли. Перечислю свои.
1) Порядка 30 машин были с ультрасовременными
материнками, на которых стояли ультрасовременные гигабитные сетевухи
да такие, что не поддерживались ядром (2.6.16.5) последней
thinstation. Пришлось искать линуксовые дрова, компилить их и
пересобирать ядро операционки, что достойно отдельного разговора.
Далее юзверьковые капризы:
2) Не работало колесико мышки. Помогает строчка в
thinstation.conf
MOUSE_PROTOCOL=IMPS/2
вместо стандартного
MOUSE_PROTOCOL=PS/2
3) Не работали usb-мыши.
Собирать образ thinstation нужно с включенным
параметром usb_hid и в thinstation.conf необходимо указать
MOUSE_DEVICE=/dev/input/mice
Если выше перечисленные проблемы достаточно просто
решаются штудированием мануалов и хауту (я еще вернусь к этой теме),
то последующие вызвали НЕДЕЦЦКИЕ танцы с бубном.
4) Глюки rdesktopa и всей этой дребанной
клавиатурной раскладки в иксах.
При загрузке rdesktopa c поддержкой русской
клавиатуры (rdesktop -k ru) все печаталось замечательно за
исключением ТОЧКИ. Кроме того, при включенном Caps Locke буквы
х,ъ,ж,э,б,ю отказывались выводиться в верхнем регистре. Если
последнее еще как-то можно проигнорировать, то первое достаточно
фатально.
Первое время приходилось грузится с раскладкой
en_us, отчего терминальный сеанс в дребанной винде разумеется
включался с английским языком по умолчанию. На деле это означало
постоянное переключение на русский язык при запуске нового
приложения. Отчего зверьки, разумеется, выли. Проблема Caps Lock
сохранялась и при этой раскладке.
Далее. Случайное нажатие Shift+Alt (слева) приводило к
фатальным последствиям. Клавиатура начинала глючить и выписывать
такие кренделя, что пугался даже я, а о хрупкой психике
пользователей и говорить не приходится. Поэтому в первую неделю я
ходил по кабинетам и грозил отрубить руки тому, кто нажмет по
запарке злополучную комбинацию. Надо ли говорить, что, не смотря на
мои угрозы, люди с завидным упорством нажимали на эти дребанные
кнопки?
Долгий и вдохновенный секс с яндексом и гуглем таки
помог . (прошу прощения у чела, который победил эту проблему -
ссылку на первоисточник я успешно проебал) . И вот тут впервые
всплыло таинственное XKB...
Откровенно говоря, я так и не осилил всю глубину и
мудрость данного пакета. Я довольствовался готовым, найденным в
пучинах рунета решением. Итак, чтобы забыть о проблеме "левого
shift-alt" ...
В папке
thinstation/packages/keymaps-en_us/x-common/lib/kmaps/xkb находим
файл en_us.xkm и запускаем
xkbcomp -xkb en_us.xkm
С удивлением обнаруживаем, что возле файла
en_us.xkm чудесным образом появился файл en_us.xkb. Лезем в него.
Находим строчку
key <LALT> { [ Alt_L, Meta_l ] };
и меняем ее на
key <LALT> { [ Alt_L] };
Аналогично, для правого Alt
key <RALT> { [ Alt_R, Meta_r ] };
меняем на
key <RALT> { [ Alt_R] };
Далее, запускаем
xkbcomp -xkm en_us.xkb
И переходим в основной каталог thinstation, где
запускаем
./build
Полученный образ выгружаем на наш ftp-сервер и
радуемся отсутствию глюка Shift-Alt
Это все хорошо. Но остались проблемы с русской
раскладкой, загружаемой rdesktopом, и Caps Lock...
После долгих и кровопролитных экспериментов с
файлами en_us.xkb удалось победить проблему Caps Lock...
В файле en_us.xkb находим строчку
key <AC10> { [ semicolon,
colon ] };
И меняем ее на
key <AC10> {
type= "ALPHABETIC",
symbols[Group1]= [ semicolon,
colon ]
};
Понятно, что такое решение влечет за собой один
побочный эффект - в английской раскладке Caps Lock начнет
переключать двоеточие на точку с запятой и обратно, что не есть
правильно. Но думаю это несмертельно, а обычные пользователи этого
вообще не заметят, так как с указанными символами в английской
раскладке практически не работают.
Аналогично поступаем с остальными "проблемными"
клавишами, а именно с
key <AC11> { [ apostrophe,
quotedbl ] };
key <AD11> { [ bracketleft, braceleft ]
};
key <AD12> { [ bracketright, braceright ]
};
key <AB08> { [ comma, less ]
};
key <AB09> { [ period, greater ]
};
Ну вот... Еще одна проблема решена...
Осталось одно - заставить rdesktop загружать
русскую раскладку ru при запуске нового сеанса и КОРРЕКТНО с ней
работать. Если я путанно изъясняюсь, то уточню - все предыдущие
манипуляции проводились с раскладкой en_us, которая загружалась в
rdesktop и требовала от пользователей постоянного переключения на
русский язык.
Не буду описывать свои многодневные брутфорсовые
атаки на rdesktop, xkb и весь этот маздай. Расскажу вам о том, чем
сердце успокоилось.
Итак, чтобы сделать русский языком по умолчанию
необходимо.... УДАЛИТЬ НАХРЕН ФАЙЛЫ С РУССКОЙ РАСКЛАДКОЙ!
Тупо заменяем файл ru.xkm
(thinstation/packages/keymaps-ru/x-common/lib/kmaps/xkb) файлом
en_us.xkm (предварительно подготовленным по выше описанной методе) и
не менее тупо заменяем файл ru из каталога thinstation
packages/keymaps-ru/rdesktop/lib/kmaps/keymaps/ на файл en из
соответствующего каталога, слегка изменив его, а именно, заменив
строчку
map 0x409
на
map 0x419
ВСЕ!
Наверняка есть более грамотное и элегантное
решение, но в сети я его не нашел. А изучать такой пакет, как XKB,
вкупе с клавиатурной суперпозицией в иксах у меня ни сил, ни желания
не было.