Использовать физический жесткий диск в Virtual Box

59

Используя Virtual Box, как я могу установить ОС на вторичный физический диск и загрузить ее как в (в разное время) в Virtual Box, так и в качестве обычной установки вторичной ОС?

Петах
источник

Ответы:

87

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


Прямые инструкции

Сегодня мне удалось загрузиться с физических дисков. Это достижение требуется;

  • 60 минут прямого чтения
  • 30 минут на написание
  • 20 минут пробуем разные варианты в VirtualBox

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

Фото (это случилось :)

личинка 2

1. Создайте диски vmdk, которые читают с реальных дисков

Чтобы создать образ, представляющий весь физический жесткий диск (который не будет содержать никаких фактических данных, поскольку все они будут храниться на физическом диске), на хосте Linux используйте команду

VBoxManage internalcommands createrawvmdk \
    -filename /path/to/file.vmdk \
    -rawdisk /dev/sda

У вас должен быть доступ на чтение к файлу физического диска /dev/sda. Для этого вы можете либо сменить владельца и права доступа к файлу устройства, либо запустить VBoxManage internalcommands createrawvmdk… с правами root (поставить sudoперед командой).

На хосте Windows вместо вышеуказанной спецификации устройства используйте, например, \\. \ PhysicalDrive0. На хосте Mac OS X используйте, например, / dev / disk1 (и размонтируйте все разделы на disk1).

(all on one line)
C:\VirtualBoxDrives>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
    internalcommands createrawvmdk
    -filename C:\VirtualBoxDrives\raw-0.vmdk 
    -rawdisk \\.\PHYSICALDRIVE0

(output)
RAW host disk access VMDK file C:\VirtualBoxDrives\raw-0.vmdk created successf..

 

2. Назначьте диски vmdk на виртуальную машину

ВМ -> Настройки -> Хранилище -> Добавить ide / sata -> Выбрать существующий диск -> Обзор

правопреемник

 

3. Установите один из режимов записи.

Файл -> Диспетчер виртуальных носителей -> например, raw-0.vmdk -> [изменить] -> (o) Запись

  • повторить для всех дисков

переписать

 

3. Изменить приоритет загрузки (полу необязательно)

ВМ -> Настройки -> Система -> Порядок загрузки

[./] Hard Disk
[./] CD/DVD
[  ] Floppy
[  ] Network

ВМ -> Настройки -> Хранилище -> Контроллер: SATA -> например, raw-5.vmdk -> Жесткий диск: порт SATA 0

 

Соответствующие главы ( руководство )

  • Глава 9. Расширенные темы

    • 9.9. Расширенная конфигурация хранилища
      • 9.9.1. Использование необработанного жесткого диска хоста от гостя
      • 9.9.1.1. Доступ ко всему физическому жесткому диску
         
  • Глава 5. Виртуальная память

    • 5.2. Файлы образов дисков (VDI, VMDK, VHD, HDD)
    • 5.3. Менеджер виртуальных медиа
    • 5.4. Специальные режимы записи изображений

Перечисление физических дисков в Windows:

C:\Users\win7>wmic diskdrive list brief

Caption                               DeviceID            Model                                 Partitions  Size
Samsung SSD 840 EVO 250GB ATA Device  \\.\PHYSICALDRIVE3  Samsung SSD 840 EVO 250GB ATA Device  6           250057228288
ST1000DM003-1CH162 ATA Device         \\.\PHYSICALDRIVE1  ST1000DM003-1CH162 ATA Device         5           1000202273280
ST1000DM003-1CH162 ATA Device         \\.\PHYSICALDRIVE2  ST1000DM003-1CH162 ATA Device         5           1000202273280
ST1000DM003-1CH162 ATA Device         \\.\PHYSICALDRIVE0  ST1000DM003-1CH162 ATA Device         5           1000202273280
WDC WD1000DHTZ-04N21V0 ATA Device     \\.\PHYSICALDRIVE5  WDC WD1000DHTZ-04N21V0 ATA Device     6           1000202273280
WDC WD1000DHTZ-04N21V0 ATA Device     \\.\PHYSICALDRIVE4  WDC WD1000DHTZ-04N21V0 ATA Device     5           1000202273280
ST1000DM 003-1CH162 SCSI Disk Device  \\.\PHYSICALDRIVE6  ST1000DM 003-1CH162 SCSI Disk Device  5           1000202273280

Вы также можете получить номера дисков с помощью PowerShell:

PS C:\ Get-Disk
Ярослав Рахматуллин
источник
7
Большое спасибо за четкие пошаговые инструкции. Однако у меня была одна проблема: виртуальный файл .vmdk может принадлежать мне как пользователю, но когда я запускаю VirtualBox и он пытается получить к нему доступ, возникает ошибка. Это происходит потому, что физический / dev / sda принадлежит root. Я попытался сменить владельца, но без радости - все та же ошибка. Запуск VirtualBox с правами root работает (хотя я всегда осторожен при запуске любого приложения с правами root, и одно такое, которое может привести к неправильной работе, пугает меня глупо).
У большинства дистрибутивов есть специальная группа, такая как «диск» или «блок». Bock устройства в / dev / sd? должны быть доступны для записи пользователям, принадлежащим к одной из этих групп. Проверьте документы для вашего дистрибутива.
Ярослав Рахматуллин
1
Кто-нибудь получил это работает на Windows 10? Я получаю эту ошибку: The I/O cache encountered an error while updating data in medium "ahci-0-0" (rc=VERR_ACCESS_DENIED).даже при запуске VirtualBox с правами администратора.
szx
2
@szx Мне удалось обойти проблему VERR_ACCESS_DENIED, выполнив следующие действия
Epigene
1
Как можно было бы случайно убить их данные с помощью прямого доступа к диску? Я полагаю, что знание того, чего не следует делать, поможет избежать проблем. Инструкции выглядят так просто ...
Wowfunhappy
6

Документация VirtualBox относится к доступу к сырому жесткому диску:

http://www.virtualbox.org/manual/ch09.html#rawdisk

Чтобы создать образ, представляющий весь физический жесткий диск (который не будет содержать никаких фактических данных, поскольку все они будут храниться на физическом диске), на хосте Linux используйте команду

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk
  -rawdisk /dev/sda

Это создает образ /path/to/file.vmdk (должен быть абсолютным), и все данные будут считываться и записываться из / dev / sda.

Чтобы создать специальный образ для поддержки необработанных разделов (который будет содержать небольшой объем данных, как уже упоминалось), на хосте Linux используйте команду

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk
  -rawdisk /dev/sda -partitions 1,5

VirtualBox использует ту же нумерацию разделов, что и ваш хост Linux. В результате числа, приведенные в вышеприведенном примере, будут относиться к первому первичному разделу и первому логическому диску в расширенном разделе соответственно.

См. Документацию по предостережениям и инструкциям для Windows.

trpt4him
источник
8
Ответы только по ссылке являются менее чем оптимальными и определенно не заслуживают принятия, когда доступен лучший ответ. * подмигнул; *
Ярослав Рахматуллин
0

MacOS 10.14:

  1. Создайте файл виртуального диска, соответствующий реальному диску:

    # First, find the device you want to use inside Virtual Box:
    diskutil list  
    
    # Create the virtual disk
    sudo VBoxManage internalcommands createrawvmdk \
            -filename ~/realdisk.vmdk \
            -rawdisk /dev/disk2
    
  2. Запустите VirtualBox от имени суперпользователя:

    sudo VirtualBox
    
  3. Добавить ~/realdisk.vmdkв Storage --> Controller: Sata.

Макс Малыш
источник
0

Я не мог заставить это работать в Windows 10 в течение самого длительного времени; Я продолжал получать сообщение VERR_ACCESS_DENIEDоб ошибке при попытке подключить VMDK.

Тем не менее, я (наконец) смог заставить это работать с несколькими трюками:

  1. Откройте PowerShell от имени администратора (я не уверен, почему, но мне не удалось заставить некоторые команды работать в командной строке администратора)

  2. Выполните следующую команду, чтобы создать VMDK:

    VBoxManage.exe internalcommands createrawvmdk \
        -filename "path\to\physical\disk\file.vmdk" \
        -rawdisk \\.\PhysicalDrive[n]
    

    ... где path\to\physical\disk\file.vmdkнаходится файл , который будет создан для представления диска и [n]является номером диска (использование Disk Management , чтобы получить этот номер)

  3. Выполните следующую команду, чтобы подключить VMDK:

    VBoxManage.exe storageattach [VM NAME] \
        --storagectl [CONTROLLER] \
        --device 0 \
        --port 0 \
        --type hdd \
        --medium "path\to\physical\disk\file.vmdk"
    

    ... где [CONTROLLER]имя контроллера диска, к которому вы подключаетесь - "IDE" в моем случае

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

    VBoxManage.exe startvm [VM NAME]
    
Натан Осман
источник
0

Я пытался загрузить виртуальную машину Linux (в частности, Ubuntu 19.10) в macOS, где Ubuntu установлена ​​на физическом разделе в формате ext4. Многие ответы, которые я нашел, в том числе от @ ЯрославРахматуллин, помогли мне пройти большую часть пути, но я продолжал получать следующее сообщение об ошибке:

FATAL: не найдено загрузочного носителя! Система остановлена.

Один из ответов касался загрузки LiveCD и изменения конфигурации GRUB для решения этой проблемы. Тем не менее, у меня даже не установлен GRUB на моем Mac. В конце концов я обнаружил, что ключ к моей ситуации заключается в том, чтобы гарантировать, что виртуальная машина имеет доступ к разделу EFI на моем физическом диске, и включить поддержку EFI в настройках виртуальной машины.

введите описание изображения здесь

Ниже приведен вывод diskutil listс моего компьютера Mac:

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI NO NAME                 536.9 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            161.1 GB   disk0s2
   3:       Microsoft Basic Data Development             9.1 GB     disk0s3
   4:                  Apple_HFS Recovery HD             650.0 MB   disk0s4
   5:           Linux Filesystem                         79.2 GB    disk0s5

Исходя из этого, я сгенерировал файл VMDK следующим образом, предоставив гостевой ВМ доступ только для чтения к разделу EFI и полный доступ на запись к разделам NTFS (3) и Ext4 (5).

sudo VBoxManage internalcommands createrawvmdk -filename disk0.vmdk -rawdisk -partitions 1r,3,5

Теперь я могу выполнить двойную загрузку MacOS или Ubuntu, а когда уже в MacOS, я могу при необходимости загрузить Ubuntu в качестве виртуальной машины. Счастливые дни!

Джон Рикс
источник