Question: Using Virtual Box, how can I install an OS to a secondary, physical disk, and boot it in both (at separate times) Virtual Box, and as a typical secondary OS install?

Answer: I made a smug comment (“Straight forward”) when this question was originally posted and found myself at this page some months later looking for the same answer


Straight forward instructions

Today, I managed to boot from physical drives. This achievement required;

  • 60 min straight forward reading
  • 30 min writing this
  • 20 min trying ?different options in VirtualBox

    Dear reader, your attention is directed at the fact that it is equally straight forward to kill your data when the disc is accessed in this manner. The procedure on how to accomplish this is left as an exercise…

Pics (it did happen 🙂

grub 2

1. Create vmdk drives that read from real drives

To create an image that represents an entire physical hard disk (which will not contain any actual data, as this will all be stored on the physical disk), on a Linux host, use the command

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

You must have read access to the physical disk device file /dev/sda. To accomplish this you can either change the owner and access rights of the device file or run VBoxManage internalcommands createrawvmdk as root (put sudo before the command).

On a Windows host, instead of the above device specification, use e.g. \.PhysicalDrive0. On a Mac OS X host, use e.g. /dev/disk1 (and unmount all partitions on disk1).

(all on one line)C:VirtualBoxDrives>”C:Program FilesOracleVirtualBoxVBoxManage.exe” ?internalcommands createrawvmdk ?-filename C:VirtualBoxDrivesraw-0.vmdk ?-rawdisk \.PHYSICALDRIVE0(output)RAW host disk access VMDK file C:VirtualBoxDrivesraw-0.vmdk created successf..

2. Assign the vmdk drives to a VM

VM -> Settings -> Storage -> add ide / sata -> Choose existing disk -> browse

assign

3. Set one of the Writethrough modes.

File -> Virtual Media Manager -> e.g raw-0.vmdk -> [modify] -> (o) Writethrough

  • repeat for all drives

set writethrough

3. Reorder boot-priority (semi optional)

VM -> Settings -> System -> Boot order

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

VM -> Settings -> Storage -> Controller: SATA -> e.g. raw-5.vmdk -> Hard Disk: Sata Port 0

Relevant chapters (manual)

  • Chapter 9. Advanced topics

    • 9.9. Advanced storage configuration
      • 9.9.1. Using a raw host hard disk from a guest
      • 9.9.1.1. Access to entire physical hard disk
  • Chapter 5. Virtual storage

    • 5.2. Disk image files (VDI, VMDK, VHD, HDD)
    • 5.3. The Virtual Media Manager
    • 5.4. Special image write modes

Enumerating physical drives in Windows:

C:Userswin7>wmic diskdrive list briefCaption ??DeviceID ?Model ??Partitions ?SizeSamsung SSD 840 EVO 250GB ATA Device ?\.PHYSICALDRIVE3 ?Samsung SSD 840 EVO 250GB ATA Device ?6 ?250057228288ST1000DM003-1CH162 ATA Device ?\.PHYSICALDRIVE1 ?ST1000DM003-1CH162 ATA Device ?5 ?1000202273280ST1000DM003-1CH162 ATA Device ?\.PHYSICALDRIVE2 ?ST1000DM003-1CH162 ATA Device ?5 ?1000202273280ST1000DM003-1CH162 ATA Device ?\.PHYSICALDRIVE0 ?ST1000DM003-1CH162 ATA Device ?5 ?1000202273280WDC WD1000DHTZ-04N21V0 ATA Device ?\.PHYSICALDRIVE5 ?WDC WD1000DHTZ-04N21V0 ATA Device ?6 ?1000202273280WDC WD1000DHTZ-04N21V0 ATA Device ?\.PHYSICALDRIVE4 ?WDC WD1000DHTZ-04N21V0 ATA Device ?5 ?1000202273280ST1000DM 003-1CH162 SCSI Disk Device ?\.PHYSICALDRIVE6 ?ST1000DM 003-1CH162 SCSI Disk Device ?5 ?1000202273280

You can also get the drive numbers with PowerShell:

PS C: Get-Disk