8 votes

Comment faire un accès brut aux périphériques avec VirtualBox ?

J'essaie donc de configurer l'accès aux périphériques bruts avec VirtualBox pour utiliser un disque ext4/linux comme OS invité dans Mac OS X, mais je n'ai pas encore réussi.

En suivant la documentation de VirtualBox, chapitre 9.9.1.1, https://www.virtualbox.org/manual/ch09.html#rawdisk Mac OS X permettra-t-il l'accès aux disques bruts pour les VM ? Comment puis-je le configurer ?

Les choses faites jusqu'à présent : (n'essayez pas ceci à la maison)

Création d'un fichier vmdk brut :

$ 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.

faites de moi le propriétaire :

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

voir si VirtualBox peut voir quelque chose sur le fichier Xub_raw_disk.vmdk :

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

Puisque rien ne s'affiche ici pour les secteurs ou les partitions, cela doit être un symptôme du problème...

Le problème est que lorsque j'essaie d'ajouter le fichier .vmdk à partir de l'interface graphique ou avec la commande ci-dessous, j'obtiens une erreur :

$ 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 : Ici, disk0 est le disque dédié à linux. disk1 (non utilisé) est pour Mac OS X. En me rendant propriétaire de /dev/disk0 et /dev/disk0s2 avec la commande

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

par le Mode d'emploi de Froggard a fait en sorte que je puisse ajouter l'image à une VM. Aussi, /dev/disk0 est maintenant lisible depuis 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

Maintenant, lorsque je démarre le système d'exploitation invité linux, j'obtiens le message suivant FATAL: No bootable medium found! System halted. message. Avez-vous une idée de ce qui ne va pas ?

9voto

Jonathan Komar Points 745

J'ai eu besoin de le faire aujourd'hui et j'ai vu votre question, alors voici un protocole des étapes que j'ai suivies.

Trouver le numéro de l'appareil

diskutil list par exemple 2, comme dans /dev/disk2 En supposant que 2 pour le reste des instructions.

Créer le VMDK de la machine virtuelle

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

Éjectez le périphérique avant cette étape, sinon vous obtiendrez une erreur : VERR_RESOURCE_BUSY . Vous pouvez ajouter une entrée dans fstab avec les paramètres ajoutés noauto pour empêcher le système d'exploitation de remonter le disque.

J'utilise rdisk-disk2.vmdk pour le nom, car cette machine virtuelle est juste un pointeur vers ce périphérique. Après le redémarrage, la situation peut changer, par exemple, un périphérique peut se voir attribuer un numéro différent, notamment si vous débranchez et déplacez des objets.

Démarrer Virtual Box Manager avec les privilèges Root

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

Comme les périphériques appartiennent tous à Root, vous devez démarrer VirtualBox avec les privilèges de Root. Cela a des conséquences. Votre contexte personnel (dossier personnel et préférences) sera changé en Root. Vos autres machines virtuelles ne seront pas visibles. Si vous ouvrez un navigateur de fichiers, vous verrez le dossier personnel de Root par défaut.

Une autre option consiste à modifier les autorisations de l'appareil (non recommandé) comme vous l'avez fait.

Pour confirmer les permissions des dispositifs, vous pouvez exécuter ls -l /dev/disk*

  1. Ajouter une nouvelle machine, fournir un nom : /dev/disk2, type : linux, version : arch linux (64-bit)
  2. Donnez-lui un peu de mémoire (ce que vous pouvez)
  3. Sélectionnez le lecteur existant en utilisant le VMDK créé ci-dessus. ( IMPORTANT assurez-vous que le disque n'a pas été remonté, sinon vous obtiendrez VERR_RESOURCE_BUSY , NS_ERROR_FAILURE )

Installer un nouveau système

Ajoutez un fichier de disque optique (par exemple, un ISO linux amorçable de votre choix) et activez l'option CD/DVD Live afin de pouvoir démarrer à partir de celui-ci.

Rendre le système amorçable dans VirtualBox

Ce n'est pas si évident, surtout si vous utilisez une configuration EFI. Si vous utilisez grub-mkconfig le nom du fichier efi est grubx64.efi (en supposant qu'il s'agit de 64 bits). VirtualBox est pointilleux sur l'endroit où il recherche un fichier de démarrage. La valeur par défaut ne convient pas.

Renommer grubx64.efi à bootx64.efi

/boot/EFI/BOOT/bootx64.efi


Notes

  • conseil : procurez-vous iterm 2
  • C'est très utile pour les Macbooks lors de l'installation d'Arch Linux, car l'ISO par défaut ne charge pas les pilotes de la carte wlan.

1voto

blinkingnoise Points 11

J'ai fait un petit script pour réparer la permission et qui crée une nouvelle image brute avec le bon UUID :

#!/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 "using $DISK"

if test -f "$VBOXFILE"; then
    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"

0voto

Pierre ALBARÈDE Points 173

J'ai fait plus ou moins ce que vous voulez : accéder au disque en mode brut comme pour le démarrage de Linux.

mac2011% diskutil list

Identifier le disque auquel on veut accéder avec VirtualBox. Ici, c'est /dev/disk1 contenant deux partitions /dev/disk1s1 /dev/disk1s2 (un Windows et un Linux).

Démontez :

mac2011% diskutil unmountDisk /dev/disk1 

Modifier les autorisations :

mac2011% sudo chown myself /dev/disk1*

Créer un disque brut de machine virtuelle :

mac2011% VBoxManage internalcommands createrawvmdk -filename /Users/myself/VirtualBox\ VMs/link.vmdk -rawdisk /dev/disk

Ouvrez VirtualBox :

mac2011% open -a VirtualBox

Créez une machine virtuelle en utilisant "un fichier de disque dur virtuel existant", en fait choisissez celui qui vient d'être créé. Cliquez sur Ajouter... Créer...

Souvent, une erreur se produit "impossible d'ouvrir le support VERR_RESOURCE_BUSY", parce que le Mac a été automatiquement remonté (vérifiez le bureau), donc démontez et essayez à nouveau (utilisez l'historique du shell ou écrivez un script ou sudo vifs /etc/fstab -- et chercher ailleurs comment le remplir).

La machine virtuelle est affichée [Running] donc elle a probablement accédé au disque. (Cependant, le processus de démarrage se bloque mais ceci est une autre question).

Nous espérons que vous serez en mesure d'adapter cette recette à vos besoins.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X