Запуск VirtualBox на отдельном дисковом разделе

Сегодня я расскажу как можно настроить и запустить VirtualBox на отдельном дисковом разделе. Прежде чем начнем, объясню зачем это нужно. В моей работе часто бывает необходимо иметь под рукой вирутальную машину. На ней можно запустить стэк необходимого ПО для тестирования, иногда мне нужно скомпилировать какую-нибудь программу, но при этом не хочется захламлять основную систему, наконец это всегда готовый набор инструментов, настроенных под нужные задачи и т.д. Проблема заключается в том, что мне очень часто приходится перезагружаться из одной ОС в другую (например из Ubuntu в Windows). При этом хотелось иметь под рукой одну и ту же виртуальную машину. Подход хранения файловой системы виртуальной машины в виде большого файла в данном случае не очень подходит. И тут на помощь приходит возможность VirtualBox использовать в качестве носителя отдельное дисковое устройство. Как настроить VirtualBox для его использованя и пойдет дальше речь.

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

Смотрим список доступных разделов:

     VBoxManage internalcommands listpartitions -rawdisk /dev/sdX

Вместо /dev/sdX подставляем тот диск, на который вы будете ставить свою ОС. На Windows вместо /dev/sdX надо использовать .\PhysicalDiskX. Вывод команды будет примерно такой:

     Number  Type   StartCHS       EndCHS      Size (MiB)  Start (Sect)
     1       0x07  2   /0  /33  205 /3  /19           100         2048
     2       0x07  205 /3  /20  1023/15 /63         49900       206848
     5       0x83  1023/15 /63  1023/15 /63         47683    102404096
     6       0x82  1023/15 /63  1023/15 /63          7628    200060928
     4       0x83  1023/254/63  1023/254/63         19069    215688690

в моем случае это четвертый раздел.

Создаем диск:

     VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sdX -partitions 4

Далее запускаем GUI VirtualBox и создаем виртуальную машину как обычно и в качестве дискового образа указываем нужный нам файл. Обратите внимание, что при создании образа диска создается два файла — file.vmdk и file-pt.vmdk. Я в качестве образа всегд выбирал первый из двух файлов. Второй скорее всего содержит в себе информацию о разделах реального физического диска. Далее устанавливаем систему как обычно. Однако есть маленький нюанс: для загрузки установленной в виртуальной машине ОС необходим загрузчик. И тут можно поступить двумя путями. Путь первый — использовать загрузчик, находящийся в MBR вашего диска и второй — использовать образ загрузчика, который можно интегрировать в файл-образ. Во втором случае возникает вопрос — где взять образ загрузчика? Я поступил просто: при установке ОС попросил инсталлятор установить загрузчик в начало раздела, где живет и сама система. Затем на хост системе просто скопировал первые 446 байт с этого раздела с помощью замечательной утилиты dd:

    dd if=/dev/sdXY of=/path/to/image/mbr.img bs=1 count=446

А затем интегрировал его в образ диска:

    VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sdX -partitions 4 -mbr /path/to/image/mbr.img

И по-новой подключил к виртуальной машине взамен старого образа без загрузчика.

Вот и все — далее машина стартует и вы можете начинать полноценно ей пользоваться. В заключении добавлю: при настройке я столкнулся с проблемой, что все эти манипуляции (в том числе и запуск самой виртуальной машины) удалось провести только от имени суперпользователя (администратора). Пока я не нашел какие права необходимо дать обычному пользователю для возможности запуска такой конструкции без прав суперпользователя.

Дополнение. Наконец дошли рукий найти как получить возможность создавать диски и запускать виртуальную машину от обычного пользователя. Для этого достаточно добавить своего пользователя в группы disk и vboxusers. Например вот так:

    usermod -a -G disk vboxusers <user>

Естественно данный рецепт работает только в Linux. Чтобы иметь возможность работать с виртуальной машиной, использующей реальный раздел диска в ОС семейства Windows необходимо запускать виртуальную машину от имени администратора.

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.