Faire tourner FreeBSD sous Linux

Date: 16/05/2007 | Catégories: Systeme | Tags: ,,,,,

Le sujet de cet article est de faire tourner une instance FreeBSD sur une machine Linux. Nous allons donc parler de Xen, qui est un outil de virtualisation très à la mode de chez nous.

"Faire tourner FreeBSD sous Linux"... drôle d'idée... mais pourquoi faire ?

Bonne question ! Voici une petite liste de besoins qui peuvent expliquer ce fantasme de geek:
- Validation d'un logiciel sur FreeBSD
- Utilisation de couche réseau comme "dummynet" disponible seulement sur cet OS
- Test de cet OS qui est un des plus beau au monde 😉

Dis comment ça marche ?

Xen est un logiciel de paravirtualisation, il permet donc de lancer une machine virtuelle (FreeBSD dans notre cas) sur n'importe quel type de processeur. A la difference des outils de virtualisation, Xen doit utiliser une version spécifique de FreeBSD ("Xenifier") pour fonctionner. Au lancement du programme Xen, un domaine "host" (ou Dom0 pour les intimes) est créé. C'est à partir de ce domaine que l'on va créer les domaines "guest" (ou DomU encore une fois seulement pour les intimes).

Let's go Simone ! fait pêter le tutoriel

La première chose à faire est d'installer Xen:

Sur fedora:
# yum install kernel-xen
# yum install xen
# yum virt-manager
# reboot

PS: la version utilisé lors de ce tuto est la 3.0.

Lors du boot, il faut choisir le kernel Xen en le selctionnant dans le menu GRUB. Avant de continuer, il faut d'abord vérifier qu evous êtes sur le bon kernel:

# uname -a
Linux localhost.localdomain 2.6.20-1.2948.fc6xen

On télécharge ensuite la version "Xenifier" de FreeBSD sur votre distribution Linux (j'ai utilisé une Fedora). Pour cela il faut aller sur le site http://www.yuanjue.net/xen/howto.html et télécharger la dernière version disponible.

On doit en fait télécharger deux fichiers:

  • freebsd-XENU_INSTALL (contenant le noyau pour l'installation)
  • freebsd-XENU (contenant le noyau pour le fonctionnement)

Une fois les deux fichiers sur votre disque local, il faut éditer le fichier de configuration /etc/xen/freebsd-install.cfg:

# vi /etc/xen/freebsd-install.cfg
kernel="/home/simone/freebsd-XENU_INSTALL"
memory=256
name="freebsd"
disk=['file:/usr/share/xen/domains/freebsd/disk.img,hda1,rw']
extra="vfs.root.mountfrom=ufs:/dev/md0"

On crée ensuite le fichier "host" de 3 Go:

# mkdir /usr/share/xen/domains/
# mkdir /usr/share/xen/domains/freebsd/
# cd /usr/share/xen/domains/freebsd/
# dd if=/dev/zero of=disk.img bs=1024k seek=3000 count=1

Puis on lance la bête (installation de FreeBSD !)

# xm create -c /etc/xen/freebsd-install.cfg

Il faut dans un pertmier temps choisir une installation par VT.100. Puis changer, le nom de la release à installer (6.0-RELEASE).

Lors de la configuration "fdisk", il faut ficez la geometrie du disque en cliquant sur la lettre "G" puis en entrant la valeur suivante: "1000/1000/1000".

L'installation par FTP devrait se passer sans problème.

A la fin de l'installation, il ne faut pas rebooter la machine tout de suite mais d'abord configurer le TTY en éditant le fichier /etc/ttys:

xc0 "/usr/libexec/getty Pc" vt100 on secure
#ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
#ttyv1 "/usr/libexec/getty Pc" cons25 on secure
#ttyv2 "/usr/libexec/getty Pc" cons25 on secure
#ttyv3 "/usr/libexec/getty Pc" cons25 on secure
#ttyv4 "/usr/libexec/getty Pc" cons25 on secure
#ttyv5 "/usr/libexec/getty Pc" cons25 on secure
#ttyv6 "/usr/libexec/getty Pc" cons25 on secure
#ttyv7 "/usr/libexec/getty Pc" cons25 on secure
#ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure

On change alors la configuration de Xen pour pointer sur le kernel de fonctionnement, il faut éditer le fichier de configuration /etc/xen/freebsd.cfg:

# vi /etc/xen/freebsd.cfg
kernel="/home/simone/freebsd-XENU"
memory=32
name="freebsd"
disk=['file:/usr/share/xen/domains/freebsd/disk.img,hda1,rw']
extra=",vfs.root.mountfrom=ufs:/dev/xbd0s1a"

Puis lancer le tout:

# xm create -c /etc/xen/freebsd.cfg

Vous devriez voir apparaitre devant vos yeux ébahies, le prompt magique:

FreeBSD/i386...
login:

Et hop !

Partager ce billet