VirtualBox sur un hôte FreeBSD
Au boulot pour les mails, nous utilisons Br0tchus Notes, un espèce de daube infâme qui te pique ta ram pire qu'un firefox dans ces mauvais jours, bref.
Mon problème c'est que mon Desktop c'est du FreeBSD et que les gens de chez IBM, il ne fournissent de clients que pour Linux (si on ne considère que les environnements libre) - le java ça ne devait pas permettre de faire des applis qui tourne chez tout le monde ??? (oui il y a des vrais morceaux d'eclipse donc de java dans les derniers clients Notes)... bref -
VirtualBox ayant été porté récemment sous FreeBSD avec le support des extensions Vt-X je me suis donc lancé dans la virtualisation d'une debian minimaliste qui n'aura pour seul but que de lancer le client Notes et de le confiner en RAM afin qu'il ne me pique pas tout ce que j'ai de disponible sur ce Desktop.
Pour cela je l'ai donc installé depuis les ports (il faudra faire attention pour lancé les VMs à bien avoir mounté /proc - oui le ports n'est pas encore super propre, mais on fera avec). Comme c'est déjà super long à compiler je l'ai compilé en enlevant le support QT4, en effet la GUI n'apporte pas grand chose à cette application et en plus elle ne permet pas d'accéder à des fonctionnalités intéressantes de VBox.
Pour finir afin d'être plus souple j'ai utilisé les volumes zfs comme disques pour l'invité.
Installation de virtualbox
$ make -C /usr/ports/emulators/virtualbox config
Choisissez les options qui vous plaisent
$ make -C /usr/ports/emulators/virtualbox install clean
Si tout ce passe bien vous disposez maintenant de virtualbox sur votre machine.
Préparation du disque d'accueil de l'invité
Règle devfs
Pour que les volumes pour l'invité puisse être modifié par l'application virtualbox, ils doivent appartenir au groupe vbox, devfs nous permet de le faire à la volée, pour cela, dans le fichier /dev/devfs.rules :
[localrules=1]
add path 'zvol/vbox/*' mode 0660 group vbox
Ne pas oublier de modifier /etc/rc.conf pour qu'il le prenne en compte :
devfs_system_ruleset="localrules"
Un petit redémarrage de devfs pour finir :
$ /etc/rc.d/devfs restart
Création du volume
5G suffirons largement pour notre installation et encore je suis très large
$ zfs create -V 5G vbox/debian
Nous disposons maintenant d'un disque qu'il ne reste plus qu'à ajouter au pool de disques VirtualBox :
$ VBoxManage internalcommands createrawvmdk -filename melebian.vmdk -rawdisk /dev/zvol/vbox/debian
$ VBoxManage registerimage disk debian.vmdk
Création de la machine virtuelle
Création de la VM sans disque
Nous allons donc créer la VM pour qu'elle support les extensions VT-x et qu'elle soit limitée à 256Mo de RAM il ne s'agirait pas non plus que notes se sente trop à son aise.
$ VBoxManage createvm -name debianVM -register
$ VBoxManage modifyvm debianVM --ostype debian -memory 256M
$ VBoxManage modifyvm debianVM --vtxvpid on
Nous allons aussi déporter le port 22 de l'invité sur le port 2222 local afin de se simplifier la tâche pour le réseau (on laisse le réseau par défaut de virtualbox)
$ VBoxManage setextradata debianVM "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
$ VBoxManage setextradata debianVM "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222
$ VBoxManage setextradata debianVM "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP
Ajout du disque à la nouvelle VM et de l'iso de l'installeur
Tout d'abord on liste les disques disponibles dans le pool pour récupérer son identifiant :
$ VBoxManage list hdds
UUID: b6db4102-90fd-4073-ae61-c1c57556bb85
Format: VMDK
Location: /home/bapt/debian.vmdk
Accessible: yes
Il suffit maintenant de le rajouter :
$ VBoxManage modifyvm debianVM -hda b6db4102-90fd-4073-ae61-c1c57556bb85
On enregistre l'iso dans le pool VirtualBox :
$ VBoxManage registerimage dvd /home/bapt/Desktop/debian-501-i386-netinst.iso
Et on l'ajoute de la même manière à la VM
$ VBoxManage list dvds
UUID: b3329255-221a-4bb6-b1f4-be2d4bdc0f2f
Path: /home/bapt/Download/debian-501-i386-netinst.iso
Accessible: yes
$ VBoxManage modifyvm debianVM -dvd b3329255-221a-4bb6-b1f4-be2d4bdc0f2f -boot1 dvd
Installation de l'invité
Pour l'installation de l'invité, on démarrera en mode sdl pour la suite ça ne sera plus nécessaire :
$ VBoxManage startvm debianVM --type sdl
Ou
$ VBoxSDL startvm debianVM
il ne vous reste plus qu'à faire votre installation debian normale à laquelle vous ajouterez votre client br0tchus notes et le configurerez.
afin que votre VM puisse accéder au disque de l'hôte sans se prendre la tête, VirtualBox prévoie un mécanisme bien sympathique :
$ VBoxManage sharedfolder add debianVM -name share -hostpath /home/bapt/sharedvm
Pour y accéder depuis votre debian, il faudra installer les guestutils
$ apt-get install virtualbox-ose-guest-modules virtualbox-ose-guest-utils
Puis dans le /etc/fstab de l'invité
share /home/bapt/sharedHost vboxsf uid=bapt,gid=bapt 0 0
Maintenant lorsque vous démarrerez votre VM vous le ferez de la manière suivante :
$ VBoxManage startvm debianVM --type headless
Ou
$ VBoxHeadless startvm debianVM
Et pour se connecter à la VM depuis l'hôte :
$ ssh -Y -p 2222 bapt@localhost
lancez notes ou votre application désirée.
Comme je suis un gentil lutin j'ai partagé tout ça de manière plus générique sur GCU