Come fare l'accesso al dispositivo raw con VirtualBox?

4

Quindi sto cercando di configurare l'accesso raw ai dispositivi con VirtualBox per usare un disco ext4 / linux come sistema operativo guest in Mac OS X, ma non ci sono ancora riusciti.

Seguendo i documenti di VirtualBox, il capitolo 9.9.1.1, il collegamento consentirà a Mac OS X di consentire l'accesso al disco grezzo per macchine virtuali? Come faccio a configurarlo?

Cose fatte finora: (non provarlo a casa)

Creato un file vmdk originale:

$ sudo VBoxManage internalcommands createrawvmdk -filename /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk -rawdisk /dev/disk0
RAW host disk access VMDK file /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk created successfully.

fammi il proprietario:

$ sudo chown me /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk

guarda se VirtualBox può vedere qualcosa sul file Xub_raw_disk.vmdk:

$ VBoxManage internalcommands listpartitions -rawdisk /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk
Number  Type   StartCHS       EndCHS      Size (MiB)  Start (Sect)

Dato che qui non compare nulla per settori o partizioni, questo deve essere un sintomo del problema ...

Il problema si verifica quando provo ad aggiungere il file .vmdk dalla GUI o con il comando seguente, viene visualizzato un errore:

$ VBoxManage storageattach "Xub_raw_testing" --storagectl "SATA" --port 0 --type hdd --medium /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk 
VBoxManage: error: Could not find file for the medium '/Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk' (VERR_FILE_NOT_FOUND)
VBoxManage: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component Medium, interface IMedium, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 178 of file VBoxManageDisk.cpp
VBoxManage: error: Invalid UUID or filename "/Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk"

UPDATE: Qui, disk0 è l'unità linux dedicata. disk1 (non utilizzato) è per Mac OS X. Rendendomi proprietario di / dev / disk0 e / dev / disk0s2 con

$ chown $USER /dev/disk0
$ chown $USER /dev/disk0s2

per Froggard howto ha permesso di aggiungere l'immagine a una VM. Inoltre, /dev/disk0 è ora leggibile da VBoxManage:

$ VBoxManage internalcommands listpartitions -rawdisk /dev/disk0
Number  Type   StartCHS       EndCHS      Size (MiB)  Start (Sect)
1       0x00  0   /0  /0   0   /0  /0            976         2048
2       0x00  0   /0  /0   0   /0  /0         227959      2000896

Ora, quando avvio il SO guest di Linux, ottengo il messaggio FATAL: No bootable medium found! System halted. . Qualche idea, cosa c'è che non va?

    
posta user35070 19.06.2015 - 17:44
fonte

1 risposta

4

Oggi ho avuto bisogno di farlo e ho visto la tua domanda, quindi ecco un protocollo dei passaggi che ho seguito.

Trova il numero del dispositivo

diskutil list  per esempio. 2, come in /dev/disk2 Supponendo 2 per il resto delle istruzioni.

Crea il VMDK della macchina virtuale

VBoxManage internalcommands createrawvmdk -filename "$HOME/dev-disk2.vmdk" -rawdisk /dev/disk2

Espelli il dispositivo prima di questo passaggio, altrimenti riceverai un errore: VERR_RESOURCE_BUSY . Potresti voler aggiungere una voce in fstab con i parametri aggiunti noauto per impedire al sistema operativo di rimontare il drive.

Uso rdisk-disk2.vmdk per il nome, perché questa macchina virtuale è solo un puntatore a questo dispositivo. Dopo il riavvio, la situazione potrebbe cambiare, ad es. a un dispositivo potrebbe essere assegnato un numero diverso, specialmente se si scollegano le cose e si spostano le cose.

Avvia Virtual Box Manager con privilegi di root

sudo /Applications/VirtualBox.app/Contents/MacOS/VirtualBox

Poiché i dispositivi sono tutti di proprietà di root, è necessario avviare VirtualBox con i privilegi di root. Questo ha conseguenze. Il tuo contesto di casa (cartella principale e preferenze) verrà modificato in root. Le altre macchine virtuali non saranno visibili. Se apri un browser di file, vedrai la cartella principale della root per impostazione predefinita.

Un'altra opzione è cambiare le autorizzazioni del dispositivo (non consigliato) come hai fatto.

Per confermare le autorizzazioni dei dispositivi, puoi eseguire ls -l /dev/disk*

  1. Aggiungi nuova macchina, fornisci nome: / dev / disk2, digita: linux, versione: arch linux (64-bit)
  2. Dagli un po 'di memoria (qualunque cosa tu possa)
  3. Seleziona l'unità esistente usando VMDK creato sopra. ( IMPORTANTE assicurati che l'unità non sia stata rimontata, altrimenti otterrai VERR_RESOURCE_BUSY , NS_ERROR_FAILURE )

Installa un nuovo sistema

Aggiungi un file del disco ottico (ad esempio un ISO di avvio di Linux di tuo gradimento) e attiva il Live CD / DVD opzionale in modo da avviarlo.

Rendi avviabile il sistema in VirtualBox

Questo non è così ovvio, specialmente se si utilizza una configurazione EFI. Se si utilizza grub-mkconfig , il nome del file efi è grubx64.efi (supponendo 64 bit). VirtualBox è schizzinoso su dove cerca un file di avvio. L'impostazione predefinita non lo farà.

Rinomina grubx64.efi in bootx64.efi

/boot/EFI/BOOT/bootx64.efi

Note

  • tip: prenditi iterm 2
  • Questo è molto utile per i Macbook quando si installa Arch Linux, perché l'ISO predefinito non carica i driver della scheda wlan.
risposta data 28.09.2016 - 17:45
fonte

Leggi altre domande sui tag