Трещина между мирами
АрхивМногие Windows-пользователи хотели бы видеть вместо привычной оболочки Explorer что-либо другое. Осуществить задуманное поможет один из портов ядра Unix на Windows.
Многие Windows-пользователи хотели бы видеть вместо привычной оболочки Explorer что-либо другое. Не так давно («КТ» #497) мы уже писали, как ее модифицировать при помощи программ Talisman или Windows Blinds. Но эти программы лишь изменяют внешний вид Explorer, и до полноценных эмуляций им далеко. Если вам нужны только красивые кнопочки и менюшки, не читайте эту статью, поскольку в ней рассказывается о том, как установить на Windows, например, оболочку KDE, ничем не уступающую своим собратьям на *nix-платформах.
Осуществить задуманное поможет один из портов ядра Unix на Windows. Я выбрал наиболее популярный из них — Cygwin, созданный компанией Cygnus1. В последнее время интерес к проекту Cygwin со стороны программистов растет, и, как следствие, экспоненциально увеличивается число приложений, перенесенных на данную платформу. На Cygwin можно портировать практически любые *nix-программы, кроме, конечно, тех, которые активно взаимодействуют с низким уровнем ядра (драйверы, низкоуровневые демоны и т. п.). Для профессионалов это означает заметное сокращение времени и сил на перенос прикладных программ с одной платформы на другую2. Для обычных же пользователей — возможность войти в мир *nix, «не закрывая окон»: для первоначального изучения *nix-систем Cygwin идеален, поскольку в отличие от реальной ОС не оставляет вас один на один со зловещей чернотой консоли.
Пакет не является в полном смысле эмулятором. Внешний интерфейс ядра (набор функций и вызов) остается тем же, а само ядро переписывается на Windows API. Таким образом, появляется возможность запускать перекомпилированные программы, при этом исходный код самих программ изменять не придется. Чтобы окончательно разграничить эмуляторы и порты, скажу, что на первых вы можете запускать уже откомпилированные программы, а вторые предполагают совместимость на уровне исходных кодов.
На первый взгляд эта технология может показаться несколько убогой — ведь выбирая ту или иную систему, мы в основном обращаем внимание на производительность ее ядра. А здесь получается какой-то странноватый гибрид с программным интерфейсом (API) от *nix и ядром Windows. Хорошо известно, что введение дополнительного чужеродного слоя в систему может резко снизить ее производительность. В данном случае чужеродным является слой *nix, потому что его архитектура кардинально отличается даже от внешнего API Windows, не говоря уже о ядре. Чтобы заставить работать этот внешний слой, нужны порой титанические усилия Cygwin, на ходу пересобирающего вызовы *nix в формат Windows. Тем не менее, такая технология куда быстрее, нежели полное эмулирование *nix-системы. Доказательством ее жизнеспособности является проект под кодовым именем Rotor, используемый для переноса виртуальной машины .NET на платформу FreeBSD. В его рамках программисты из Microsoft практически полностью переписали Windows API для реализации функций FreeBSD3.
Возможные проблемы Во-первых, Cygwin вкупе c KDE на системе Windows 2003 Server работают нестабильно и частенько не запускаются (хотя раз на раз не приходится). Во-вторых, при установке иногда возникают проблемы с созданием командного файла, который запускает KDE и должен правильно прописывать пути к папкам KDE и Cygwin — чего он, к сожалению, может не делать. Но это легко поправимо, если пути вы укажете сами. Для этого вы можете либо создать командный файл, в котором прописать строку вида set path=%path%;…\cygwin\bin; …\cygwin\otp\kde3\bin\, а затем команду, запускающую KDE. Либо, если у вас установлена Windows 2000/XP, изменить переменную path глобально, нажав на кнопку Environment Variables, располагающуюся на закладке Advanced, в окне System Properties (Windows+Break). |
Поскольку при таком подходе для программы создается ее родная (Unix) среда с привычным окружением, то она даже не заметит подмены реальной системы на эмулируемую. Чтобы продемонстрировать возможности Cygwin, точно так же мы поступим и с KDE: поместим эту пользовательскую оболочку внутрь Cygwin, где она и будет исполняться.
Для упрощения задачи можно скачать уже готовый порт KDE под Cygwin4. Он поставляется в виде единственного, но внушительного файла размером 45 Мбайт. В отличие от программы установки Cygwin, он является типичным Windows-инсталлятором, так что единственным «сложным» моментом процесса установки будет выбор каталога, в который необходимо поместить порт (лучше всего …\cygwin\opt\kde3\).
После чего вы можете смело запускать ярлык Start KDE Desktop (full), расположенный на рабочем столе, — у вас должна получиться полноценная версия KDE, которая загрузится в обыкновенном Windows-окошке.
У Cygwin имеется одна не совсем очевидная, но крайне полезная возможность. Поскольку все свои настройки он хранит в скриптах и конфигурационных файлах, не прибегая к реестру Windows, вы всегда можете сделать полную резервную копию Cygwin, заархивировав или скопировав его файлы — благодаря чему можно легко и просто восстановить систему.
Есть и возможность параллельно запустить несколько копий KDE — предварительно сделав соответствующее количество копий системы Cygwin (во избежание конфликтов при совместном использовании файлов). Это наверняка оценят разработчики приложений: в одной копии можно создавать программы, а в другой их тестировать.
Напоследок — два слова о производительности портированной системы. Плавности, присущей реальной системе, обычно ожидать не приходится, но производительностью Cygwin я остался доволен — KDE работала на нем крайне стабильно и нареканий не вызывала.
Установка Cygwin Пусть вас не пугает сей процесс — он гораздо проще, чем установка реальной *nix-системы. На сайте www.cygwin.com вы найдете файл setup.exe (259 Кбайт), который является интерактивной средой установки, позволяющей скачать и инсталлировать необходимые файлы. После его запуска вам будет предложено три варианта дальнейших действий (рис. 1): установить файлы из Интернета (Install from Internet), загрузить их из Интернета на локальный компьютер (Download from Internet), а также установить файлы с диска (Install from Local Directory). Советую выбрать второй пункт, поскольку, единожды скачав все необходимые пакеты, вы всегда сможете установить их с диска, не прибегая к повторному обращению к Сети. |
1 В настоящее время пакет Cygwin поддерживается компанией Red Hat, купившей Cygnus.
2 Простой пример: используя Cygwin, можно написать служебные скрипты, которые одинаково запускаются и работают под обеими платформами, а не делать отдельно bat- и отдельно shell-скрипты. Это сильно ускоряет написание и особенно модификацию скриптов — попробуйте параллельно править обе версии, в которых различий больше, чем сходства!
3 Rotor полуофициально входит в состав .NET Framework и поставляется в виде открытых исходных кодов по лицензии Shared Source от Microsoft совместно с .NET CLI Source Code, которые вы можете безвозмездно скачать с сайта Microsoft (sscli_20021101.tgz, 15 Мбайт).
4 kde-cygwin.sourceforge.net.