4

Можно ли как-то заставить VirtualBox напрямую использовать необработанный образ раздела для виртуальной машины?

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

Я не ищу загрузку с необработанного образа диска и не ищу способ загрузки с виртуального жесткого диска (который не является необработанным, поскольку содержит другие метаданные).

3 ответа3

7

Доступ к образу диска через петлевое устройство

(Найдено здесь: http://blog.mybox.ro/2010/11/03/how-to-use-a-raw-disk-image-file-in-virtualbox/)

Шаг 1: Свяжите образ диска с устройством петли.

$ losetup /dev/loop0 /path/to/usb.img

Шаг 2: Создайте виртуальный диск и зарегистрируйте его в VirtualBox.

$ VBoxManage internalcommands createrawvmdk -filename /path/to/usb.vmdk -rawdisk /dev/loop0

Шаг 3: Подключите виртуальный диск к виртуальной машине и запустите его. Виртуальная машина получит доступ к виртуальному диску, который теперь связан с /dev /loop0, который, в свою очередь, связан с файлом образа диска.

Предупреждение. Чтобы это работало, VirtualBox должен иметь доступ к созданному вами устройству цикла. Это означает либо добавление вашего пользователя в группу, которая имеет доступ к дискам (на моем компьютере с Ubuntu это группа «диск»), либо вам нужно запустить VirtualBox от имени пользователя root. Так как я много возился с дисками, я использовал первый вариант (поэтому мои команды начинаются с $ not #), но я думаю, что запуск только VirtualBox от имени root является более безопасным / лучшим решением для большинства пользователей.

2

Это может не быть полным решением для того, что вы ищете, но вы можете загрузиться на сырые физические диски - если вы можете смонтировать / замаскировать файл вашего раздела как диск, я мог бы увидеть, как это работает. В противном случае, если загрузка с физического диска является опцией, выполните следующие действия на хосте Windows 7:

  1. Создайте «фиктивный» файл VMDK, который указывает на физический диск, на который вы хотите загрузить свою виртуальную машину (http://www.virtualbox.org/manual/ch09.html#rawdisk). Обратите внимание, что если вы работаете в Windows, вам нужно запустить как интерфейс управления VirtualBox, так и командную строку в качестве администратора, чтобы эта команда была успешной.
  2. Подключите макет VMDK к виртуальной машине.
  3. Отключите диск в управлении дисками и снимите флажок «только для чтения», используя DISKPART (https://forums.virtualbox.org/viewtopic.php?f=6&t=38914). Это гарантирует, что диск доступен для чтения / записи для VirtualBox, но ничего больше на вашем хосте.

После этого вы сможете использовать физический диск в качестве гостевой ОС. Супер удобно.

1

Оба ответа здесь помогут вам в этом, но вот что я нашел полезным:

  • Прежде всего, обратите внимание, что VHD-файл фиксированного размера содержит только 1 сектор метаданных в конце файла, что намного проще, чем файл с метаданными в начале. Для загрузки образов разделов Linux VHD будет работать просто отлично. Раньше был инструмент под названием VHDTool от Microsoft, который мог мгновенно добавлять дополнительный сектор метаданных, чтобы превратить необработанный образ в VHD, но сейчас трудно найти его копию в Интернете. Вероятно, есть другие инструменты, которые могут сделать то же самое, или вы можете создать другое изображение того же размера и перенести добавленный сектор (расточительно, но выполняет свою работу).

  • В противном случае файл VMDK будет делать то, что вам нужно, потому что это всего лишь текстовый файл (по крайней мере, в моем случае с окончаниями строк LF, но, возможно, и CRLF будет работать), который может ссылаться на другие файлы для использования в качестве чанка. Вот формат, который имел один из моих файлов VMDK (подробнее здесь):

    # Disk DescriptorFile
    version=1
    CID=YYYYYYYY
    parentCID=ffffffff
    createType="partitionedDevice"
    
    # Extent description
    RW 1234 FLAT "\\.\C:\Path\To\Image.raw" 5678
    
    # The disk Data Base 
    #DDB
    
    ddb.virtualHWVersion = "4"
    ddb.adapterType="ide"
    ddb.geometry.cylinders="16383"
    ddb.geometry.heads="16"
    ddb.geometry.sectors="63"
    ddb.uuid.image="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
    ddb.uuid.parent="00000000-0000-0000-0000-000000000000"
    ddb.uuid.modification="00000000-0000-0000-0000-000000000000"
    ddb.uuid.parentmodification="00000000-0000-0000-0000-000000000000"
    ddb.geometry.biosCylinders="1024"
    ddb.geometry.biosHeads="255"
    ddb.geometry.biosSectors="63"
    

    Важные биты для заполнения следующие:

    • YYYYYYYY: это идентификатор контента. Когда виртуальный диск создан, это случайное шестнадцатеричное 32-разрядное значение, насколько вам известно. Подробности смотрите в спецификации VMDK.

    • XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - это идентификатор вашего диска. Насколько я знаю, это может быть любой случайный GUID, но я не уверен.

    • 1234 - это число секторов в файле Image.raw которые вы хотите отобразить на диск

    • 5678 - смещение сектора внутри файла Image.raw которого вы хотите начать отображение

    Насколько я могу судить, другие биты о геометрии диска кажутся неактуальными.

Обратите внимание, что вам не нужны какие-то конкретные команды для создания VMDK, но, как уже говорили другие, VBoxManage internalcommands createrawvmdk могут создать такую команду , которую вы можете найти проще или сложнее в зависимости от того, что вы пытаетесь сделать.

Также обратите внимание, что VMDK могут также указывать на фактические разделы или диски (\\.\PhysicalDriveN в Windows и т.д.), Но предостережение заключается в том, что VirtualBox не блокирует тома с помощью этих дисков, поэтому вы получите ошибки записи и / или повреждения в зависимости от вашей ОС и от того, смонтирован ли том.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .