Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Виртуализация и эмуляция в Linux

Корабль в бутылке - запускаем Linux в Linux

Автор: Валерий Качуров, _kv_@bk.ru
Опубликовано: 8.8.2002


© 2002, Издательский дом "КОМПЬЮТЕРРА" | http://www.computerra.ru/
Журнал "СОФТЕРРА" | http://www.softerra.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу: http://www.softerra.ru/freeos/19431/

Перевод статьи Девида Спектора "Ship in a Bottle"

Одна из положительных сторон сегодняшних информационных технологий - это то, что у IT-профессионалов есть возможности сделать большую работу с меньшими затратами. Во многих компаниях нет денег на покупку нового оборудования, а старые компьютеры уже давно проданы для того, чтобы вернуть хоть какую-то часть их первоначальной стоимости.

Предположим, что для тестирования различных программ и сервисов вам нужно иметь большое количество различных конфигураций аппаратного и программного обеспечения. Но возможностей покупки нового оборудования у вас нет. Самый простой выход из положения - это постоянное создание новых конфигураций на базе того, что уже имеется. Но этот процесс отбирает большое количество времени. Тем более, при создании новой конфигурации приходится разрушать уже имеющуюся. Что делать? И тут нам на помощь приходят специальные программы, позволяющие ╚создавать╩ сколько угодно компьютеров, затрачивая при этом всего лишь немного времени и дискового пространства.

Примеры таких программ - всем известные системы виртуальных машин VMWare и Win4Lin, с помощью которых можно работать с Windows, находясь в Linux. Под VMWare так же можно запускать и BSD с Линуксом (Win4Lin может запускать внутри себя только Windows). Но у этих программ имеется ограничение - они просто эмулируют компьютеры с распространенной конфигурацией аппаратных средств, и вы не можете создавать специфические аппаратные конфигурации. Поэтому вы не сможете пользоваться VMWare и Win4Lin в случаях, когда для тестирования вашей системы нужно большое количество разнообразных конфигураций.

Существует несколько специальных инструментов для эмуляции виртуальных машин, которые дают разработчикам свободу построения специфических аппаратных конфигураций, а так же позволяют контролировать процесс взаимодействия с виртуальными машинами и совершать отладочные действия на системном уровне (в VMWare и Win4Lin это сделать невозможно).

Эти системы в большинстве своем распространяются в открытых исходниках и делятся на три вида:

1) Эмуляторы аппаратного обеспечения, которые эмулируют определенные устройства (включая даже слоты PCI и регистры процессора).
2) Эмуляторы операционных систем.
3) Кроссплатформенные библиотеки - запускаются как традиционные Unix/Linux процессы и предоставляют API той системы, которую они эмулируют.

Кроссплатформенные библиотеки.

Один из наиболее известных примеров такой библиотеки - CodeWeavers CrossOver Office. CodeWeavers создали клон библиотеки Win32, с помощью которого можно запустить Windows-программу (такую, как Word или PowerPoint) без наличия на компьютере самой операционной системы Windows.

Это - большое техническое достижение, учитывая тот факт, что Microsoft специально встраивает часть кода своих ведущих приложений в ядро Windows, чтобы помешать людям запускать эти приложения под другими операционными системами. (Технически это называется ╚привязка╩ (bundling), и это - одно из главных обвинений в суде против Microsoft).

CodeWeavers превосходно подходит в случае, когда вам нужно запустить именно PowerPoint и именно в то время, когда вы находитесь в Линуксе. Но он не предназначен для решения проблемы эмуляции на системном уровне, и не понадобится, если вам нужно тестировать программы на различных системных конфигурациях.

Эмуляторы операционных систем.

Кроссплатформенные библиотеки всего лишь предоставляют механизм для запуска программ. Эмулятор операционной системы намного сложнее, потому что он должен эмулировать все процессы и функции операционной системы.

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, UML) √ самый универсальный эмулятор. Он работает немного не так, как традиционные эмуляторы аппаратного обеспечения √ он позволяет вам создавать виртуальные машины, имеющие оборудование, которого может и не быть на вашем компьютере. Это может быть очень удобно для тестирования различных конфигураций аппаратного обеспечения, потому что вам не придется идти в магазин и покупать необходимое дополнительное оборудование.

UML состоит из набора патчей к ядру Linux, которые позволяют вам "загружать" другие операционные системы в консольных окнах. Приятная особенность - это то, что виртуальные операционные системы не требуют для запуска прав root'а. Поэтому каждый пользователь может загружать у себя сколько угодно операционных систем независимо от других пользователей.

Процесс виртуализации настолько полный, что вы даже можете запускать X11 на виртуальных системах. Но это может вас запутать, особенно если у вас загружено много виртуальных систем, потому что их X11-приложения располагаются на одном рабочем столе с обычными программами X Window.

Так же с помощью UML можно создать загрузочный диск с определенной конфигурацией, которую вам нужно загрузить. Конечно же, как и в любой хорошей программе для Linux, все необходимые компоненты и настройки могут загружаться через сеть.

Из всех перечисленных здесь систем, UML - самая многофункциональная и самая сложная. Если у вас есть большое количество времени и желания на изучение всех её возможностей - изучайте, и вы не пожалеете.

Ссылки:

Эмуляторы общего назначения:

Bochs: http://bochs.sourceforge.net/
Plex86: http://www.plex86.org/
VMware: http://www.vmware.com/
User-Mode Linux: http://user-mode-linux.sourceforge.net/

Эмуляторы Windows:

WINE: http://www.winehq.com/
Win4Lin: http://www.netraverse.com/
CrossOver Office: http://www.codeweavers.com/