Le but de ce tuto est de montrer comment installer un systeme FreeBSD a partir de rien, sur un pool ZFS multi disque (mirroir ou zraid).
L’exemple ce basera sur une install en raidz1 sur 3 disques.
Prérequis :
Une ISO du système (la version CD suffit) ou une clé usb préparée a partir de l’image « memstick.img ».
Vous trouverez tout ca par ici.
Démarrage en mode « Live ».
Démarrez sur le support (cd ou usb) préparé a cet effet (voir prérequis).
Après la procédure de boot, vous vous retrouvez sur le premier écran de l’installeur.
Choisissez le mode « Live CD ».
Vous vous retrouverez alors sur un écran de login : Logguez vous en root, sans mot de passe.
Vous constaterez que le clavier est en qwerty
Pour repasser en azerty (ou toute autre version de clavier) utilisez la commande « kbdmap », sans argument.
Cette commande affiche une liste dans laquelle vous pourrez choisir votre clavier.
Ensuite, listons nos disques avec camcontrol.
camcontrol devlist
La commande réponds avec la liste des lecteurs de disque.
La référence du disque est entre parenthèses, après la virgule. Ici, nous avons, en plus du lecteur cd, 3 disques (ada0, ada1 et ada2).
Vérifions ensuite l’état de partitionnement de nos disques :
gpart show ada0 ...
Cette commande, a lancer pour chaque disque, affiche le partitionnement.
Si aucun partitionnement n’est présent, le message s’affiche :
gpart: No such geom: ada0
Nous allons repartitionner les disques avec le mode GPT. Si un partitionnement est déja présent, nous le supprimons avec la commande :
gpart destroy -F ada0
Et ce pour chaque disque.
Créons ensuite les partitions :
Pour chaque disque, nous allons créer 3 partitions GPT : boot, swap, et zfs. Nous allons aligner ces partitions sur des secteurs de 4k.
gpart create -s GPT ada0 gpart add -a 4k -s 64k -t freebsd-boot ada0 gpart add -a 4k -s 2G -t freebsd-swap -l swap-disk0 ada0 gpart add -a 4k -t freebsd-zfs -l zroot-disk0 ada0
Notez que nous ajoutons un label sur les partitions swap et zfs, pensez a mettre un nom différent sur chaque disque. Nous pouvons ensuite vérifier le partitionnement avec la commande « gpart show ».
gpart show ada0
Faites de même pour l’ensemble des disques.
Ensuite, nous allons poser tout de suite les secteurs de boot. Il est effectivement possible de le faire dès cette étape.
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada...
Nous allons ensuite créer le pool ZFS.
Nous le monterons sur une racine alternative : /tmp/zfs. Notez que sous freebsd10, le fichier zpool.cache n’est plus nécessaire au démarrage.
La commande se décompose comme suit : zpool create -o cachefile=/tmp/zpool.cache -R /tmp/zfs nom_du_pool [mirror|raidz1|raidz2] ada0p2 ada1p2 …
Choisissez le nom du pool. Dans notre exemple, nous choisirons « zroot« . Le type de vdev peux être mirror (disques en mirroir), raidz1 ou raidz2 (simple ou double parité). Le « p2 » suivant le nom du disque indique quelle partition nous souhaitons utiliser. Exemple :
zpool create -o cachefile=/tmp/zpool.cache -R /tmp/zfs zroot raidz1 gpt/zroot-disk0 gpt/zroot-disk1 gpt/zroot-disk2 zpool status
Nous allons ensuite créer les systèmes de fichier pour le système.
zfs create -o mountpoint=/ -o canmount=off zroot/root zfs create -o mountpoint=none zroot/root/env zfs create -o mountpoint=/ zroot/root/env/10.0-RELEASE zfs create -o canmount=off zroot/root/usr zfs create zroot/root/tmp zfs create zroot/root/home zfs create zroot/root/usr/local zfs create zroot/root/usr/local/etc zfs create zroot/root/usr/src zfs create zroot/root/usr/obj zfs create zroot/root/usr/ports zfs create zroot/root/var zfs create zroot/root/var/tmp zfs create zroot/root/var/log
Nous pouvons vérifier la bonne création de la structure avec les commandes suivantes :
zfs list mount
Notez que zroot/root et zroot/root ne doivent PAS être montés. Ces deux FS servent a conserver l’arborescence, mais ne serons jamais montés.
Nous allons maintenant pouvoir décompresser le systeme.
Allez dans la future racine et décompressez les archives :
cd /tmp/zfs/ tar xJf /usr/freebsd-dist/base.txz tar xJf /usr/freebsd-dist/kernel.txz tar xJf /usr/freebsd-dist/doc.txz tar xJf /usr/freebsd-dist/lib32.txz
Notez que doc et lib32 sont facultatifs. Seuls base et kernel sont nécessaire au bon déroulement du redémarrage systeme.
Finalisation avant premier reboot :
zpool set bootfs=zroot/root/env/10.0-RELEASE touch /tmp/zfs/etc/fstab echo 'zfs_enable="YES"' > /tmp/zfs/etc/rc.conf echo 'zfs_load="YES"' > /tmp/zfs/boot/loader.conf cp /tmp/zpool.cache /tmp/zfs/boot/zfs/zpool.cache
Vous pouvez ensuite redémarrer la machine.
Vous pourrez ensuite finaliser l’installation avec la commande bsdconfig.
Pour ce qui est de la configuration du swap : ajoutez les lignes suivantes a votre fichier /etc/fstab :
/dev/gpt/swap-disk0 none swap sw 0 0 /dev/gpt/swap-disk1 none swap sw 0 0 ...
puis activez le swap avec la commande ‘swapon -a‘.