Also versuche ich, den Raw-Gerätezugriff mit VirtualBox einzurichten, um eine ext4/Linux-Festplatte als Gastbetriebssystem in Mac OS X zu verwenden, aber es ist mir noch nicht gelungen.
Gemäß der VirtualBox-Dokumentation, Kapitel 9.9.1.1, https://www.virtualbox.org/manual/ch09.html#rawdisk wird Mac OS X den Raw-Festplattenzugriff für VMs zulassen? Wie richte ich das ein?
Bisher erledigte Dinge: (nicht zu Hause ausprobieren)
Erstellt eine unformatierte vmdk-Datei:
$ 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.
Mach mich zum Besitzer:
$ sudo chown me /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk
Prüfen Sie, ob VirtualBox etwas in der Datei Xub_raw_disk.vmdk sehen kann:
$ VBoxManage internalcommands listpartitions -rawdisk /Users/me/VirtualBoxVMs/Xub_raw_disk.vmdk
Number Type StartCHS EndCHS Size (MiB) Start (Sect)
Da hier nichts für Sektoren oder Partitionen angezeigt wird, muss dies ein Symptom des Problems sein ...
Das Problem ist, wenn ich versuche, die .vmdk-Datei über die GUI oder mit dem folgenden Befehl hinzuzufügen, erhalte ich eine Fehlermeldung:
$ 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: Hier ist disk0 das dedizierte Linux-Laufwerk. disk1 (nicht verwendet) ist für Mac OS X. Damit mache ich mich zum Besitzer von /dev/disk0 und /dev/disk0s2 mit
$ chown $USER /dev/disk0
$ chown $USER /dev/disk0s2
pro Froggard Howto hat es so gemacht, dass ich das Image zu einer VM hinzufügen konnte. Außerdem /dev/disk0
ist jetzt von VBoxManage lesbar:
$ 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
Wenn ich jetzt das Linux-Gastbetriebssystem starte, bekomme ich die FATAL: No bootable medium found! System halted.
Meldung. Irgendwelche Ideen, was falsch ist?
Ich musste dies heute tun und habe Ihre Frage gesehen. Hier ist ein Protokoll der Schritte, die ich unternommen habe.
diskutil list
zB 2, wie in /dev/disk2
Annahme 2
für den Rest der Anweisungen.
VBoxManage internalcommands createrawvmdk -filename "$HOME/dev-disk2.vmdk" -rawdisk /dev/disk2
Werfen Sie das Gerät vor diesem Schritt aus, andernfalls erhalten Sie eine Fehlermeldung: VERR_RESOURCE_BUSY
. fstab
Möglicherweise möchten Sie einen Eintrag mit den hinzugefügten Parametern hinzufügen, noauto
um zu verhindern, dass das Betriebssystem das Laufwerk erneut bereitstellt.
Ich verwende rdisk-disk2.vmdk
für den Namen, weil diese virtuelle Maschine nur ein Zeiger auf dieses Gerät ist. Nach dem Neustart kann sich die Situation ändern, z. B. könnte einem Gerät eine andere Nummer zugewiesen werden, insbesondere wenn Sie Geräte ausstecken und verschieben.
sudo /Applications/VirtualBox.app/Contents/MacOS/VirtualBox
Da alle Geräte Root gehören, müssen Sie VirtualBox mit Root-Rechten starten. Das hat Folgen. Ihr Home-Kontext (Home-Ordner und Einstellungen) wird auf root geändert. Ihre anderen virtuellen Maschinen sind nicht sichtbar. Wenn Sie einen Dateibrowser öffnen, sehen Sie standardmäßig den Basisordner des Stammverzeichnisses.
Eine andere Möglichkeit besteht darin, die Berechtigungen des Geräts (nicht empfohlen) so zu ändern, wie Sie es getan haben.
Um die Berechtigungen von Geräten zu bestätigen, können Sie ausführenls -l /dev/disk*
VERR_RESOURCE_BUSY
, NS_ERROR_FAILURE
)Fügen Sie eine optische Diskdatei hinzu (z. B. ein bootfähiges Linux-ISO Ihrer Wahl) und schalten Sie die optionale Live-CD/DVD ein, damit Sie davon booten können.
Dies ist nicht so offensichtlich, insbesondere wenn Sie ein EFI-Setup verwenden. Wenn Sie verwenden grub-mkconfig
, lautet der Name der EFI-Datei grubx64.efi (unter der Annahme von 64 Bit). VirtualBox ist pingelig, wo es nach einer Boot-Datei sucht. Die Standardeinstellung reicht nicht aus.
Umbenennen grubx64.efi
inbootx64.efi
/boot/EFI/BOOT/bootx64.efi
VERR_NOT_SUPPORTED
und VERR_ACCESS_DENIED
wenn ich dies tue, auch wenn die Festplattenberechtigungen auf eingestellt sind 777
und VirtualBox als root
./etc/fstab
Mounts zu blockieren.Ich habe ein kleines Skript zum Korrigieren der Berechtigung erstellt, das ein neues Rohbild mit der richtigen UUID erstellt:
#!/bin/bash UUID="BDA52A9B-E398-4245-AF6B-6C274F54D4BD" VBOXFILE=Linux.vmdk DEVICE_IDENTIFIERIDENTIFIER=$(diskutil info $UUID | grep "Device Identifier:" - | grep -o "disk." - ) DISK="/dev/$DEVICE_IDENTIFIERIDENTIFIER" echo "mit $DISK" if test -f "$VBOXFILE"; Dann rm $VBOXFILE fi sudo chown $USER $DISK sudo VBoxManage internalcommands createrawvmdk -filename $VBOXFILE -rawdisk $DISK sudo chown $USER $VBOXFILE VBoxManage internalcommands sethduuid Linux.vmdk "$UUID"
Ich habe mehr oder weniger das getan, was Sie wollen: als Linux-Boot im Raw-Modus auf die Festplatte zugreifen.
mac2011% diskutil list
Identifizieren Sie die Festplatte, auf die Sie mit VirtualBox zugreifen möchten. Hier ist es /dev/disk1
, das zwei Partitionen enthält /dev/disk1s1
/dev/disk1s2
(eine Windows und eine Linux).
Abmelden:
mac2011% diskutil unmountDisk /dev/disk1
Berechtigungen ändern:
mac2011% sudo chown myself /dev/disk1*
Rohdatenträger der virtuellen Maschine erstellen:
mac2011% VBoxManage internalcommands createrawvmdk -filename /Users/myself/VirtualBox\ VMs/link.vmdk -rawdisk /dev/disk
Öffnen Sie VirtualBox:
mac2011% open -a VirtualBox
Erstellen Sie eine virtuelle Maschine mit "einer vorhandenen virtuellen Festplattendatei", wählen Sie tatsächlich die gerade erstellte aus. Klicken Sie auf Hinzufügen... Erstellen...
Oft kommt ein Fehler "could not open the medium VERR_RESOURCE_BUSY", weil der Mac automatisch neu gemountet wurde (überprüfen Sie den Desktop), also unmounten und erneut versuchen (Shell History verwenden oder ein Skript schreiben oder -- und woanders nachsehen, wie man es füllt) sudo vifs /etc/fstab
.
Die virtuelle Maschine wird [Running] angezeigt, also hat sie wahrscheinlich auf die Festplatte zugegriffen. (Der Bootvorgang hängt sich jedoch auf, aber das ist eine andere Frage.)
Hoffentlich können Sie dieses Rezept an Ihre Bedürfnisse anpassen.
klanomath
David Anderson
David Anderson