VirtualBox – виртуализация под GPL::Журнал СА 3.2007
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
20.12.2019г.
Просмотров: 5101
Комментарии: 0
Dr.Web: всё под контролем

 Читать далее...

04.12.2019г.
Просмотров: 6343
Комментарии: 0
Особенности сертификаций по этичному хакингу

 Читать далее...

28.05.2019г.
Просмотров: 7599
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 7922
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 6978
Комментарии: 0
Django 2 в примерах

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 VirtualBox – виртуализация под GPL

Архив номеров / 2007 / Выпуск №3 (52) / VirtualBox – виртуализация под GPL

Рубрика: Администрирование /  Виртуализация

Валентин Синицын

VirtualBox – виртуализация под GPL

15 января 2007 года вполне может войти в историю свободного ПО как день, когда у VMware Workstation впервые появился достойный открытый аналог. Насколько полной вышла эта аналогия? Попробуем разобраться.

Ситуацию, сложившуюся к настоящему моменту на рынке средств виртуализации, иначе как гонкой не назовешь. А началось все с того, что на территорию, практически безраздельно принадлежавшую VMware, Inc. вторглась вездесущая корпорация Microsoft, использовав с успехом опробованную на Netscape тактику – демпинг. Приобретенный у сторонней фирмы и доработанный самой компанией Microsoft Virtual PC был не просто дешев – он вообще ничего не стоил. Ответ VMware, которая по понятным причинам не могла компенсировать затраты на производство одноименной линейки продуктов за счет продаж операционных систем и офисных пакетов, был асимметричным, но стратегически правильным. «Бесплатный как пиво» VMware Player быстро стал стандартом де-факто для распространения appliances – образов дисковых накопителей с предустановленными и настроенными системами: серверами, средствами разработки и др. [7]. Несмотря на отведенную ему роль проигрывателя, VMware Player мог худо-бедно использоваться как замена Workstation – дескрипторы виртуальных машин и дисковые образы легко генерировались при помощи сервисов вроде www.easyvmx.com.

В то время, пока гиганты активно боролись за место под солнцем, мир свободного ПО неспешно строил «флот» пара-виртуализаторов, флагманом которого стал Xen [1]. И хотя появление технологий аппаратной виртуализации (Intel VT и AMD SVM) позволило запускать в домене Xen немодифицированные версии Windows XP, свободных полных виртуализаторов наподобие VMware или Parallels Workstation по-прежнему не существовало.

Ситуация изменилась 15 января 2007 года. В этот день немецкая компания InnoTek (имеющая, судя по информации на сайте, офисы и в России) объявила о выпуске VirtualBox Open Source Edition (OSE) – инструмента полной виртуализации для платформы x86, распространяющегося по лицензии GPL [2]. Спустя еще три недели, 6 февраля, был открыт QEMU Accelerator Module – kqemu, «позволяющий PC-эмулятору QEMU выполняться значительно быстрее при эмуляции PC на x86-хосте» [4]. Впрочем, я не склонен считать, что сейчас в мире Open Source существует два полных виртуализатора, ибо VirtualBox и QEMU подходят к решению проблемы с противоположных концов: VirtualBox – это в первую очередь виртуализатор с динамической трансляцией и прочими «прелестями», переключающийся в режим эмуляции только в случае крайней необходимости, тогда как QEMU – это эмулятор, имеющий необязательный модуль полной виртуализации. Оба варианта имеют свои плюсы и минусы, но сейчас мы сфокусируемся на VirtualBox.

VirtualBox для пользователя

Для начала посмотрим на VirtualBox глазами человека, который собирается использовать его для обеспечения параллельной работы нескольких ОС. В разделе Downloads на сайте проекта [2] предлагаются к загрузке две редакции: закрытая VirtualBox и уже упоминавшаяся открытая VirtualBox OSE. Выбор между ними определяется как техническими требованиями, предъявляемыми вами к виртуализатору, так и условиями, в которых его предполагается использовать. Распространение VirtualBox регулируется условиями VirtualBox Personal Use and Evaluation License (PUEL), согласно которой вы можете бесплатно использовать программу в оценочных и личных целях. В последнем случае не исключается и коммерческое использование, и установка на нескольких компьютерах – важно, чтобы с копией программы работали только вы и никто другой, поэтому администратору, желающему установить VirtualBox в рамках целой организации, придется обратиться в InnoTek и обсудить приобретение коммерческой лицензии (интересно, что о ее стоимости ничего не сообщается – вероятно, она будет определяться индивидуально). VirtualBox OSE свободен от подобных юридических ограничений, но зато более ограничен в техническом смысле: он не содержит сервера удаленного доступа к рабочему столу гостевой системы, не поддерживает USB и разделяемых папок (Shared Folders, виртуальных устройств, выглядящих в гостевой системе как обычный каталог и позволяющих обмениваться файлами с хост-системой) и не включает в себя инициатора iSCSI – хотя разработчики не исключают, что со временем некоторые из этих функций могут появиться и в редакции OSE. Таким образом, обмен данными с внешним миром из VirtualBox OSE затруднен, но возможен (например, через общий сетевой ресурс). Зато OSE-редакция уже вошла в репозитории некоторых дистрибутивов, а нидерландская группа пользователей Linux даже выпустила специализированный LiveCD/USB с предустановленным и настроенным VirtualBox OSE – MCNLive «VirtualCity» – на базе Mandriva Linux [5].

Перейдем к установке программы. В качестве хост-систем VirtualBox поддерживает Windows (2000 SP3+/XP/Server 2003) и Linux 2.4 или 2.6 (в настоящее время ведется работа над версией для Mac OS X). Для платформ Microsoft продукт распространяется в формате MSI, пользователи Linux могут выбирать между deb-пакетами для Ubuntu 6.06-6.10/Debian 3.1-4.0 (вот она, популярность – раньше сторонние поставщики старались выпустить в первую очередь RPM для Red Hat/SUSE; правда, в версии 1.3.6, вышедшей во время подготовки статьи к печати, таки добавился RPM для openSUSE 10.2) и универсальным установщиком в виде сценария sh. Все вышесказанное не касается редакции OSE, которая распространяется только в исходных текстах (а до версии 1.3.4 была доступна только через SVN). Неприятным фактом является также невозможность работы любой из редакций VirtualBox в 64-битном окружении (и, как следствие, с 64-битными «гостевыми» ОС), но есть надежда, что это препятствие будет в скором времени устранено.

Установка, как правило, не вызывает затруднений. Пользователям Linux рекомендуется иметь исходные тексты ядра, чтобы не возникало проблем со сборкой модулей. VirtualBox официально поддерживает Debian GNU/Linux и Ubuntu, Fedora Core и RHEL, SUSE Linux, а также Gentoo. Если вы используете другой дистрибутив, вам придется вручную позаботиться о том, чтобы модуль vboxdrv автоматически загружался при старте системы. Необходимо также добавить пользователя, от имени которого вы работаете в системе, в группу vboxusers. После этого следует выйти из системы и зарегистрироваться повторно или перезагрузиться.

Основной пользовательский интерфейс VirtualBox построен с использованием библиотеки Qt и запускается (что неудивительно) командой VirtualBox. Помимо этого, можно использовать упрощенную версию – VBoxSDL. Для управления параметрами виртуальной машины используется как GUI, так и всеобъемлющая утилита командной строки VBoxManage, предоставляющая доступ даже к тем настройкам, для которых еще не готов графический конфигуратор (самый яркий пример – разделяемые папки, способ подключить один из каталогов хост-системы в виде диска гостевой системы). Все эти инструменты подробно описаны в руководстве пользователя, которое поставляется в формате PDF вместе с VirtualBox.

VirtualBox задействует сразу два окна: одно – основное, второе – «дисплей» гостевой системы

VirtualBox задействует сразу два окна: одно – основное, второе – «дисплей» гостевой системы

Помимо увесистого руководства, дистрибутив VirtualBox включает в себя ISO-образ с расширениями VirtualBox Guest Additions, повышающими степень интеграции гостевой и хост-системы. В настоящее время Guest Additions доступны для Windows и для Linux, а в число их функций входит: автоматический «захват» курсора мыши (при его помещении курсора в окно), поддержка нестандартных видеорежимов, синхронизация времени с хост-системой, те самые «разделяемые папки» и автовход для «гостей» семейства Windows.

Внимательный читатель может возразить, что автовход (autologon) прекрасно поддерживается всеми современными ОС безо всяких сторонних модулей. В данном случае имеет место «конфликт терминов»: под автовходом (Automated Windows Guest Logons) в VirtualBox Guest Additions понимается не регистрация без запроса пароля, а автоматическое использование в гостевой системе реквизитов (имени пользователя, пароля и имени домена), предоставленных хост-системой – см. раздел 8.2 в руководстве пользователя VirtualBox.

Установка данных расширений выглядит как инсталляция дополнительного ПО и драйверов в гостевой системе. При этом, если «гость» не относится к числу официально поддерживаемых (это особенно актуально для Linux, где круг «одобренных» дистрибутивов ограничен Fedora Core/RHEL, SUSE и Ubuntu), вам может опять же потребоваться обеспечить загрузку соответствующих драйверов гостевой ОС вручную.

Какое «оборудование» предоставляет VirtualBox в распоряжение гостевой системы? Ниже приведен вывод утилиты lscpi из состава Slackware Linux 11, запущенного в VirtualBox 1.3.4 под управлением Windows XP:

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)

00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]

00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]

00:02.0 VGA compatible controller: Unknown device 80ee:beef

00:03.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 30)

00:04.0 System peripheral: Unknown device 80ee:cafe

00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC’97 Audio (rev 01)

00:06.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB

00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)

Весь набор переферии неплохо поддерживается «из коробки» всеми популярными ОС – кроме Windows Vista, для которой необходимо загрузить драйвер сетевой карты AMD PCNet32 с сайта производителя.

Таким образом, VirtualBox успешно справляется с «джентльменским минимумом» эмулируемых устройств: жестким диском (используется собственный формат VDI, включающий в себя образы фиксированного размера и динамически растущие по мере необходимости; образы VMware/VMDK пока не поддерживаются), дисководом и приводом CD-ROM, в роли которых может выступать как реальное устройство, так и файл-образ, VESA-совместимой видеокартой (используется модифицированный LGPL VGA BIOS, разработанный проектом Bochs), AC-97-совместимой звуковой платой (вывод звука в хост-системе может осуществляться через ALSA/OSS, Windows Multimedia или Null-драйвер), сетевой картой и пр. Работа с сетью в VirtualBox возможна в двух режимах: NAT (гостевая ОС оказывается как бы за маршрутизатором с трансляцией адресов, IP-адрес назначается встроенным в VirtualBox DHCP-сервером) и Host (сетевой интерфейс «гостя» добавляется в хост-систему как еще одна сетевая карта).

Отдельного упоминания заслуживает встроенный в VirtualBox VRDP-сервер. С его помощью можно легко получить доступ к виртуальной машине, запущенной на другом физическом компьютере. Используемый им протокол VRDP (VirtualBox Remote Desktop Protocol) обратно-совместим с Microsoft RDP и отличается в основном возможностью сетевого доступа к USB-устройствам. При этом VRDP-сервер можно запустить даже на компьютере, вообще не имеющем X, Qt, SDL и прочих зависимостей графического интерфейса VirtualBox. Для этого используется «безголовый» (headless) сервер VBoxVRDP, весь вывод которого доступен только по сети, но не на локальном компьютере (конечно, за исключением случаев, когда VRDP-сервер и VRDP-клиент общаются по сети, будучи фактически запущенными на одной и той же машине).

Диалог настроек виртуальной машины в VirtualBox обширен, но кое-что все равно приходится делать из консоли

Диалог настроек виртуальной машины в VirtualBox обширен, но кое-что все равно приходится делать из консоли

VirtualBox для хакера

Как уже отмечалось, VirtualBox – это не только средство виртуализации, но и открытый проект, в котором, при желании, можно поучаствовать. Список «вакансий», то есть задач, хорошо подходящих для сторонних разработчиков, находится по адресу: http://www.virtualbox.org/wiki/Suggestions_for_Contributions [6].

Несколько слов о юридической стороне вопроса. Поскольку VirtualBox фактически использует двойное лицензирование, перед включением разработанного вами патча в основное дерево исходного кода необходимо подписать специальное соглашение, передающее InnoTek права на его использование в коммерческой версии. Альтернативный вариант – выпустить код по лицензии MIT.

Рассмотрим VirtualBox с точки зрения программиста. Проект активно пользуется другими открытыми разработками, в первую очередь QEMU и Mozilla. Следует особенно подчеркнуть, что VirtualBox не базируется на QEMU в том смысле, что не является его расширенной/доработанной версией. «Сердце» программы – монитор виртуальных машин – авторская разработка компании InnoTek. Из QEMU же был позаимствован эмулятор, который выполняет код, почему-либо не поддающийся динамической трансляции (например, приложения, работающие в реальном режиме). Такой режим работы, естественно, является «крайней мерой» – программа стремится выполнять инструкции на реальном процессоре всюду, где это возможно.

Использование QEMU не вызывает вопросов – в конце концов львиная доля средств виртуализации так или иначе применяет libqemu для эмуляции различного оборудования. Но зачем InnoTek понадобился такой тяжеловес, как Mozilla? Все дело в компонентной среде – XPCOM – и нежелании разработчиков Mozilla разбивать свой код на независимые пакеты.

VirtualBox имеет глубоко проработанную модульную архитектуру, реализуемые средствами Microsoft COM (в Windows) или XPCOM (в Linux). Упомянутые выше пользовательские интерфейсы от VBoxManage до VirtualBox являются просто COM-клиентами, а основной функционал программы реализован в виде inproc-сервера VBoxVMM.dll в Windows или VBoxVMM.so в Linux. Набор экспортируемых им интерфейсов (коих существует великое множество) является основной частью VirtualBox SDK, а их подробное описание также входит в дистрибутив VirtualBox. SDK (вместе с примерами его использования) можно найти в каталоге $VBOXINSTALLDIR/sdk. Для читателей, знакомых с технологией XPCOM, отмечу, что ее реализация в VirtualBox не содержит привязки к языкам программирования сценариев вроде Pyhton или JavaScript, поэтому C++ остается единственно возможным выбором. Изменится ли эта ситуация в будущем, пока сказать сложно.

Модульная архитектура и ясные интерфейсы VirtualBox позволяют расширять программу, не особенно задумываясь о тонкостях процесса виртуализации, а открытая природа проекта позволяет надеяться на появление подобных расширений в не самом отдаленном будущем. Особенно интересными выглядят «мосты» между VirtualBox Main API и D-BUS или Mono.

Заключение

Мы рассмотрели VirtualBox как снаружи, так и изнутри, но один важный вопрос – качество продукта – так и остался неосвещенным. С сожалением должен констатировать, что именно он не дает поставить программе твердую пятерку. Несмотря на общее хорошее впечатление и разумную скорость работы (я сознательно не привожу каких-либо численных характеристик, ибо сравнительное тестирование производительности различных виртуализаторов – задача сложная и неблагодарная), VirtualBox несколько «сыроват». Иногда оказывается невозможным выполнить простое действие, например, изменить разрешение экрана гостевой ОС стандартными средствами X Window System. Я не хочу сказать, что VirtualBox в своей нынешней форме непригоден к промышленному применению, но будьте готовы к сюрпризам.

Проект динамично развивается – в версии 1.3.4, вышедшей спустя месяц после первого общедоступного релиза – 1.3.2, было исправлено около 800 ошибок и недочетов, поэтому можно ожидать, что через некоторое время все основные шероховатости будут устранены. Не забывайте только высылать отчеты об ошибках разработчикам!

Приложение

VirtualBox – «за» и «против»

Попробуйте VirtualBox, если:

  • Вам часто приходится создавать виртуальные машины самостоятельно.
  • Вы часто изменяете параметры виртуальных машин, с которыми работаете.
  • Поддержка 64-битных операционных систем не является для вас критичной.
  • Вы четко следуете генеральной линии Фонда Свободного ПО и не хотите держать в своей системе проприетарный код.

VirtualBox вряд ли будет для вас наилучшим решением, если:

  • Большая часть виртуальных машин, с которыми вам приходится работать, – это готовые appliances в формате VMware Player.
  • Вы активно используете 64-битные системы, или ваша основная рабочая ОС является 64-битной
  1. XenSource – www.xensource.com.
  2. VirtualBox – www.virtualbox.org.
  3. QEMU – http://fabrice.bellard.free.fr/qemu.
  4. QEMU Accelerator User Documentation – http://fabrice.bellard.free.fr/qemu/kqemu-doc.html.
  5. MCNLive – http://www.mcnlive.org.
  6. Список задач для сторонних участников – http://www.virtualbox.org/wiki/Suggestions_for_Contributions.
  7. Virtual Appliance Marketplace – http://www.vmware.com/vmtn/appliances.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru