Cтроим мосты: запуск WIN-программ в среде UNIX
ГЛАВНОЕ ПРЕПЯТСТВИЕ, ОСТАНАВЛИВАЮЩЕЕ МНОГИХ НА ПУТИ МИГРАЦИИ С WINDOWS НА
UNIX, ЗАКЛЮЧАЕТСЯ В ОГРОМНОМ КОЛИЧЕСТВЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, СОЗДАННОГО ДЛЯ
WINDOWS, НО ЕЩЕ НЕ ПЕРЕНЕСЕННОГО В UNIX. РАССМОТРИМ НЕСКОЛЬКО СПОСОБОВ, КОТОРЫЕ
ПОМОГУТ ПРОЛОЖИТЬ УСТОЙЧИВЫЙ МОСТ НАД ЭТОЙ ПРОПАСТЬЮ.
Wine: воссоздание Win32 API
Wine — это проект, цель которого — полное воссоздание Win32 API поверх
POSIX API и графической оконной системы X Window. Пакет wine моделирует в среде
UNIX среду исполнения Windows, позволяя программам, написанным для Windows, без
модификации исполняться в UNIX-подобной операционной системе (Linux, FreeBSD,
Solaris). Так как wine ничего не эмулирует, а лишь создает Win32-обертки к
стандартным функциям POSIX, программы, запущенные под его управлением,
исполняются чрезвычайно быстро. В большинстве случаев скорость сопоставима со
скоростью запуска программы под Windows, а иной раз превосходит ее. Эта
особенность делает wine весьма привлекательным продуктом для тех, кто решил
мигрировать на UNIX, но по каким-то причинам не может отказаться от
windows-программ.
Картина омрачается только тем, что wine еще недостаточно стабилен в его
текущей версии. Проекту уже около двенадцати лет, и он до сих пор находится в
alpha-стадии. Разработчики проделали колоссальную работу по реконструкции
громоздкого и запутанного API Windows, но некоторые вещи еще не реализованы. В
частности, далека от совершенства текущая реализация DirectX, а также
отсутствуют некоторые недокументированные API-вызовы. Но большинство программ
успешно запускаются и многие ведут себя достаточно стабильно.
CrossОver: наследник wine
CrossOver — это специальная версия wine, включающая в себя дополнительные
настройки и доработки, направленные на лучшую совместимость с наиболее
популярным ПО для Windows (вроде Microsoft Office, Internet Explorer, PhotoShop,
War Craft 3). В отличие от wine, который распространяется свободно и с открытыми
исходными текстами, CrossОver является коммерческим продуктом и распространяется
в бинарных пакетах за небольшую плату. Доступна также пробная версия, которую
любой желающий может загрузить с сайта
www.codeweavers.com.
Эмуляторы и виртуальные машины
На данный момент в мире UNIX среди эмуляторов и виртуальных машин можно
выделить двух основных игроков. Во-первых, эмулятор qemu, построенный на основе
классической технологии программной эмуляции ПК и всех его аппаратных устройств.
Во-вторых, Xen, являющийся монитором виртуальных машин и устроенный более
изощренно. Ниже рассмотрим оба варианта виртуализации.
Qemu: эмуляция
Qemu — это эмулятор ПК, разработанный французским программистом
Фабрисом Беллардом (Fabrice Bellard). Qemu эмулирует не только процессор, но и
все его периферийное оборудование (видео и звуковые карты, мышь, клавиатура),
поэтому может с легкостью запустить практически любую ОС, поддерживающую
персональные компьютеры, как отдельный процесс Linux. Qemu гораздо быстрее
другого известного эмулятора Bochs и поэтому снискал большую популярность среди
пользователей. Отличительная особенность qemu заключается в том, что он способен
работать в двух режимах: имитации всего ПК вместе с периферией и эмуляции
целевого процессора. Второй режим позволяет запускать программы Linux,
предназначенные для исполнения на процессорах другой архитектуры (поддерживаются
x86, ARM, SPARC и PowerPC). Некоторые пользователи применяют этот режим для
запуска wine, который привязан к архитектуре x86, на своем PowerPC.
Преимущество qemu в простоте его установки и использования. Являясь всего
лишь стандартной программой, исполняемой под контролем операционной системы, он
позволяет в кратчайшие сроки развернуть виртуальный сервер или же просто
запустить иную операционную систему с целью отладки или использования
специальных приложений, недоступных в основной ОС.
Недостаток qemu также в его программной сущности. Программная виртуальная
машина, исполняемая как пользовательское приложение, просто не в состоянии
обеспечить приемлемый уровень скорости исполнения гостевой операционной системы.
Полная эмуляция процессора существенно снижает скорость исполнения кода (надо
быть готовым к десятикратному снижению скорости исполнения). К счастью, проблему
можно если не решить окончательно, то хотя бы смягчить, используя специальный
модуль ядра kqemu, распространяемый с сайта разработчика. Благодаря kqemu
эмулятор получает возможность исполнять часть кода гостевой ОС на реальном
процессоре, что приводит к заметному увеличению скорости исполнения. По словам
разработчика, соотношение скорости исполнения ОС в эмулируемой среде и на
реальной аппаратуре составляет от 1:5 до 1:1.
Xen: полная виртуализация
Сегодня лучшим решением среди мониторов виртуальных машин с открытым исходным
кодом можно считать Xen, который может использовать как режим полной
виртуализации (требует, чтобы процессор поддерживал технологию виртуализации VT
от Intel или SVM от AMD), так и режим паравиртуализации (требует модификации
ОС).
Достоинством первого режима является то, что с его помощью можно запустить
любую ОС, без необходимости какой-либо доработки. Вы получаете возможность
одновременно работать как с Windows, так и с Linux, переключаясь между ними при
помощи простой комбинации клавиш. Недостаток — в необходимости покупки мощного
процессора.
Режим паравиртуализации, напротив, не требует специального процессора, но
может быть применен только в сочетании с операционными системами, прошедшими
специальную доработку (Linux, Solaris, NetBSD). Кроме того, паравиртуализация
обеспечивает более высокую, в сравнении с полной виртуализацией, скорость работы
ОС.
Kvm: гипервизор в ядре Linux
Другой вариант полной виртуализации предложили разработчики модуля ядра для
Linux, который не требует модификации ядра или отдельного гипервизора. После
загрузки модуля kvm само ядро Linux превращается в гипервизор, позволяя гостевой
ОС работать с приемлемой скоростью. Kvm использует модифицированную версию qemu
для эмуляции устройств ввода-вывода и требует процессор, поддерживающий
аппаратную технологию виртуализации.
|
Обсуждение статьи
|
|
|
|
RE: Cтроим мосты: запуск WIN-программ в среде UNIX а где же решения от VmWare и SUN ? |
|
|
Keywords: zPOSTz zMAIN_THEMEz z10012z
Для Авторов: edit delete
Автор: Евгений Зобнин Дата: 04.12.2008 13:46:42©
|