Трещина между мирами 25.11.2003 Алексей Дубовцев Многие 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.
Поскольку при таком подходе для программы создается ее родная (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 работала на нем крайне стабильно и нареканий не вызывала.
1 В настоящее время пакет Cygwin поддерживается компанией Red Hat, купившей Cygnus.
|