Utilizzare il disco rigido fisico in Virtual Box


Risposte:


87

Ho fatto un commento compiaciuto ("Straight forward") quando questa domanda è stata originariamente pubblicata e mi sono trovata su questa pagina alcuni mesi dopo cercando la stessa risposta


Istruzioni semplici

Oggi sono riuscito ad avviare da unità fisiche. Questo risultato richiesto;

  • 60 minuti di lettura diretta
  • 30 minuti scrivendo questo
  • 20 minuti provando diverse opzioni in VirtualBox

    Caro lettore , la tua attenzione è rivolta al fatto che è altrettanto semplice uccidere i tuoi dati quando si accede al disco in questo modo. La procedura su come eseguire ciò è lasciata come un esercizio ...

Foto (è successo :)

grub 2

1. Creare unità vmdk che leggono da unità reali

Per creare un'immagine che rappresenti un intero disco rigido fisico (che non conterrà alcun dato reale, poiché tutto questo verrà archiviato sul disco fisico), su un host Linux, utilizzare il comando

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

È necessario disporre dell'accesso in lettura al file del dispositivo del disco fisico /dev/sda. Per fare ciò è possibile modificare il proprietario e i diritti di accesso al file del dispositivo o eseguire VBoxManage internalcommands createrawvmdk... come root (mettere sudoprima del comando).

Su un host Windows, anziché le specifiche del dispositivo sopra riportate, utilizzare ad esempio \\. \ PhysicalDrive0. Su un host Mac OS X, utilizzare ad esempio / dev / disk1 (e smontare tutte le partizioni su 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. Assegnare le unità vmdk a una macchina virtuale

VM -> Impostazioni -> Archiviazione -> aggiungi ide / sata -> Scegli disco esistente -> sfoglia

assegnare

 

3. Impostare una delle modalità Writethrough.

File -> Virtual Media Manager -> ad es. Raw-0.vmdk -> [modifica] -> (o) Writethrough

  • ripetere per tutte le unità

scritto sopra

 

3. Riordina priorità di avvio (semi opzionale)

VM -> Impostazioni -> Sistema -> Ordine di avvio

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

VM -> Impostazioni -> Archiviazione -> Controller: SATA -> ad esempio raw-5.vmdk -> Disco rigido: Porta Sata 0

 

Capitoli pertinenti ( manuale )

  • Capitolo 9. Argomenti avanzati

    • 9.9. Configurazione avanzata dell'archiviazione
      • 9.9.1. Utilizzo di un disco rigido host non elaborato da un guest
      • 9.9.1.1. Accesso a tutto il disco rigido fisico
         
  • Capitolo 5. Memoria virtuale

    • 5.2. File di immagine del disco (VDI, VMDK, VHD, HDD)
    • 5.3. Virtual Media Manager
    • 5.4. Modalità speciali di scrittura delle immagini

Enumerazione di unità fisiche in 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

Puoi anche ottenere i numeri di unità con PowerShell:

PS C:\ Get-Disk

7
Grazie mille per le chiare istruzioni dettagliate. Un problema che ho avuto è che il file virtuale .vmdk può essere di mia proprietà come utente, ma quando avvio VirtualBox e tenta di accedervi, viene generato un errore. Questo sembra essere perché il / dev / sda fisico è di proprietà di root. Ho provato a cambiare la proprietà ma nessuna gioia - sempre lo stesso errore. L'avvio di VirtualBox come root funziona (anche se sono sempre cauto nell'eseguire qualsiasi applicazione come root, e uno come questo con il potenziale che così tanto da sbagliare mi spaventa sciocco).

La maggior parte delle distribuzioni ha un gruppo speciale come "disco" o "blocco". Dispositivi Bock in / dev / sd? dovrebbe essere scrivibile dagli utenti appartenenti a uno di questi gruppi. Controlla i documenti per la tua distribuzione.
Ярослав Рахматуллин,

1
Qualcuno ha funzionato su Windows 10? Ricevo questo errore The I/O cache encountered an error while updating data in medium "ahci-0-0" (rc=VERR_ACCESS_DENIED).:, anche quando eseguo VirtualBox come amministratore.
Szx

2
@szx Sono riuscito a aggirare il problema VERR_ACCESS_DENIED seguendo questi passaggi
Epigene

1
Come si potrebbero uccidere accidentalmente i propri dati tramite l'accesso al disco non elaborato? Immagino che sapere cosa non fare aiuterebbe ad evitare problemi. Le istruzioni sembrano così semplici ...
Wowfunhappy,

6

La documentazione di VirtualBox si riferisce all'accesso a un disco rigido non elaborato:

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

Per creare un'immagine che rappresenti un intero disco rigido fisico (che non conterrà alcun dato reale, poiché tutto questo verrà archiviato sul disco fisico), su un host Linux, utilizzare il comando

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

Questo crea l'immagine /path/to/file.vmdk (deve essere assoluto) e tutti i dati saranno letti e scritti da / dev / sda.

Per creare un'immagine speciale per il supporto di partizioni non elaborate (che conterrà una piccola> quantità di dati, come già accennato), su un host Linux, utilizzare il comando

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

VirtualBox utilizza la stessa numerazione delle partizioni dell'host Linux. Di conseguenza, i numeri forniti nell'esempio precedente farebbero riferimento rispettivamente alla prima partizione primaria e alla prima unità logica nella partizione estesa.

Consultare la documentazione per avvertenze e istruzioni specifiche per Windows.


8
Link solo le risposte sono meno che ottimali e sicuramente non meritano l'accettazione quando è disponibile una risposta migliore. * wink wink *
Ярослав Рахматуллин

0

MacOS 10.14:

  1. Creare un file del disco virtuale corrispondente al disco reale:

    # 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. Avvia VirtualBox come superutente:

    sudo VirtualBox
    
  3. Aggiungere ~/realdisk.vmdka Storage --> Controller: Sata.


0

Non sono riuscito a farlo funzionare in Windows 10 per il tempo più lungo; Continuavo a ricevere un VERR_ACCESS_DENIEDerrore durante il tentativo di collegare il VMDK.

Tuttavia, sono stato (finalmente) in grado di farlo funzionare con alcuni trucchi:

  1. Apri PowerShell come amministratore (non sono sicuro del perché, ma non sono riuscito a far funzionare alcuni dei comandi nel prompt dei comandi dell'amministratore)

  2. Eseguire il comando seguente per creare VMDK:

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

    ... dove si path\to\physical\disk\file.vmdktrova il file che verrà creato per rappresentare il disco ed [n]è il numero del disco (utilizzare Gestione disco per ottenere questo numero)

  3. Eseguire il comando seguente per collegare il VMDK:

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

    ... dov'è [CONTROLLER]il nome del controller del disco a cui ti stai collegando - "IDE" nel mio caso

  4. Eseguire il comando seguente per avviare la macchina virtuale:

    VBoxManage.exe startvm [VM NAME]
    

0

Stavo tentando di avviare una VM Linux (in particolare Ubuntu 19.10) su macOS in cui Ubuntu è installato su una partizione formattata ext4 fisica. Molte delle risposte che ho trovato, tra cui quella di @ ЯрославРахматуллин, mi hanno portato quasi ovunque, ma ho continuato a ricevere il seguente messaggio di errore:

FATAL: nessun supporto di avvio trovato! Sistema bloccato.

Una risposta si riferiva all'avvio in un LiveCD e quindi alla modifica della configurazione di GRUB per risolvere questo problema. Tuttavia, non ho nemmeno installato GRUB sul mio Mac. Alla fine, ho scoperto che la chiave della mia situazione era garantire che la VM avesse accesso alla partizione EFI sul mio disco fisico e abilitare il supporto EFI nelle impostazioni della VM.

inserisci qui la descrizione dell'immagine

Di seguito è riportato l'output del diskutil listmio computer Mac host:

/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

Da questo, ho generato il file VMDK come segue, dando alla VM guest l'accesso in sola lettura alla partizione EFI e accesso completo in scrittura alle partizioni NTFS (3) ed Ext4 (5).

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

Ora posso eseguire il dual boot di MacOS o Ubuntu e, se già in MacOS, posso avviare Ubuntu come VM, se necessario. Giorni felici!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.