zaLinux.ru

Как в VirtualBox загрузиться с USB


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

Этот трюк позволит не только загружаться с установочного USB — что, на мой взгляд, довольно бессмысленно, поскольку на флешку записывается .ISO образ, которой намного проще подключить к виртуальному компьютеру в VirtualBox. Если подключить USB диск или флешку к гостевой системе в качестве обычного диска, то можно делать такие интересные вещи как:

  • загрузка с физического SATA диска через USB переходник
  • установка Windows на USB диск или флешку

Если у вас нет возможности подключить SATA диск непосредственно в компьютер — например, к ноутбуку — но вам очень нужно загрузиться именно в операционную систему, которая развёрнута на нём, то описанный здесь трюк поможет это сделать: через USB переходник подключите SATA диск к компьютеру, а затем USB диск подключите к виртуальной машине в качестве обычного диска, как это показано в этой инструкции.

По поводу второго пункта — установка Windows на USB носитель — если вы хотите установить Linux на флешку (не записать Live-образ, а именно установить полноценную систему), то для установки необязательно проделывать показанный здесь трюк — поскольку Linux прекрасно устанавливается на переносной носитель. Но в Windows стоит запрет для установки на USB диски и флешки.

Я покажу как загрузиться с USB в Windows и Linux. Принцип одинаковый в обеих этих операционных системах, но чуть различаются команды из-за специфики ОС.

Как в VirtualBox загрузиться с USB в Windows

Подсоедините USB флешку или диск к компьютеру. Затем нажмите Win+r и выполните diskmgmt.msc.

Найдите вашу флешку и запомните номер диска:

К примеру, на моём скриншоте флешка имеет номер 2.

Закройте все окна VirtualBox, если они открыты.

Далее нам нужно открыть командную строку как администратор. Для этого нажмите Win+x и выберите «Windows PowerShell (администратор)».

Теперь перейдите в папку, где у вас установлена VirtualBox. Если эта программа установлена в директорию по умолчанию, то команда для перехода:

cd $Env:programfiles\Oracle\VirtualBox

Если вы выбрали другое расположение для VirtualBox, то отредактируйте предыдущую команду соответствующим образом.

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

.\VBoxManage internalcommands createrawvmdk -filename C:\usb.vmdk -rawdisk \\.\PhysicalDrive#

Например, у меня это второй диск, тогда команда выглядит так:

.\VBoxManage internalcommands createrawvmdk -filename C:\usb.vmdk -rawdisk \\.\PhysicalDrive2

Если всё прошло успешно, должна появиться надпись:

RAW host disk access VMDK file C:\usb.vmdk created successfully.

Обратите внимание, что вы можете заменить C:\usb.vmdk на любое расположение файла по своему желанию.

Эта команда создаёт файл диска виртуальной машины (VMDK) указывающий на физический диск, который вы выбрали. Когда вы загружаете VMDK файл в качестве диска в VirtualBox, то VirtualBox на самом деле будет иметь доступ к физическому диску.

Теперь откройте VirtualBox от администратора — это обязательно, иначе не сработает как надо. Для этого нажмите кнопку Пуск, наберите VirtualBox и выберите «Запуск от имени администратора»:



VirtualBox может иметь доступ к сырым дисковым устройствам только с правами администратора.

Теперь в VirtualBox создайте новую виртуальную машину, выберите соответствующую операционную систему и когда дойдёт дело до выбора жёсткого диска, вместо создания нового, выберите Использовать существующий виртуальный жёсткий диск:

Теперь откройте файл C:\usb.vmdk (или другой, если вы сохранили его в другом месте или под другим именем):

Загрузите вашу виртуальную машину, теперь вашу USB флешку она должна видеть как самый обычный жёсткий диск. То есть если это правильно записанный загрузочный диск или флешка, то система загрузиться с него.

Обратите внимание, что USB устройство должно быть первым жёстким диском в вашей виртуальной машине VirtualBox, иначе загрузка не произойдёт. Если вы подсоединяете новый USB диск к уже существующей машине, то попробуйте изменить порядок носителей в настройках этой машины, либо выбрать соответствующий диск в начале загрузки.

Как в VirtualBox загрузиться с USB в Linux

Чтобы понимать принцип, прочитайте предыдущий раздел про Windows.

Чтобы в Linux обойтись без прав root, нужно добавить пользователя (себя) в группу disk:


sudo usermod -a -G disk $USER

После этого перезагрузитесь.

Если вы не добавите себя в группу disk, то вам нужно будет запускать VirtualBox от пользователя root или с sudo, иначе вы столкнётесь с ошибкой:

VD: error VERR_ACCESS_DENIED opening image file '/home/mial/VirtualBox VMs/usb.vmdk' (VERR_ACCESS_DENIED).

В Linux, чтобы узнать имя USB диска выполните команду:

sudo fdisk -l

В моём случае у диска имя /dev/sdb.

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

VBoxManage internalcommands createrawvmdk -filename '~/VirtualBox VMs/usb.vmdk' -rawdisk /dev/sdX

Где вместо X впишите букву соответствующего диска. Пример для моих условий:

sudo VBoxManage internalcommands createrawvmdk -filename '~/VirtualBox VMs/usb.vmdk' -rawdisk /dev/sdb

В этой команде вы можете заменить '~/VirtualBox VMs/usb.vmdk' на другое расположение по своему усмотрению.

Всё остальное — создание виртуальной машины и выбор в качестве жёсткого диска существующий виртуальный диск — в точности как в Windows.

Обратите внимание, что файл usb.vmdk — это простой текстовый файл, который вы можете переместить в любое расположение и даже отредактировать.

Вместо имени вида /dev/sdX вы можете использовать постоянное имя на основе by-id, например:

VBoxManage internalcommands createrawvmdk -filename flash.vmdk -rawdisk '/dev/disk/by-id/usb-Samsung_Flash_Drive_0325121050019952-0:0'

Это позволит вам избежать ошибки недоступности диска если его имя изменится. Например, если вы перед флешкой для VirtualBox подключите какую-то другую флешку или USB диск и имя диска изменится с /dev/sdb на /dev/sdc. Подробности смотрите в статье «Постоянные имена для файловых устройств».

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


Рекомендуемые статьи:

2 Комментарии

  1. Andrey Prokopyev

    Запускать виртуальную машину от имени администратора, по крайней мере в линуксе, это плохая идея, лучше назначить нужные права требуемому ресурсу /dev/sd# командой chmod, а потом уже выполнять приведенную в статье команду от имени обычного пользователя.

    1. Alexey (Автор записи)

      Приветствую! Спасибо за идею — у меня у виртуальной машины, запущенной от root, стали возникать проблемы с обновлением экрана, и я решил воспользоваться вашим советом.

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

      0. Если виртуальная машина уже создана, то нужно её файлы из /root/VirtualBox VMs/ИМЯ_МАШИНЫ скопировать в папку ~/VirtualBox VMs/ИМЯ_МАШИНЫ и поменять на них владельца. Затем в меню VirtualBox выбрать «Машина» → «Добавить» (чтобы она появилась в списке)

      1. Поменять владельца файла /root/usb.vmdk, можно даже скопировать этот файл в папку пользователя без привилегий.

      2. Добавить пользователя в группу disk:

      sudo usermod -a -G disk $USER

      3. Обязательно перезагрузиться!

      После этого можно запускать виртуальную машину с реальным диском даже от обычного пользователя.

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

      Could not open the medium '/home/mial/VirtualBox VMs/usb.vmdk'.

      VD: error VERR_ACCESS_DENIED opening image file '/home/mial/VirtualBox VMs/usb.vmdk' (VERR_ACCESS_DENIED).

      Значит нужно добавить пользователя в группу disk или перезагрузиться после добавления.

Добавить комментарий для Andrey Prokopyev Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *