VirtualBox — программный продукт виртуализации для операционных систем. Иногда бывают ситуации, когда без операционной системы Windows не обойтись. Можно попробовать использовать wine и запустить то приложение, которое нужно. Но не все из них работают или работают некорректно.

Возможности VirtualBox

Начиная с 4-ой версии Oracle xVM VirtualBox существует в единственной редакции, распространяемой под лицензией GNU GPL с открытыми исходными кодами.

Некоторые дополнительные функции выделены в отдельный пакет Oracle VM VirtualBox Extension Pack, среди которых:

  • RDP-сервер — позволяет подключаться к виртуальной системе удалённо с помощью любого RDP-совместимого клиента;
  • поддержка устройств USB 2.0 и USB 3.0;
  • возможность PXE-загрузки при использовании сетевой карты от Intel.

Пакет Oracle VM VirtualBox Extension Pack распространяется под лицензией PUEL, т.е. его можно использовать бесплатно для личных (некоммерческих) целей.

На данный момент VirtualBox включает в себя следующие возможности:

  1. Нативная x86-виртуализация, не требующая наличия поддержки аппаратных техник Intel VT или AMD-V (которая, однако, может быть включена в настройках).
  2. Дружественный пользовательский интерфейс, в том числе и на русском языке (построенный с помощью Qt).
  3. Поддержка Windows, Linux и Mac OS хостовых систем.
  4. Наличие Guest VM Additions для упрощения взаимодействия с хостовыми ОС.
  5. Поддержка многопроцессорных и многоядерных систем.
  6. Поддержка виртуализации аудиоустройств.
  7. Высокая производительность.
  8. Поддержка различных видов сетевого взаимодействия (NAT, Host Networking via Bridged, Internal).
  9. Поддержка дерева сохраненных состояний виртуальной машины (snapshots), к которым может быть произведен откат из любого состояния гостевой системы.
  10. Описание настроек виртуальной машины в XML-формате.
  11. Поддержка Общих папок для простого обмена файлами между хостовой и гостевой системами.

Установка VirtualBox

Из репозиториев ubuntu

Для установки необходимо в терминале набрать следующую команду либо нажать специальную кнопку:

virtualbox

sudo apt-get install virtualbox

Для продолжения операции у Вас будет запрошен пароль, введите Ваш пароль и ждите пока закончится загрузка и установка приложения.

Из репозиториев Oracle

Версию VirtualBox можно установить с официального репозитория Oracle. На нём находятся более новые версии.

Для добавления репозитория нужно воспользоваться терминалом.

Необходимо добавить официальный репозиторий VirtualBox в файл /etc/apt/sources.list . Для этого выполните команду:

echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee -a /etc/apt/sources.list

Добавим и зарегистрируем в системе ключ репозитория с помощью команды в терминал:

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

Вы должны увидеть примерно следующий текст в Источниках приложений в „Аутентификации”:

7B0F AB3A 13B9 0743 5925  D9C9 5442 2A4B 98AB 5139
Oracle Corporation (VirtualBox archive signing key) <info@virtualbox.org>

Обновите список пакетов:

sudo apt-get update

Устанавливаем пакет для модулей ядра таких как vboxdrv и vboxnetflt:

sudo apt-get install dkms

Для установки VirtualBox введите:

sudo apt-get install virtualbox-6.0

Если нужна более старая версия: замените virtualbox-6.0 на virtualbox-5.2 для установки версии VirtualBox 5.2

После того как VirtualBox установится, вам нужно добавить вашего пользователя в группу vboxusers. Для этого выполните команду в терминале:

sudo usermod -a -G vboxusers `whoami`

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

Работа с VirtualBox

Процесс установки гостевой системы на платформе VirtualBox весьма прост и не требует от пользователя дополнительных усилий. При создании виртуальной машины необходимо выбрать:

  • тип устанавливаемой гостевой системы;
  • определить количество выделяемой ей оперативной памяти;
  • создать виртуальный диск (фиксированного размера или динамически расширяющийся по мере его заполнения в гостевой системе).

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

Дополнения гостевой ОС

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

Для Windows

Просто выберите в меню гостевой операционной системы Устройства→Установить дополнение гостевой ОС. Спустя некоторое время в гостевой Windows должен появится диаллог запуска программы. Если этого не произошло - зайдите в CD-ROM и запустите ее вручную.

Во время установки могут появится предупреждения о несовместимости драйверов. Везде соглашайтесь с установкой. После того как программа установится - перегрузите гостевую ОС. После этого появится нормальное разрешение экрана и другие возможности.

Для Ubuntu

Используя диск Guest Additions

Прежде чем начать установку дополнений гостевой операционной системы, нужно выполнить несколько простых действий.

~ Отмонтируйте cd-rom в гостевой Ubuntu: кликните правой клавишей мыши на значок cd-rom на рабочем столе, и выберите пункт меню "Отсоединить том".
~ Затем отключите сd-rom через меню гостевой ОС //Устройства->Отключить CD/DVD-ROM//.
~ Выберите в меню гостевой операционной системы //Устройства->Установить дополнение гостевой ОС//. В Ubuntu у вас должен появиться cd-rom. На предложение о автозапуске - откажитесь.
~ Далее запускаем [[консоль|терминал]] и переходим в директорию cd-rom при помощи команды: <code>cd /media/cdrom</code> . Если диск сам не подключился тогда монтируем <code>sudo mount /dev/dvd /mnt

cd /mnt</code>

~ Запустите файл VBoxLinuxAdditions.run от имени [[суперпользователь_в_ubuntu|суперпользователя]] командой: <code>sudo sh ./VBoxLinuxAdditions.run</code>
~ У вас будет запрошен пароль. Вводите пароль своего пользователя. Вводимые символы не будут видны, просто затем нажмите ввод.
~ По завершению установки перезагрузите гостевую операционную систему.

Используя пакетный менеджер

~ Запустите [[консоль|терминал]]. 
~ Введите команду: <code>sudo apt-get install virtualbox-guest-x11</code> или <code>sudo apt-get install virtualbox-guest-utils</code> в зависимости от того стоит система с иксами (X11) или без соответственно.
~ Перезагрузите гостевую систему.
Рекомендуется что бы версия гостевых дополнений совпадала с версией virtualbox

Расшаривание директорий

Иногда хочется использовать файлы реальной машины из виртуальной. В этом нам поможет сервис «Общие папки». Он позволяет расшаривать директории между виртуальной и реальной ОС.

Чтобы пользоваться функцией «Общие папки», вы должны установить дополнения гостевой операционной системы.

Нажимаем правой кнопкой мыши по нужной виртуальной машине, выбираем Свойства → Общие папки.

~ В появившемся окне выделяем "Папки машины" и добавляем новую директорию, которую хотите расшарить.(Нажимаем в углу значок и в появившемся окне выбираем путь к папке)
~ Имя папки задайте простое, без пробелов, маленькими английскими буквами (имя папки запомните, оно вам скоро понадобится).
~ Думаю, опция "Только для чтения" в комментариях не нуждается.
~ Закрываем настройки.

Также, можно проделать тоже самое и из уже запущенной виртуальной машины.

~ Нажимаем ''Устройства -> Общие папки''.
~ Проделываем те же операции что и выше. Пункт "Сделать постоянной" означает, что расшаренная папка останется после перезагрузки виртуальной машины. 

А для остальных версий:

Для Windows

Кликнув правой клавишей мыши по значку «Мой компьютер», выбираем пункт «Подключить сетевой диск».

Затем выбирайте диск, который будет использоваться для расшаренной папки. В качестве пути к сетевому диску вам нужно указать следующее:

\\vboxsvr\имя_папки

имя_папки - то самое имя, которые Вы дали расшаренной директории.

Поставьте галочку «Восстанавливать при входе в систему», чтобы не повторять эти действия каждый раз.

Для Ubuntu

В свойствах расшаренной директории в настройках virtualbox поставить опцию «Автоподключение» и в виртуальной ubuntu добавить пользователя в группу vboxsf командой

sudo adduser имя_пользователя vboxsf

Общая папка будет монтироваться при загрузке гостевой ОС и иметь адрес /media/sf_имя

Работа с USB устройствами

Если вы хотите использовать USB устройства в гостевой системе, то делаем несколько простых шагов:

Перед включением поддержки USB обязательно отключите гостевую операционную систему
~ В настройки гостевой системы включаем поддержку USB. Если у Вас USB 2.0 - включайте соответствующую галочку.
~ Закрываем настройки и включаем гостевую систему.
~ Включаем USB устройство.
~ Заходим в меню //Устройства->Устройства USB// и выбираем свой девайс.

После того, как вы нажмете на устройство - VirtualBox без предупреждений заберет ресурс и отдаст его гостевой операционной системе. Так что будьте аккуратны с сохранением данных на устройстве, прежде чем отдать его гостевой ОС. Если вы выберите этот пункт еще раз - устройство также без предупреждений отключиться из гостевой cистемы.

Работа с USB 2.0 устройствами

Начиная с версии 4.0, для работы с USB 2.0 устройствами необходимо установить VirtualBox Extension Pack, который можно найти на официальной странице загрузки.

После загрузки, просто запустите его и он автоматически установится.

Убираем меню и строку состояния машины

Иногда более удобно работать с виртуальной машиной в режиме обычного окна (например, чтобы иметь удобный доступ к другим приложениям). В таком случае меню и строка состояния машины занимают рабочее пространство, которое могло бы быть использовано с пользой. Для того, чтобы отключить меню и строку состояния виртуальной машины, воспользуйтесь командой:

VBoxManage setextradata global GUI/Customizations noMenuBar,noStatusBar

Чтобы включить меню и строку состояния:

VBoxManage setextradata global GUI/Customizations MenuBar,StatusBar

Создание RAW диска

Для ускорения работы виртуальной системы с диском иногда имеет смысл разрешить ей доступ к реальным разделам дисков основной системы. Чтобы виртуальная система имела возможность работать с диском практически напрямую, необходимо заранее создать так называемый RAW диск.

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

Если таких разделов в вашей системе нет, их можно создать например с помощью утилиты GParted, поджав один или несколько существующих разделов.

Стоит отметить, что создание RAW диска недоступно через графический интерфейс. Придется запускать команды в консоли.

Первое, что надо сделать - определиться какой раздел или диск мы отдадим на растерзание виртуальным системам:

$ ls -al /dev/sd*
brw-rw---- 1 root disk 8, 0 2010-10-01 15:13 /dev/sda
brw-rw---- 1 root disk 8, 1 2010-10-01 15:13 /dev/sda1
brw-rw---- 1 root disk 8, 2 2010-10-01 15:13 /dev/sda2
brw-rw---- 1 root disk 8, 3 2010-10-01 15:13 /dev/sda3
brw-rw---- 1 root disk 8, 4 2010-10-01 15:13 /dev/sda4
brw-rw---- 1 root disk 8, 5 2010-10-01 15:13 /dev/sda5
brw-rw---- 1 root disk 8, 6 2010-10-01 15:13 /dev/sda6

Например, мы решили выделить раздел sda6. Как видно выше, по умолчанию все разделы принадлежат исключительно суперпользователю. Соответственно для пользователя, под которым будет запускаться виртуальная система (в нашем случае stc) нужно прописать права доступа к нужному разделу. Для этого под правами суперпользователя создаем файл /etc/udev/rules.d/99-vbox-disk-rights.rules, например, так:

sudo gedit /etc/udev/rules.d/99-vbox-disk-rights.rules

и в него пишем следующую строчку

KERNEL=="sda6", OWNER="<здесь впишите имя вашего пользователя>"

Если доступ нужен любому пользователю, имеющему право запускать виртуальные машины, проще прописать доступ всей группе vboxusers:

KERNEL=="sda6", GROUP="vboxusers"

Если вы хотите передать виртуальным системам несколько разделов, то повторите эту строчку для каждого из них, заменяя имя раздела (или диска).

Перегружаем систему и проверяем:

$ ls -al /dev/sd*
brw-rw---- 1 root disk 8, 0 2010-10-01 15:13 /dev/sda
brw-rw---- 1 root disk 8, 1 2010-10-01 15:13 /dev/sda1
brw-rw---- 1 root disk 8, 2 2010-10-01 15:13 /dev/sda2
brw-rw---- 1 root disk 8, 3 2010-10-01 15:13 /dev/sda3
brw-rw---- 1 root disk 8, 4 2010-10-01 15:13 /dev/sda4
brw-rw---- 1 root disk 8, 5 2010-10-01 15:13 /dev/sda5
brw-rw---- 1 stc  disk 8, 6 2010-10-01 15:13 /dev/sda6

Теперь все готово к созданию диска. Вводим команду (без sudo):

VBoxManage internalcommands createrawvmdk -filename /home/stc/.VirtualBox/HardDisks/sda.vmdk -rawdisk /dev/sda6

Все, диск создан.

Теперь при создании виртуальной машины, вместо создания нового виртуального диска, выберите «Использовать существующий», справа от поля ввода нажмите кнопку «Выбрать образ» и укажите путь до созданного vmdk файла (в нашем случае /home/stc/.VirtualBox/HardDisks/sda.vmdk).

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

Собственно такой метод позволяет экспериментировать на виртуалке с любыми таблицами разделов. На хосте может быть GPT, а виртуалке на выш выбор MBR или тоже GPT (но своя).
Важно! Если вы создаете «снимок» состояния системы, это значит, что все изменения в состоянии виртуального диска будут записываться не на диск, а в файл изменений, что снизит быстродействие вашей виртуальной машины. Каждый такой снимок на любом типе виртуального диска по определению будет замедлять операции записи и чтения пропорционально количеству уже существующих снимков.

Сохранение и восстановление RAW дисков

В отличие от обычных образов дисков, которые сохраняются и копируются как обычные файлы основной системы, RAW диск - это реальный раздел на диске, который основная система видит как неформатированный. Поэтому для его сохранения используем команду dd и архиватор, умеющий работать с потоками. Могут подойти bzip2 или 7-zip (7za).

Для создания образа диска надо ввести команду

dd if=/dev/sda6 | bzip2 -9 > img-file.bz2

или

dd if=/dev/sda6 | 7za a -mx3 -si img-file.7z

Не забываем подставлять вместо sda6 имя своего раздела!

Степень сжатия особой роли играть не должна. В примерах у bzip2 стоит максимальное сжатие, а у 7za - слабое. Гораздо больше на качество сжатия будет влиять процедура предварительного удаления лишних данных с виртуального диска и заполнение свободного места определенным символом (обычно нулевым). Сделать это можно специализированными процедурами в соответствующей гостевой системе типа Disk Wiper (windows) или BleachBit (ubuntu).

Для восстановления раздела подойдет команда

bzcat img-file.bz2 > /dev/sda6

или, соответсвенно,

7za e -so img-file.7z > /dev/sda6

Здесь стоит обратить внимание на пару тонкостей.

Во-первых, команда dd достаточно медленная и на копирование, например, 20 GiB диска может уйти около 4 часов. Примерно такое же время потребуется и на восстановление.

Во-вторых, восстанавливать образ можно и не в тот же раздел, что был источником. Для этого настоятельно рекомендуется записать точный размер диска, подглядев его, например, в дисковой утилите. В частности размер того же 20 GiB диска был 21 475 885 056 байт. При создании нового раздела для восстановления следует учитывать, что он должен быть как минимум не меньше оригинала. Лучше, если у вас получится создать раздел ровно такого же размера, как и оригинальный.

И еще: сохранять и восстанавливать образы стоит после того, как доступ к разделу будет предоставлен соответствующему пользователю или группе (см. выше).

Ссылки