Средства эмуляции в Linux
Средства эмуляции в Linux
В связи с повышенным интересом к всевозможным эмуляторам виртуальных машин, хочу написать пару строк на эту тему и описать, какие есть возможности эмуляции в Linux.
Если вам очень хочется работать с кодом другой ОС в Linux или сэмулировать какой-то девайс, т.к. его у вас нет, а программа работать с ним должна, то вам, конечно же, понадобится какой-то эмулятор.
Существуют несколько специальных инструментов для эмуляции виртуальных машин, которые дают разработчикам свободу построения специфических аппаратных конфигураций, а также позволяют контролировать процесс взаимодействия с виртуальными машинами и совершать отладочные действия на системном уровне (во всем известных VMWare и Win4Lin это сделать невозможно).
Эти системы в большинстве своем распространяются в открытых исходниках и делятся на три вида:
1. Эмуляторы аппаратного обеспечения, которые эмулируют определенные устройства (включая даже слоты PCI и регистры процессора).
2. Эмуляторы операционных систем.
3. Кроссплатформенные библиотеки — запускаются как традиционные Unix/Linux-процессы и предоставляют API той системы, которую они эмулируют.
Кроссплатформенные библиотеки
Один из наиболее известных примеров такой библиотеки — CodeWeavers CrossOver Office. CodeWeavers создали клон библиотеки Win32, с помощью которого можно запустить Windows-программу (такую, как Word или PowerPoint) без наличия на компьютере самой операционной системы Windows.
Это — большое техническое достижение учитывая тот факт, что Microsoft специально встраивает часть кода своих ведущих приложений в ядро Windows, чтобы помешать людям запускать эти приложения под другими операционными системами. (Технически это называется "привязка" (bundling), и это — одно из главных обвинений в суде против Microsoft.)
CodeWeavers превосходно подходит в случае, когда вам нужно запустить именно PowerPoint, и именно в то время, когда вы находитесь в Linux. Но он не предназначен для решения проблемы эмуляции на системном уровне и не понадобится, если вам нужно тестировать программы на различных системных конфигурациях.
Эмуляторы операционных систем
Кроссплатформенные библиотеки всего лишь предоставляют механизм для запуска программ. Эмулятор операционной системы намного сложнее, потому что он должен эмулировать все процессы и функции операционной системы.
— Wine — самый известный эмулятор Windows. Wine предоставляет полную замену (должен, по крайней мере) для Win32 API. В идеале, когда развитие этого проекта завершится, он сможет полностью заменить Windows.
Если вам нужно эмулировать Windows без затрат системных ресурсов на создание виртуальной машины, то Wine — для вас.
— Dosemu — это аналог Wine для вселенной 1980-х годов. Dosemu эмулирует DOS и даже включает в себя клон MS-DOS под названием FreeDOS. Очень нужная программа, если вам нужно запускать DOS-приложения под Unix/Linux.
Эмуляторы аппаратного обеспечения
Самые тяжелые и ресурсоемкие эмуляторы. С помощью этих систем можно создавать виртуальные компьютеры любой конфигурации.
— Bochs — эмулятор компьютера x86. Один из самых близких Open Source-аналогов для коммерческого продукта VMWare. Bochs полностью эмулирует компьютер вместе с основными устройствами ввода/вывода, и это — хороший выбор, если вы хотите эмулировать стандартные системы с установленными *BSD, Linux или Windows. Главное преимущество Bochs — то, что это настоящий эмулятор, который может быть запущен на любой Unix-платформе. А это значит, что вы сможете эмулировать Windows и другие операционные системы для x86 на компьютерах PPC, Sun и даже на мэйнфреймах IBM.
— Plex86 — это клон Bochs (разработчик — Kevin Lawton, создатель проекта Bochs), который позволяет увеличить скорость эмуляции аппаратного обеспечения за счет использования специфических x86-инструкций.
— User-Mode Linux — "Linux в пользовательском режиме" — самый универсальный эмулятор. Он работает немного не так, как традиционные эмуляторы аппаратного обеспечения — он позволяет вам создавать виртуальные машины, имеющие оборудование, которого может и не быть на вашем компьютере. Это может быть очень удобно для тестирования различных конфигураций аппаратного обеспечения, потому что вам не придется идти в магазин и покупать необходимое дополнительное оборудование. User-Mode Linux состоит из набора патчей к ядру Linux, которые позволяют вам загружать другие операционные системы в консольных окнах. Приятная особенность — виртуальные операционные системы не требуют для запуска прав root'а. Поэтому каждый пользователь может загружать у себя сколько угодно операционных систем независимо от других пользователей.
Процесс виртуализации настолько полный, что вы даже можете запускать X11 на виртуальных системах. Но это может вас запутать, особенно если у вас загружено много виртуальных систем, потому что их X11-приложения располагаются на одном рабочем столе с обычными программами X Window.
Также с помощью User-Mode Linux можно создать загрузочный диск с определенной конфигурацией, которую вам нужно загрузить. Конечно же, как и в любой хорошей программе для Linux, все необходимые компоненты и настройки могут загружаться через сеть.
X-Stranger, linux@hitech.by
В связи с повышенным интересом к всевозможным эмуляторам виртуальных машин, хочу написать пару строк на эту тему и описать, какие есть возможности эмуляции в Linux.
Если вам очень хочется работать с кодом другой ОС в Linux или сэмулировать какой-то девайс, т.к. его у вас нет, а программа работать с ним должна, то вам, конечно же, понадобится какой-то эмулятор.
Существуют несколько специальных инструментов для эмуляции виртуальных машин, которые дают разработчикам свободу построения специфических аппаратных конфигураций, а также позволяют контролировать процесс взаимодействия с виртуальными машинами и совершать отладочные действия на системном уровне (во всем известных VMWare и Win4Lin это сделать невозможно).
Эти системы в большинстве своем распространяются в открытых исходниках и делятся на три вида:
1. Эмуляторы аппаратного обеспечения, которые эмулируют определенные устройства (включая даже слоты PCI и регистры процессора).
2. Эмуляторы операционных систем.
3. Кроссплатформенные библиотеки — запускаются как традиционные Unix/Linux-процессы и предоставляют API той системы, которую они эмулируют.
Кроссплатформенные библиотеки
Один из наиболее известных примеров такой библиотеки — CodeWeavers CrossOver Office. CodeWeavers создали клон библиотеки Win32, с помощью которого можно запустить Windows-программу (такую, как Word или PowerPoint) без наличия на компьютере самой операционной системы Windows.
Это — большое техническое достижение учитывая тот факт, что Microsoft специально встраивает часть кода своих ведущих приложений в ядро Windows, чтобы помешать людям запускать эти приложения под другими операционными системами. (Технически это называется "привязка" (bundling), и это — одно из главных обвинений в суде против Microsoft.)
CodeWeavers превосходно подходит в случае, когда вам нужно запустить именно PowerPoint, и именно в то время, когда вы находитесь в Linux. Но он не предназначен для решения проблемы эмуляции на системном уровне и не понадобится, если вам нужно тестировать программы на различных системных конфигурациях.
Эмуляторы операционных систем
Кроссплатформенные библиотеки всего лишь предоставляют механизм для запуска программ. Эмулятор операционной системы намного сложнее, потому что он должен эмулировать все процессы и функции операционной системы.
— Wine — самый известный эмулятор Windows. Wine предоставляет полную замену (должен, по крайней мере) для Win32 API. В идеале, когда развитие этого проекта завершится, он сможет полностью заменить Windows.
Если вам нужно эмулировать Windows без затрат системных ресурсов на создание виртуальной машины, то Wine — для вас.
— Dosemu — это аналог Wine для вселенной 1980-х годов. Dosemu эмулирует DOS и даже включает в себя клон MS-DOS под названием FreeDOS. Очень нужная программа, если вам нужно запускать DOS-приложения под Unix/Linux.
Эмуляторы аппаратного обеспечения
Самые тяжелые и ресурсоемкие эмуляторы. С помощью этих систем можно создавать виртуальные компьютеры любой конфигурации.
— Bochs — эмулятор компьютера x86. Один из самых близких Open Source-аналогов для коммерческого продукта VMWare. Bochs полностью эмулирует компьютер вместе с основными устройствами ввода/вывода, и это — хороший выбор, если вы хотите эмулировать стандартные системы с установленными *BSD, Linux или Windows. Главное преимущество Bochs — то, что это настоящий эмулятор, который может быть запущен на любой Unix-платформе. А это значит, что вы сможете эмулировать Windows и другие операционные системы для x86 на компьютерах PPC, Sun и даже на мэйнфреймах IBM.
— Plex86 — это клон Bochs (разработчик — Kevin Lawton, создатель проекта Bochs), который позволяет увеличить скорость эмуляции аппаратного обеспечения за счет использования специфических x86-инструкций.
— User-Mode Linux — "Linux в пользовательском режиме" — самый универсальный эмулятор. Он работает немного не так, как традиционные эмуляторы аппаратного обеспечения — он позволяет вам создавать виртуальные машины, имеющие оборудование, которого может и не быть на вашем компьютере. Это может быть очень удобно для тестирования различных конфигураций аппаратного обеспечения, потому что вам не придется идти в магазин и покупать необходимое дополнительное оборудование. User-Mode Linux состоит из набора патчей к ядру Linux, которые позволяют вам загружать другие операционные системы в консольных окнах. Приятная особенность — виртуальные операционные системы не требуют для запуска прав root'а. Поэтому каждый пользователь может загружать у себя сколько угодно операционных систем независимо от других пользователей.
Процесс виртуализации настолько полный, что вы даже можете запускать X11 на виртуальных системах. Но это может вас запутать, особенно если у вас загружено много виртуальных систем, потому что их X11-приложения располагаются на одном рабочем столе с обычными программами X Window.
Также с помощью User-Mode Linux можно создать загрузочный диск с определенной конфигурацией, которую вам нужно загрузить. Конечно же, как и в любой хорошей программе для Linux, все необходимые компоненты и настройки могут загружаться через сеть.
X-Stranger, linux@hitech.by
Компьютерная газета. Статья была опубликована в номере 35 за 2002 год в рубрике soft :: linux