Программная часть
Для того, чтобы <<вдохнуть жизнь>> в описанную выше конструкцию, пришлось решить несколько проблем. В данном разделе мы перечислим их и лишь намекнем на способ решения -- более подробное описание для заинтересованных в деталях читателях содержится в приложении, а полные исходные тексты -- на сайте ЦКТ МГИУ (http://www.ctc.msiu.ru).
Первой проблемой явилось то, что два X-сервера не могут работать одновременно -- в каждый момент времени активен только один из них. Решение этой проблемы потребовало создания для каждого из трех X-серверов отдельного виртуального <<псевдоактивного>> терминала, при этом реальное переключение виртуальных терминалов в системе пришлось запретить.
Вторая проблема -- события, связанные со всеми тремя клавиатурами, смешиваются в единый поток. Принятое решение принудительной доставки событий с трех различных клавиатур виртуальным терминалам tty1, tty2 и tty3 соответственно, являясь достаточно прямолинейным, позволяет обойтись минимальными изменениями в ядре.
Следующая проблема связана с тем, что существует единственный X-сервер, который может использовать framebuffer -- XF86_FBDev. При этом он относится к категории неоптимизированных, что означает уменьшение скорости работы раз в пять и, как следствие, его практическую непригодность. Пришлось <<обучать>> обычный X-сервер работе с видеокартой через framebuffer.
Еще одна проблема -- обеспечение возможности Windows-сессий на <<Горынычах>>. Хотя сейчас уже очень во многих ситуациях можно полностью отказаться от использования продуктов Microsoft, всего лишь год-два назад это еще не было так. Решением проблемы является использование Citrix Metaframe, являющегося надстройкой к Windows Terminal Server. При этом, конечно, необходимо наличие в сети машины с Windows 2000 Server.