Итак, возник однажды интерес к запуску виндовых приложений в режиме интеграции с дисплеем хост-системы на Linux. (Для тех, кто не знает - режим seamless позволяет подключаться к Windows-машине по протоколу RDP и запускать какое-либо приложение, отображая его как родное, без окна с рабочим столом, т.е. на десктоп переносится только окно запущенного приложения).
Итак, дано: Хост - Ubuntu 10.04 x86, VirtualBox 3.1.6 Гостевая ОС: WinXP Pro SP2 eng (i386)
На машине с Ubuntu в VirtualBox была установлена гостевая XP, с которой и проводились эксперименты. 1. Первым шагом включаем RDP на самой XP. Узнаем адрес, полученный гостевой ОС, выполнив на гостевой XP команду ipconfig или через свойства сетевого адаптера и проверяем работоспособность RDP, запустив на хосте команду rdesktop ip_адрес_XP.
2. Потом в вбраузере виртуальной машины идем на http://www.cendio.com/seamlessrdp и качаем инсталлятор для винды, включающий этот самый режим передачи окна. Устанавливаем (точнее, распаковываем содержимое) куда-нибудь, например, на c:\seamlessrdp
3. Все. Можно проверять - на хосте выполняем: rdesktop -A -s "c:\seamlessrdp\seamlessrdpshell.exe notepad.exe" -u имя_пользователя_xp -p пароль
Если все было сделано правильно, то после окна логона, откроется Windows notepad.
Но... НО... Как всегда, без НО не обходится. В общем и целом, конечно, оно работает, НО...
1. При запуске сначала появляется полноэкранное окно логина в винду со стандартным отображением процесса логона и исчезает только на этапе, когда должен полностью прогрузиться рабочий стол. 2. При использовании rdesktop из дистрибутива, все запускаемые окна имеют как родные windows элементы управления, так и убунтушные, т.е. заголовки окна, меню и т.д. показывает и RDP и декоратор гнома, что не есть особо красиво... Лечится установкой последнего rdesktop'a из репозитариев дебиана. 3. При стандартных настройках XP может залогиниться только один пользователь. Естественно, это является ограничением самой винды, но в нашем случае, когда каждое окно (запускаемое windows-приложение) является отдельным сеансом RDP, это ограничивает кол-во запускаемых приложений так же до одного... 4. Т.к. сессия связи по RDP всего одна, при запуске второго приложения обычно возникают проблемы, т.е. вылетает ошибка rdesktop и ничего не происходит, при этом предыдущее открытое окно закрывается. Обычно лечится повторным запуском команды. Однако, поведение все же остается не совсем предсказуемым, т.к. по логике RDP происходит переподключение сессии с открытыми ранее приложениями, иногда вместо запускаемого приложения может появиться запущенное ранее. 5. Вопрос с количеством поддерживаемых XP RDP сессий в принципе можно решить хоть и не совсем официальным, но вполне работоспособным путем (www.kood.org/terminal-server-patch), однако это лишь добавляет поддержку нескольких терминальных сессий с разных машин, но не решает двух предыдущих проблем, т.к. запуск второй и последующих программ с одной машины приводит не к созданию новой сессии, а к переподключению к существующей.