Guide d'installation rapide de Gentoo/FreeBSD

Ignacio Arque-Latour  Auteur
Michael Kohl  Auteur
Otavio R. Piske  Auteur
Aaron Walker  Auteur
Chris White  Auteur
Diego Pettenò  Relecteur
Joshua Saddler  Correcteur
Camille Huot  Correcteur, traducteur

Dernière mise à jour le 22 avril 2009

1.  Introduction à FreeBSD

Qu'est-ce que FreeBSD ?

FreeBSD est un système d'exploitation libre (voir la licence) basé sur UNIX. Lorsque le développement du système 386BSD s'est arrêté, en 1993, deux projets en sont nés : NetBSD, très connu pour sa faculté de pouvoir fonctionner sur un nombre impressionnant d'architectures, et FreeBSD, qui supporte les architectures x86, amd64, ia64, sparc64 et alpha. FreeBSD est réputé pour sa stabilité, ses performances et sa sécurité, ce qui en fait un système utilisé dans de petites comme de très grandes entreprises de par le monde.

La version de FreeBSD actuellement en production est la 7.1 et le développement de Gentoo/FreeBSD est basé sur la version 6.2. Les versions antérieures de Gentoo/FreeBSD ne sont plus supportées.

Qu'est-ce que Gentoo/FreeBSD ?

Gentoo/FreeBSD est un sous-projet du projet Gentoo/Alt ayant pour but de fournir un système d'exploitation FreeBSD complètement fonctionnel qui bénéficierait des outils Gentoo, tels que le système d'initialisation et le système de gestion de paquets Portage.

FreeBSD et Linux

Les utilisateurs qui migrent de Linux à FreeBSD considèrent en général que les deux systèmes d'exploitation sont « pratiquement les mêmes ». En réalité, FreeBSD possède un bon nombre de similitudes avec les distributions Linux en général. Néanmoins, certaines différences essentielles sont à souligner :

FreeBSD possède également des différences techniques qui le rendent vraiment à part de Linux. Il est très important d'en connaître certaines, même si vous ne comptez pas rejoindre l'équipe de développement Gentoo/FreeBSD :

2.  Installer Gentoo/FreeBSD

Démarrer sur le CD-ROM

Après cette courte introduction, il est temps d'installer Gentoo/FreeBSD. Malheureusement, nous n'avons pas actuellement de medium d'installation, vous devez donc choisir entre deux méthodes alternatives d'installation. Vous pouvez par exemple partir d'une installation existante de FreeBSD pour partitionner votre disque et l'utiliser comme base afin d'y installer Gentoo/FreeBSD. Dans ce guide, nous nous servirons du LiveCD FreeSBIE comme un medium d'installation pour Gentoo/FreeBSD.

Note : Si vous comptez utiliser FreeSBIE pour installer Gentoo/FreeBSD, vous devez impérativement avoir une version de FreeSBIE basée sur FreeBSD 6.x, tel que FreeSBIE 2.0 (ou une de ses versions candidates). Vous pouvez le télécharger depuis le tracker Bittorrent de FreeSBIE.

Démarrez sur le CD-ROM FreeSBIE afin de commencer la procédure d'installation. Un écran de login devrait apparaître. Le nom d'utilisateur est freesbie et il n'a pas de mot de passe. Ensuite, lancez sudo su pour devenir root puis mettez-vous éventuellement un mot de passe. Afin de rendre les choses plus agréables, vous pouvez aussi lancer startx pour bénéficier d'un environnement Xfce qui vous permettra de naviguer aisément sur le web, vous connecter sur IRC, etc. À la différence de Linux, FreeBSD base les noms des interfaces réseaux sur le nom du pilote utilisé. Par exemple, la première carte Intel EtherExpress (pilote fxp) s'appellera fxp0. Lancez ifconfig pour voir quelles sont vos cartes :

Exemple de code 2.1 : Trouver le nom des interfaces réseaux grâce à ifconfig

# ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet6 fe80::2d0::b7ff:febc:4fe3%fxp0 prefixlen 64 scopeid 0x1
        inet 192.168.0.106 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:d0:b7:bc:4f:e3
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8007<LOOPBACK,MULTICAST> mtu 16384

Si la requête DHCP lancée automatiquement lors du démarrage du CD-ROM a échouée, vous pouvez la relancer avec la commande dhclient pour obtenir une adresse IP :

Exemple de code 2.2 : Configurer une interface via DHCP avec dhclient

# dhclient fxp0
DHCPDISCOVER on fxp0 to 255.255.255.255 port 67 interval 9
DHCPOFFER from 192.168.0.1
DHCPREQUEST on fxp0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.106 -- renewal in 302400 seconds

Note : Le résultat relevé ci-dessus peut être différent pour vous en fonction de votre réseau.

Partitionner le disque dur

Maintenant que le point de montage est créé, il est temps de partitionner le disque dur. On fait ça avec l'outil sysinstall :

Exemple de code 2.3 : Lancer sysinstall pour partitionner le disque

# sysinstall diskPartitionEditor diskPartitionWrite

Nous vous recommandons d'utiliser la structure par défaut. Faites Entrée, puis a suivi de q pour accepter la structure par défaut. L'écran suivant vous proposera d'installer le chargeur de démarrage. Indiquez « None » car nous verrons cela plus tard. Ensuite, vous devez spécifier les tailles des partitions et les points de montage.

Cette étape est également réalisée par sysinstall, mais avec d'autres paramètres :

Exemple de code 2.4 : Lancer sysintall pour définir les partitions et les points de montages

# sysinstall diskLabelEditor diskLabelCommit

Ici, pour faire simple, nous n'allons pas utiliser la répartition par défaut mais créer une seule grosse partition racine pour les fichiers et une partition de mémoire virtuelle. Tapez c pour créer une nouvelle partition. Lorsqu'on vous demandera de spécifier la taille, vous pourrez utiliser MB ou GB (pour Mo et Go) ou encore C (pour Cylindres). Pour la partition racine (root), choisissez le type de partition FS et indiquez le point de montage /mnt/.

Note : Si vous n'indiquez pas le point de montage, il écrasera l'environnement FreeSBIE !

Comme /boot n'est pas une partition séparée, vous devez désactiver les soft-updates car sinon votre système ne pourra pas démarrer ! Pour cela, utilisez les flèches pour vous placer sur votre partition et tapez s jusqu'à ce que « Newfs » ne contienne plus +S. Allez maintenant sur la ligne « Disk » et tapez c pour créer la partition de mémoire virtuelle (swap). En général, nous recommandons que la mémoire virtuelle fasse le double de la taille de la mémoire vive (RAM). Choisissez le type de partition « SWAP » et ne vous inquiétez pas des soft-updates car ils n'existent pas pour la SWAP. C'est fini, tapez q pour valider.

Lorsque vous créez une partition autre que /, sysinstall la nommera à partir de la lettre « d » et le chargeur de démarrage ne pourra pas démarrer dessus. Pour corriger le problème :

Note : Veuillez vous assurer que ad0s1 n'est pas monté avant d'exécuter la commande suivantes, sinon cela ne fonctionnera pas.

Exemple de code 2.5 : Corriger la lettre de la partition racine

# disklabel ad0s1 | sed 's/^  d:/  a:/' | disklabel -R ad0s1 /dev/stdin

Les partitions sont alors créées, formattées en UFS et montées comme vous l'avez spécifié (dans /mnt/. Vérifiez que tout a fonctionné en listant les points de montages :

Exemple de code 2.6 : Vérifier avec mount que les partitions sont correctement créées

# mount
...
/dev/ad0s1a on /mnt (ufs, local)

Vous pouvez maintenant passer à l'installation de Gentoo sur vos partitions fraîchement configurées.

Mise en place de Gentoo

Vous devez tout d'abord télécharger une archive stage3 et la décompresser dans le chroot. Ouvrez l'adresse http://distfiles.gentoo.org/experimental/x86/freebsd/stages/ dans votre navigateur, prenez le dernier instantané et videz-le dans votre point de montage :

Exemple de code 2.7 : Obtenir et extraire l'archive stage3

# cd /mnt/
(N'importe quel miroir Gentoo qui contient le répertoire experimental/ fera l'affaire.)
# wget http://distfiles.gentoo.org/experimental/x86/freebsd/stages/stage3-x86-freebsd-6.2-r1.tar.bz2
# tar -jxvpf stage3-x86-freebsd-6.2-r1.tar.bz2
(Vous pouvez éventuellement effacer l'archive avec la commande suivante.)
# rm stage3-x86-freebsd-6.2-r1.tar.bz2

Note : Si vous le désirez, vous pouvez utiliser une surcouche de Portage, qui contient des ebuilds expérimentaux dont les modifications ne sont pas encore dans l'arbre de Portage, mais qui augmente le nombre d'applications supportées. Pour cela, référez-vous à la documentation des surcouches de Portage pour Gentoo/ALT. Notez toutefois que cette surcouche n'est pas critique et que vous pouvez installer simplement Gentoo/FreeBSD sans elle.

Afin que votre nouveau système puisse fonctionner, vous devez monter /dev à partir de celui du système actuel vers le point de montage du Gentoo/FreeBSD avant de lancer le chroot.

Exemple de code 2.8 : Monter /dev et chrooter

# mount -t devfs none /mnt/dev/
# cp /etc/resolv.conf /mnt/etc
# chroot /mnt/ /bin/bash
# env-update && source /etc/profile

Une fois la surcouche Gentoo/FreeBSD à sa place, il est maintenant temps de lier /etc/make.profile au bon profil et préparer /etc/make.conf à fonctionner avec Gentoo/FreeBSD.

Il faut maintenant obtenir une copie de l'arbre Portage de Gentoo, ce qui peut prendre un certain temps selon votre connexion.

Exemple de code 2.9 : Télécharger l'arbre de Portage

# emerge --sync
(Ou, une autre façon de récupérer l'arbre de Portage.)
# cd /
# wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2
# tar -xjf portage-latest.tar.bz2 -C /usr/
# emerge --metadata

Exemple de code 2.10 : Mettre en place le profil et make.conf

# ln -sf /usr/portage/profiles/default-bsd/fbsd/6.2/x86/ /etc/make.profile
# nano /etc/make.conf
(Ajoutez au moins les lignes suivantes.)
CHOST="i686-gentoo-freebsd6.2"
FEATURES="collision-protect"

Note : Le mot-clé ~x86-fbsd ne vous permet pas encore d'installer autant d'application que ~x86, mais s'il vous plaît ne mettez pas ~x86 dans votre ACCEPT_KEYWORDS. Veuillez plutôt ajouter individuellement les paquets que vous voulez tester dans le fichier package.keywords et reporter sur notre Bugzilla ceux qui fonctionnent correctement.

Si vous le voulez, vous pouvez maintenant reconstruire les paquets systèmes.

Exemple de code 2.11 : Reconstruire les paquets systèmes de FreeBSD (facultatif)

# emerge -e system

3.  Préparation pour le démarrage

Configurer le fuseau horaire

Tout d'abord, mettez votre système à l'heure en utilisant date yyyymmddHHMM, en temps UTC.

Exemple de code 3.1 : Régler l'heure UTC

(Vérification de l'heure courante.)
# date
Mon Mar  6 00:14:13 UTC 2006

(Réglage de l'heure si besoin.)
# date 200603060016 (Au format yyyymmddHHMM.)
Mon Mar  6 00:16:00 UTC 2006

Ensuite, choisissez votre fuseau horaire dans la liste contenu dans le répertoire /usr/share/zoneinfo.

Exemple de code 3.2 : Réglage du fuseau horaire

# ls /usr/share/zoneinfo
(Par exemple : Paris pour la France.)
# cp /usr/share/zoneinfo/Europe/Paris /etc/localtime

# date
Wed Mar  8 00:46:05 CET 2006

Éditez maintenant le fichier /etc/conf.d/clock pour définir le fuseau horaire précédemment choisi.

Exemple de code 3.3 : Éditer /etc/conf.d/clock

# nano -w /etc/conf.d/clock
TIMEZONE="Europe/Paris"

Installation du noyau

Si vous faites emerge -e system, les sources du noyau de FreeBSD sont installées dans le répertoire /usr/src/sys. Si vous avez sauté cette étape, vous pouvez tout de même obtenir les sources de cette façon :

Exemple de code 3.4 : Obtenir les sources du noyau de FreeBSD

# emerge freebsd-sources

La configuration et la compilation d'un noyau personnalisé se passent vraiment différemment d'avec Linux. Si vous n'êtes pas familier avec cette procédure, nous vous recommandons de jeter un œil au chapitre 8 du manuel FreeBSD. Pour le moment, vous pouvez très bien procéder à une installation du noyau GENERIC, qui fonctionne sur la plupart des systèmes. Pour commencer, placez-vous dans le répertoire des sources du noyau :

Important : Notez bien qu'actuellement seule la méthode « traditionnelle » de compilation du noyau est supportée dans Gentoo/FreeBSD !

Exemple de code 3.5 : Se placer dans le répertoire des sources du noyau

# cd /usr/src/sys/

En observant les répertoires présents, vous verrez les différentes architectures et sous-répertoires qui concernent des parties du noyau. Pour débuter l'installation, allez dans le répertoire i386/conf/ :

Exemple de code 3.6 : Le répertoire de configuration du noyau

# cd i386/conf/
# ls
.cvsignore      GENERIC         Makefile        PAE
DEFAULTS        GENERIC.hints   NOTES           SMP

Les fichiers principaux sont GENERIC et GENERIC.hints. Puisque l'installation du noyau le demande, copiez directement le fichier GENERIC.hints dans /boot/device.hints :

Exemple de code 3.7 : Copier le fichier GENERIC.hints

# cp GENERIC.hints /boot/device.hints

Ce fichier est utilisé par les pilotes du noyau pour trouver des informations de configuration de base telles que les paramètres des IRQ.

Passez maintenant au noyau. FreeBSD utilise la commande config pour le configurer. config utilise un fichier de configuration donné (ici ce sera GENERIC) pour copier les fichiers nécessaires à la compilation du noyau dans un sous-répertoire compile du répertoire parent. Le fichier GENERIC est similaire au fichier .config de Linux. Lancez config pour produire le répertoire de compilation :

Exemple de code 3.8 : Préparer la compilation du noyau

# config GENERIC
Kernel build directory is ../compile/GENERIC
Don't forget to ''make cleandepend; make depend''

config a créé le répertoire de compilation GENERIC dans le répertoire parent. Placez-vous-y et lancez l'installation du noyau :

Exemple de code 3.9 : Construire et installer le noyau

# cd ../compile/GENERIC
# make cleandepend && make depend && make && make install

À la fin, le noyau sera correctement installé. Passez maintenant à l'installation du chargeur de démarrage. Le chapitre suivant vous proposera deux méthodes pour amorcer le système : boot0 et grub.

Mettre en place le chargeur de démarrage (boot0)

Important : boot0 est le chargeur de démarrage de FreeBSD. Il était le seul chargeur de démarrage supportée avant que Grub n'accepte les partitions UFS. Pour installer et configurer boot0, exécutez les commandes suivantes. Veillez bien à remplacer adXsY par les numéros qui correspondent à votre disque et à votre partition.

Exemple de code 3.10 : Installer et paramétrer boot0

# emerge boot0
(Quittez l'environnement chroot.)
# exit
(À lancer en dehors du chroot.)
# fdisk -B -b /mnt/boot/boot0 /dev/adX
# chroot /mnt/ /bin/bash
# disklabel -B adXsY

Pour plus d'informations sur boot0, consultez le chapitre 12 du manuel FreeBSD. Nous allons maintenant passer à la configuration de base du système.

La section suivante décrit l'utilisation du chargeur de démarrage alternatif grub.

Mettre en place le chargeur de démarrage (Grub)

Depuis Grub 0.97-r1, les partitions UFS sont lisibles par Grub. Vous pouvez donc maintenant utiliser grub comme chargeur de démarrage, ce qui vous dépaysera certainement moins si vous venez de Linux. Pour commencer, installez grub et marquez le label racine comme démarrable. Veillez bien à remplacer adXsY par les bons numéros qui correspondent à votre disque et votre partition.

Exemple de code 3.11 : Installer Grub

# emerge grub
# disklabel -B adXsY

Lancez maintenant grub afin d'obtenir l'invite de commande et configurer votre partition comme expliqué ci-dessous :

Exemple de code 3.12 : Installer Grub dans le secteur d'amorçage

(Pour éviter l'erreur Grub N°29.)
# sysctl kern.geom.debugflags=16
# grub
(Exemple en utilisant ad0s1d.)
grub> root (hd0,0,d)
 Filesystem type is ufs2, partition type 0xa5

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/ufs2_stage1_5" exists... yes
 Running "embed /boot/grub/ufs2_stage1_5 (hd0)"... 14 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+14 p (hd0,0,d)/boot/grub/stage
2 /boot/grub/menu.lst"... succeeded
Done.

grub> quit

Afin que le chargeur de noyau puisse trouver ce dernier sur une tranche particulière (il cherche sur la tranche « a » par défaut), ajoutez la ligne vfs.root.mountfrom au fichier /boot/loader.conf :

Exemple de code 3.13 : Indiquer au chargeur de noyau une tranche spécifique de démarrage

# echo 'vfs.root.mountfrom="ufs:ad0s1d"' >> /boot/loader.conf

Lors de votre premier démarrage, si vous n'avez pas le menu de Grub, exécutez les commandes suivantes au prompt Grub :

Exemple de code 3.14 : Démarrer le noyau sans menu Grub

grub> find /boot/grub/stage1
(Utilisez le résultat de cette commande dans la commande suivante.)
 (hd0,0,d)

grub> kernel (hd0,0,d)/boot/loader
  [FreeBSD-a.out, loadaddr=0x200000, text=0x1000, data=0x3a000, bss=0x0, entry=0x200000]

grub> boot

Note : Pour plus d'informations sur la configuration de Grub, veuillez vous référer au manuel de Gentoo Linux.

Attention : Grub ne suit pas les liens symboliques sur l'UFS. Supprimez le lien /boot/grub/menu.lst et utiliser le nom de fichier menu.lst au lieu de grub.conf pour configurer Grub.

Configuration du système

D'abord, définissez les points de montages dans le futur /etc/fstab.

Exemple de code 3.15 : Éditer le système de fichiers dans /etc/fstab

# nano /etc/fstab
(Dans cet exemple, remplacez X et Y par les chiffres correspondants à ceux de
votre disque dur.)
#Device         Mountpoint      Fstype          Options         Dump    Pass
/dev/adXsYb     none            swap            sw              0       0
/dev/adXsYa     /               ufs             rw              1       1
/dev/adXsYe     /usr/home       ufs             rw              2       2
/dev/adXsYd     /tmp            ufs             rw              2       2
/dev/acdX       /cdrom          cd9660          ro,noauto       0       0

Nous pouvons maintenant passer à la configuration du réseau avant le redémarrage final. Vous trouverez toutes les informations nécessaires pour configurer votre réseau dans le Manuel Gentoo. Pour que le réseau soit activé au démarrage, il faut l'ajouter au niveau d'exécution par défaut :

Exemple de code 3.16 : Ajouter le réseau au niveau d'exécution par défaut

# rc-update add net.fxp0 default

Pour changer votre nom de machine, vous devez éditer le fichier /etc/conf.d/hostname :

Exemple de code 3.17 : Définir le nom de la machine

# nano /etc/conf.d/hostname
(Assignez le nom de la machine à la variable HOSTNAME.)
HOSTNAME="larry"

Vous devez aussi configurer votre nom de domaine, ce qui se fait dans le fichier /etc/conf.d/domainname :

Exemple de code 3.18 : Définir le nom du domaine

# nano /etc/conf.d/domainname
(Assignez le nom du domaine à la variable dns_domain et lo à votre interface réseau locale.)
dns_domain_lo="maison"

Dans le cas où vous seriez dans un domaine NIS, définissez-le dans le fichier /etc/conf.d/domainname :

Exemple de code 3.19 : Définir le domaine NIS

# nano /etc/conf.d/domainname
(Assignez le nom du domaine NIS à la variable nis_domain et lo à votre interface réseau locale.)
nis_domain_lo="boulot"

Note : Pour de plus amples informations sur les noms de domaines et le réseau, veuillez vous référer au Manuel Gentoo Linux et à la documentation contenue dans /etc/conf.d/net.example.

Au cas où vous devriez utiliser une autre configuration de clavier que celle par défaut pour votre langue, vous devez mettre la bonne valeur dans le fichier /etc/conf.d/syscons. L'exemple suivant installe la disposition de touches utilisée généralement en France, adaptez-le si vous utilisez une autre disposition de touches.

Exemple de code 3.20 : Changer la disposition de touches du clavier (facultatif)

# nano /etc/conf.d/syscons
KEYMAP="fr.iso.acc"
(Les fichiers de dispositions se trouvent dans /usr/share/syscons/keymaps/.)

Nous pouvons maintenant mettre un mot de passe pour l'utilisateur root et créer un compte normal pour votre travail quotidien.

Exemple de code 3.21 : Changer le mot de passe root et créer un nouvel utilisateur

# passwd
# adduser
Username: fred
Full Name: Fred Smith
(Faites Entrée pour accepter la valeur par défaut.)
Uid (Leave empty for default):
(Ici également, faites Entrée.)
Login group [fred]:
(Listez ici la liste des groupes, ils doivent déjà exister.)
Login group is fred. Invite fred into other groups? []: wheel portage
(Faites Entrée pour accepter la valeur par défaut.)
Login class [default]:
(Choisissez le shell, il doit exister dans /etc/shells.)
Shell (sh bash tcsh csh esh ksh zsh sash nologin) [sh] bash
(Faites Entrée pour accepter la valeur par défaut.)
User password-based authentication [yes]
Use an empty password (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password: entrez votre mot de passe ici
Enter password again: retapez-le là
(Faites Entrée pour accepter la valeur par défaut.)
Lock out the account after creation? [no]:
Username    : fred
Password    : *****
Full Name   : Fred Smith
(Ceci n'est qu'un exemple.)
Uid         : 1002
Class       :
Groups      : fred wheel portage
Home        : /home/fred
Shell       : /bin/bash
Locked      : no
(Confirmez si tout est correct.)
OK? (yes/no): yes
adduser: INFO: Sucessfully added (fred) to the user database
Add another user? (yes/no): no
Goodbye!
#

Félicitations, vous venez de finir votre installation de Gentoo/FreeBSD que vous pourrez commencer à apprécier juste après le redémarrage final. Amusez-vous bien !

Exemple de code 3.22 : Redémarrer le système

# exit
# reboot

4.  Développer Gentoo/FreeBSD

Comment nous aider

Selon vos capacités et votre temps libre, vous pourriez nous aider sur de nombreux points :

Problèmes connus

À l'heure actuelle, de nombreux problèmes sont connus. Voici les principaux :

5.  Contacts

La liste des développeurs Gentoo/FreeBSD se trouve sur la page du projet. Vous pouvez également les contacter sur le canal IRC #gentoo-bsd sur le réseau Freenode ainsi que par mail sur la liste de diffusion gentoo-bsd.