Приложение виртуализации x86 с открытым исходным кодом
Oracle VirtualBox (ранее Sun VirtualBox , Sun xVM VirtualBox и InnoTek VirtualBox ) — это размещенный гипервизор для виртуализации x86, разработанный Oracle Corporation . VirtualBox изначально был создан InnoTek Systemberatung GmbH, которая была приобретена Sun Microsystems в 2008 году, которая, в свою очередь, была приобретена Oracle в 2010 году.
VirtualBox может быть установлен на Microsoft Windows , macOS , Linux , Solaris и OpenSolaris . Также существуют порты на FreeBSD [5] и Genode . [6] Он поддерживает создание и управление гостевыми виртуальными машинами под управлением Windows, Linux, BSD , OS/2 , Solaris, Haiku и OSx86 , [7] , а также ограниченную виртуализацию гостевых систем macOS на оборудовании Apple. [8] [9] Для некоторых гостевых операционных систем доступен пакет «Guest Additions» драйверов устройств и системных приложений, [10] [11] который обычно повышает производительность, особенно графическую, и позволяет автоматически изменять разрешение гостевой ОС при изменении размера окна виртуальной машины на хостовой ОС.
Выпущенный на условиях GNU General Public License и, опционально, CDDL для большинства файлов исходного дистрибутива, VirtualBox является бесплатным и открытым программным обеспечением , хотя Extension Pack является проприетарным программным обеспечением , бесплатным только для персональных пользователей. Лицензия на VirtualBox была перелицензирована на GPLv3 с привязкой исключений к CDDL и другим несовместимым с GPL лицензиям. [12]
История
VirtualBox был впервые предложен InnoTek Systemberatung GmbH, немецкой компанией, базирующейся в Вайнштадте , по лицензии на проприетарное программное обеспечение , что сделало одну версию продукта доступной бесплатно для личного или ознакомительного использования в соответствии с лицензией VirtualBox Personal Use and Evaluation License (PUEL). [13] В январе 2007 года, основываясь на рекомендациях LiSoG , InnoTek выпустила VirtualBox Open Source Edition (OSE) как бесплатное и открытое программное обеспечение в соответствии с требованиями GNU General Public License (GPL), версии 2. [14]
InnoTek также внесла вклад в разработку поддержки OS/2 и Linux в виртуализации [15] и портов OS/2 [16] продуктов Connectix , которые позже были приобретены Microsoft . В частности, InnoTek разработала код «дополнений» в Windows Virtual PC и Microsoft Virtual Server , который обеспечивает различные взаимодействия хост-гостевой ОС, такие как общие буферы обмена или динамическое изменение размера области просмотра.
Sun Microsystems приобрела InnoTek в феврале 2008 года. [17] [18] [19]
В декабре 2019 года VirtualBox прекратил поддержку программной виртуализации и теперь выполняет исключительно аппаратную виртуализацию. [23] [2]
История релизов
Лицензирование
Основной пакет, начиная с версии 4 в декабре 2010 года, является свободным программным обеспечением по лицензии GNU General Public License версии 2 (GPLv2). Дополнительный пакет по частной лицензии добавляет поддержку устройств USB 2.0 и 3.0, протокола удаленного рабочего стола (RDP), шифрования дисков, NVMe и среды выполнения Preboot (PXE). Этот пакет называется «VirtualBox Oracle VM VirtualBox extension pack». Он включает компоненты с закрытым исходным кодом, поэтому он не доступен в исходном коде . [27] Лицензия называется Personal Use and Evaluation License (PUEL) . Она обеспечивает бесплатный доступ для личного использования, образовательного использования и оценки. [28] Начиная с версии VirtualBox 5.1.30, [29] Oracle определяет личное использование как установку на одном компьютере в некоммерческих целях. [30]
До версии 4 существовало два разных пакета программного обеспечения VirtualBox. Полный пакет предлагался бесплатно по лицензии PUEL, с лицензиями для других коммерческих развертываний, приобретаемыми у Oracle. Второй пакет под названием VirtualBox Open Source Edition (OSE) был выпущен по лицензии GPLv2. Он удалил те же самые проприетарные компоненты, которые не были доступны по лицензии GPLv2. [30] [27]
VirtualBox имеет экспериментальную поддержку гостевых ОС macOS. Однако лицензионное соглашение конечного пользователя macOS не позволяет запускать ее на оборудовании, отличном от Apple. Операционная система обеспечивает это, вызывая контроллер управления системой Apple (SMC) для проверки подлинности оборудования. Все машины Apple имеют SMC. [34]
Виртуализация
Пользователи VirtualBox могут загружать несколько гостевых ОС под одной операционной системой хоста (ОС хоста). Каждый гость может быть запущен, приостановлен и остановлен независимо в своей собственной виртуальной машине (ВМ). Пользователь может независимо настраивать каждую ВМ и запускать ее под выбором программной или аппаратной виртуализации , если базовое оборудование хоста поддерживает это. ОС хоста и гостевые ОС и приложения могут взаимодействовать друг с другом через ряд механизмов, включая общий буфер обмена и виртуализированное сетевое средство. Гостевые ВМ также могут напрямую взаимодействовать друг с другом, если настроены для этого. [35]
Аппаратная поддержка
VirtualBox поддерживает как Intel VT -x , так и AMD -V аппаратную виртуализацию. Используя эти возможности, VirtualBox может запускать каждую гостевую виртуальную машину в ее собственном отдельном адресном пространстве; код гостевой ОС кольца 0 запускается на хосте в кольце 0 в некорневом режиме VMX, а не в кольце 1. [ необходима цитата ]
Начиная с версии 6.1, VirtualBox поддерживает только этот метод. [23] [2] До этого VirtualBox специально поддерживал некоторые гостевые системы (включая 64-разрядные гостевые системы, гостевые системы SMP и некоторые фирменные ОС) только на хостах с аппаратной поддержкой виртуализации . [ требуется ссылка ]
Устройства и периферия
VirtualBox эмулирует жесткие диски в трех форматах: собственный VDI (Virtual Disk Image), [36] VMDK от VMware и VHD от Microsoft . Таким образом, он поддерживает диски, созданные другим программным обеспечением гипервизора. VirtualBox также может подключаться к целям iSCSI и к необработанным разделам на хосте, используя их как виртуальные жесткие диски. VirtualBox эмулирует контроллеры IDE (контроллеры PIIX4 и ICH6), SCSI , SATA (контроллер ICH8M) и SAS , к которым можно подключать жесткие диски.
Как образы ISO , так и физические устройства, подключенные к хосту, могут быть смонтированы как CD или DVD-приводы. VirtualBox поддерживает запуск операционных систем с Live CD и DVD .
По умолчанию VirtualBox обеспечивает графическую поддержку через пользовательскую виртуальную графическую карту, совместимую с VBE или UEFI GOP . Гостевые дополнения для гостей Windows, Linux, Solaris, OpenSolaris и OS/2 включают специальный видеодрайвер, который увеличивает производительность видео и включает дополнительные функции, такие как автоматическая настройка гостевого разрешения при изменении размера окна виртуальной машины [38]
и композиция рабочего стола через виртуализированные драйверы WDDM .
Эмулированные сетевые карты позволяют большинству гостевых ОС работать без необходимости поиска и установки драйверов для сетевого оборудования, поскольку они поставляются как часть гостевой ОС. Также доступен специальный паравиртуализированный сетевой адаптер, который улучшает производительность сети, устраняя необходимость соответствия определенному аппаратному интерфейсу, но требует специальной поддержки драйвера в гостевой системе. (Многие дистрибутивы Linux поставляются с включенным этим драйвером.) По умолчанию VirtualBox использует NAT , через который может работать интернет-программное обеспечение для конечных пользователей, такое как Firefox или ssh . Также можно настроить мостовую сеть через сетевой адаптер хоста или виртуальные сети между гостями. Одновременно можно подключить до 36 сетевых адаптеров, но только четыре из них можно настроить через графический интерфейс.
Для звуковой карты VirtualBox виртуализирует устройства Intel HD Audio, Intel ICH AC'97 и SoundBlaster 16. [40]
Контроллер USB 1.1 эмулируется, так что любые USB-устройства, подключенные к хосту, могут быть видны в гостевой системе. Фирменный пакет расширений добавляет контроллер USB 2.0 или USB 3.0, и если VirtualBox действует как RDP-сервер, он также может использовать USB-устройства на удаленном RDP-клиенте, как если бы они были подключены к хосту, хотя только если клиент поддерживает это специфичное для VirtualBox расширение (Oracle предоставляет клиенты для тонких клиентов Solaris, Linux и Sun Ray , которые могут это делать, и обещал поддержку других платформ в будущих версиях). [41]
Программное обеспечение
При отсутствии аппаратной виртуализации версии 6.0.24 и более ранние версии VirtualBox могли бы использовать стандартный программный подход к виртуализации. Этот режим поддерживает 32-разрядные гостевые операционные системы, работающие в кольцах 0 и 3 архитектуры колец Intel .
Система перенастраивает код гостевой ОС, который обычно выполняется в кольце 0, для выполнения в кольце 1 на оборудовании хоста. Поскольку этот код содержит много привилегированных инструкций, которые не могут быть изначально запущены в кольце 1, VirtualBox использует диспетчер сканирования и анализа кода (CSAM) для рекурсивного сканирования кода кольца 0 перед его первым выполнением для выявления проблемных инструкций, а затем вызывает диспетчер исправлений (PATM) для выполнения исправления на месте . Это заменяет инструкцию переходом к эквивалентному скомпилированному фрагменту кода, безопасному для виртуальной машины, в памяти гипервизора.
Код гостевого пользовательского режима, работающий в кольце 3, обычно выполняется непосредственно на оборудовании хоста в кольце 3.
В обоих случаях VirtualBox использует CSAM и PATM для проверки и исправления ошибочных инструкций при возникновении сбоя. VirtualBox также содержит динамический рекомпилятор на основе QEMU для полной перекомпиляции любого кода реального или защищенного режима (например, кода BIOS, гостевой DOS или любого запуска операционной системы). [42]
Используя эти методы, VirtualBox может достичь производительности, сравнимой с производительностью VMware в более поздних версиях. [43] [44]
Функция была удалена, начиная с VirtualBox 6.1. [23] [2]
Функции
Снимки оперативной памяти и хранилища, позволяющие вернуться к предыдущему состоянию.
"Host key" для освобождения клавиатуры и курсора мыши в хостовой системе, если они захвачены (связаны) с гостевой системой, и для сочетаний клавиш для таких функций, как настройка, перезапуск и снимок экрана. По умолчанию это правая Ctrlклавиша или на Mac левая клавиша. [45] [46]⌘ Command
Интеграция указателя мыши, то есть автоматическое связывание и расцепление курсора мыши при перемещении внутри и за пределами виртуального экрана, если это поддерживается гостевой операционной системой.
Бесшовный режим — возможность запускать виртуализированные приложения бок о бок с обычными настольными приложениями
Публичный API ( Java , Python , SOAP , XPCOM ) для управления конфигурацией и выполнением виртуальной машины [49]
Вложенный пейджинг для AMD-V и Intel VT (только для процессоров, поддерживающих SLAT и с включенным SLAT)
Ограниченная поддержка ускорения 3D-графики (включая OpenGL до (но не включая) 3.0 и Direct3D 9.0c через трансляцию Direct3D в OpenGL в Wine в версиях до 7.0 или DXVK в более поздних выпусках)
Поддержка SMP (до 32 виртуальных ЦП на виртуальную машину), начиная с версии 3.0
Режим сквозного доступа для приводов CD/DVD/BD — позволяет пользователям воспроизводить аудио-CD, записывать оптические диски и воспроизводить зашифрованные DVD-диски.
Шифрование образа диска виртуальной машины с использованием AES128/AES256
Поддержка хранения включает в себя:
Прямой доступ к жесткому диску — позволяет физическим разделам жесткого диска хост-системы отображаться в гостевой системе.
Поддержка формата VMware Virtual Machine Disk ( VMDK ) — позволяет обмениваться образами дисков с VMware
Поддержка Microsoft VHD
QEMU qed и qcow диски
Диски формата HDD (только версия 2; версии 3 и 4 не поддерживаются), используемые продуктами виртуализации Parallels
Ограничения
Ускорение 3D-графики для гостевых ОС Windows до Windows 7 [53] было удалено в версии 6.1. [54] Это затронуло Windows XP [55] и Windows Vista.
У VirtualBox очень низкая скорость передачи данных на устройства USB2 и с них . [56] [57]
Для оборудования USB3 сквозной доступ к устройствам не работает в старых гостевых ОС, таких как Windows Vista и Windows XP , в которых отсутствуют соответствующие драйверы. Однако, начиная с версии 5.0, VirtualBox добавил экспериментальный контроллер USB3 ( Renesas uPD720201 xHCI ), который включает USB3 в этих операционных системах. Для этого требуется редактирование некоторых файлов конфигурации. [58] [59]
Гостевые дополнения для macOS в настоящее время недоступны. [60]
Собственные гостевые дополнения для Windows 9x ( Windows 95 , 98 и ME ) недоступны. Это приводит к низкой производительности из-за отсутствия графического ускорения с ограниченной глубиной цвета по умолчанию. Доступно стороннее программное обеспечение [61] [62] [63] для включения поддержки 32-битного цветового режима, что приводит к лучшей производительности. [64] [65] [66]
Поддержка EFI неполная, например, загрузка EFI для гостевой ОС Windows 7 не поддерживается. [60] [52]
Windows 95/98/98SE/ME не может быть установлена или работает ненадежно с современными процессорами (AMD Zen и новее; Intel Tiger Lake и новее) и аппаратной виртуализацией (VirtualBox 6.1 и выше). Это связано с тем, что эти ОС не закодированы правильно. [69] [70] [71] Для исправления проблемы был разработан патч с открытым исходным кодом, который также устраняет ошибку Windows 95/98/98SE, приводящую к сбою системы при работе на новых быстрых процессорах. [72]
Для запуска полноценной гостевой ОС Windows 11 требуется VirtualBox 7.0 [73] и более поздние версии. [74] Полная совместимость с Windows 11 достигается в VirtualBox версии 7.0.14 и более поздних.
Хост ОС
Поддерживаемые операционные системы включают: [75]
Windows 10 64-бит и выше. Поддержка 64-битной Windows была добавлена в VirtualBox 1.5. Поддержка 32-битной Windows была удалена в 6.0.
Поддержка Windows 2000 была удалена в версии 1.6. [76] [77]
Поддержка Windows XP была удалена в версии 5.0. [78] [79]
Поддержка Windows Vista была прекращена в версии 5.2.
Поддержка Windows 7 (64-разрядной) была прекращена в версии 6.1.
Поддержка Windows 8 (64-бит) была удалена в версии 7.0. [80] [81]
Поддержка Windows 8.1 (64-бит) была удалена в версии 7.1. [82]
Предварительная поддержка Mac OS X (бета-стадия) была добавлена в VirtualBox 1.4, полная поддержка — в 1.6.
Поддержка Mac OS X 10.4 (Tiger) и более ранних версий была удалена в VirtualBox 3.1. [83] [84]
Поддержка Mac OS X 10.5 (Leopard) была удалена с VirtualBox 4.2. [85] [86]
Поддержка Mac OS X 10.6 (Snow Leopard) и 10.7 (Lion) была удалена с VirtualBox 5.0. [78] [79]
Поддержка Mac OS X 10.8 (Mountain Lion) была удалена в VirtualBox 5.1. [87] [88]
Поддержка Mac OS X 10.9 (Mavericks) была удалена в VirtualBox 5.2. [89]
Поддержка Mac OS X 10.10 (Yosemite) и OS X 10.11 (El Capitan) была удалена в VirtualBox 6.0.
Поддержка macOS 10.12 (Sierra) была официально удалена с VirtualBox 6.1 (однако, начиная с 6.1.16, она по-прежнему будет устанавливаться и работать). [75]
Поддержка macOS 10.13 (High Sierra) и macOS 10.14 (Mojave) была официально удалена с VirtualBox 7.0. [80] [81]
Поддержка macOS 10.15 (Catalina) была официально удалена с VirtualBox 7.1. [82]
Хотя VirtualBox сам по себе бесплатен для использования и распространяется по лицензии с открытым исходным кодом, VirtualBox Extension Pack лицензируется по лицензии VirtualBox Personal Use and Evaluation License (PUEL). Личное использование пакета расширений бесплатно, но коммерческим пользователям необходимо приобрести лицензию. [91]
Гостевые дополнения устанавливаются на каждой гостевой виртуальной машине, которая их поддерживает; пакет расширений устанавливается на хосте, на котором работает VirtualBox.
^ "Release Notes for the Genode OS Framework 14.02". Genode.org . Genode Labs. 28 февраля 2014 г. Архивировано из оригинала 8 марта 2014 г. Получено 19 марта 2014 г.
^ "Как установить Mac OS X Snow Leopard в VirtualBox на Windows 7". 10 июля 2010 г. Архивировано из оригинала 9 мая 2012 г. Получено 8 мая 2012 г.
^ Purdy, Kevin (4 мая 2010 г.). "VirtualBox 3.2 Beta Virtualizes Mac OS X (On Mac)". Lifehacker . Архивировано из оригинала 7 мая 2010 г. Получено 12 мая 2010 г.
^ Онг, Ронни. "История версий дополнений". Группа новостей : microsoft.public.virtualpc. Архивировано из оригинала 2012-11-10 . Получено 2009-07-04 .
^ "Connectix объявляет о первом решении для виртуальных вычислений для пользователей OS/2; Virtual PC позволяет предприятиям одновременно запускать OS/2 и Windows на одном ПК | Business Wire | Найти статьи на BNET". Findarticles.com. 2002-07-01. Архивировано из оригинала 2012-07-11 . Получено 2009-07-04 .
^ "Sun Microsystems объявляет о соглашении о приобретении Innotek, расширяя доступ Sun xVM к настольным компьютерам разработчиков" (пресс-релиз). Sun Microsystems. 12 февраля 2008 г. Архивировано из оригинала 2008-02-13 . Получено 2008-02-12 .
^ "Новости электронной коммерции: Бизнес: Sun получает настольные виртуализационные чипсы с Innotek Buy". Ecommercetimes.com. Архивировано из оригинала 2018-06-21 . Получено 2009-07-04 .
^ "Sun Welcomes Innotek". Sun Microsystems, Inc. Архивировано из оригинала 2008-03-02 . Получено 2008-02-26 . 20 февраля Sun завершила приобретение Innotek
^ "Oracle and Virtualization". Oracle Corporation . Архивировано из оригинала 2011-07-24 . Получено 2010-01-30 .
^ "VirtualBox присоединяется к портфелю решений Oracle Enterprise Virtualization". systemnews. 25 февраля 2010 г. Получено 6 марта 2010 г.[ мертвая ссылка ]
^ Хоули, Адам (26 февраля 2010 г.). «Линейка продуктов Oracle VM приветствует Sun!». Блог Oracle Virtualization . Корпорация Oracle. Архивировано из оригинала 2010-04-07 . Получено 6 марта 2011 г.
^ "Драйвер USB 3.0: Драйвер расширяемого хост-контроллера Intel USB 3.0 для семейства чипсетов Intel 7 Series/C216". Архивировано из оригинала 2023-01-11 . Получено 2015-05-05 .
^ "Новый отдельный режим GUI / VMM". Архивировано из оригинала 2023-01-11 . Получено 2015-04-02 .
^ abcd Proven, Liam (11 октября 2022 г.). "Oracle VirtualBox 7.0 выпущен". The Register . Архивировано из оригинала 2022-10-22 . Получено 2022-10-22 .
^ ab "Editions". VirtualBox. Архивировано из оригинала 2009-06-27 . Получено 2009-07-04 .
^ "PUEL больше не разрешает коммерческое использование с пакетом расширений VB 5.1.30". forums.virtualbox.org . Архивировано из оригинала 2018-06-20 . Получено 18-01-2019 .
^ ab "Лицензирование: часто задаваемые вопросы". VirtualBox. Архивировано из оригинала 2013-09-27 . Получено 2017-11-28 .
^ ab "Файл с авторскими правами Virtualbox". Debian. 2016-01-26. Архивировано из оригинала 2016-03-04 . Получено 2016-07-24 .
^ "Лицензии с открытым исходным кодом по категориям". Пало-Альто, Калифорния : Инициатива с открытым исходным кодом . 19 сентября 2006 г. Неповторно используемые лицензии. Архивировано из оригинала 21.07.2016 . Получено 24.07.2016 .
^ "Различные лицензии и комментарии о них". Бостон, Массачусетс : Free Software Foundation . Nonfree Software Licenses. Архивировано из оригинала 2010-07-24 . Получено 2016-07-24 .
^ "Интервью с Энди Холлом, менеджером по продукту Oracle VM VirtualBox". Архивировано из оригинала 2010-08-15 . Получено 2010-08-12 .
^ "Changelog for VirtualBox 6.1". Архивировано из оригинала 2023-01-11 . Получено 2019-12-12 .
^ "Direct3D не работает на гостевой ОС XP с SVGA". Архивировано из оригинала 2020-07-27 . Получено 2020-07-27 .
^ "#2973 (USB чрезвычайно медленный с USB-2.0 (очень похоже на #464))". Oracle. Архивировано из оригинала 6 октября 2014 г. Получено 10 октября 2014 г.
^ "#4261 (Низкая скорость передачи данных с USB-диска)". Oracle. Архивировано из оригинала 6 октября 2014 г. Получено 10 октября 2014 г.
^ "Поддержка USB 3.0 в гостях XP". forums.virtualbox.org . Архивировано из оригинала 2019-07-12 . Получено 2020-01-25 .
^ "Поддержка USB 3.0 в гостях XP". forums.virtualbox.org . Архивировано из оригинала 2020-09-19 . Получено 2020-01-25 .
^ ab "Глава 14. Известные ограничения". www.virtualbox.org . Архивировано из оригинала 2017-03-29 . Получено 2017-03-28 .
^ "Неофициальный пакет обновления Windows 98 второго издания". www.majorgeeks.com . Архивировано из оригинала 2023-01-11 . Получено 2017-03-28 .
^ ab "Причина ограничения видеопамяти в 256 МБ". forums.virtualbox.org . Архивировано из оригинала 2018-01-30 . Получено 2018-01-29 .
^ "#19275 (Windows 98SE не устанавливается в VirtualBox 6.1.2 с процессором Ryzen 3000)". www.virtualbox.org . Архивировано из оригинала 2020-10-22 . Получено 2020-02-14 .
^ Вонг, Генри (2015-08-10). "TLB и согласованность страниц в процессорах x86". Архивировано из оригинала 2020-06-04 . Получено 2020-06-04 .
^ "Ошибка недействительности TLB Windows 9x". 2015-08-10. Архивировано из оригинала 2020-06-04 . Получено 2020-06-04 .
^ JHRobotics (2022-07-18), Исправление для Windows 95/98/98 SE/Me для исправления проблем с ЦП, заархивировано из оригинала 2022-07-23 , извлечено 2022-07-23
^ "Работа над совместимостью с Windows 11 ведется". forums.virtualbox.org . Архивировано из оригинала 2021-10-23 . Получено 2021-10-23 .
^ ab "VirtualBox Manual: Chapter 1. First Steps". www.virtualbox.org . Архивировано из оригинала 2018-12-17 . Получено 2020-09-03 .* "Руководство пользователя Oracle® VM VirtualBox для версии 6.1: Глава 1. Первые шаги". www.virtualbox.org . Архивировано из оригинала 2021-08-18 . Получено 2020-11-13 .
^ "Oracle VirtualBox User Manual Version 1.5.6" (PDF) . Архивировано из оригинала (PDF) 2008-04-13 . Получено 2024-09-15 .
^ "Oracle VirtualBox User Manual Version 1.6.0" (PDF) . Архивировано из оригинала (PDF) 2008-05-17 . Получено 2024-09-15 .