Passage de FreeBSD-8.2-STABLE a FreeBSD-9.0-BETA1

De Memento
Aller à la navigation Aller à la recherche

Adaptation de la configuration du noyau

Après avoir effectué la procédure classique:

[root@morzine ~]# cd /usr/src
[root@morzine src]# rm -r .svn *
[root@morzine src]# svn co http://svn.freebsd.org/base/head /usr/src
A    /tmp/src/usr.bin
A    /tmp/src/usr.bin/lastcomm
A    /tmp/src/usr.bin/lastcomm/lastcomm.c
A    /tmp/src/usr.bin/lastcomm/pathnames.h
A    /tmp/src/usr.bin/lastcomm/readrec.c
A    /tmp/src/usr.bin/lastcomm/Makefile
A    /tmp/src/usr.bin/lastcomm/lastcomm.1
A    /tmp/src/usr.bin/kdump
...
[root@morzine src]# mergemaster -p
...
[root@morzine src]# make -s buildworld
...
[root@morzine src]# make -s kernel
...
[root@morzine src]# make -s installworld
...
[root@morzine src]# mergemaster -Fi
...
[root@morzine src]# shutdown -r now

Le système redémarre avec le nouveau noyau, mais s'arrête avec l'erreur Fatal trap 12: page fault while in kernel mode. En redémarrant avec le nouveau zfsloader le noyau 8.2-STABLE, le système s'arrête avec la même erreur! :-O

Après quelques recherches, je constate qu'en version 9.0 le module acpi n'existe plus et que donc le nouveau zfsloader ne le charge plus. Il s'agit là de la cause qui entraîne, aussi bien en 8.2-STABLE qu'en 9.0-BETA1, le Fatal trap 12 si l'acpi n'est pas activé pour la configuration particulière de mon système.

En ajoutant device acpi à la configuration de mon noyau, tout rentre dans l'ordre.

Hélas, la carte WiFi Atheros 5424/2424 n'est plus reconnue. Ce problème est provoqué par l'introduction en FreeBSD 9.0 du nouveau module ath_pci. En ajoutant device ath_pci à la configuration du noyau, la carte est à nouveau correctement détectée.

Démarrage avec zfsboot

Sur un de mes systèmes, le disque est partagé entre Windows 7 et FreeBSD. FreeBSD est sur un pool ZFS:

[root@meribel ~]# gpart show     
=>       63  312581745  ada0  MBR  (149G)
         63  167782797     1  ntfs  (80G)
  167782860  144798948     2  freebsd  [active]  (69G)
 
=>        0  144798948  ada0s2  BSD  (69G)
          0  144798948       1  freebsd-zfs  (69G)

Il faut donc, pour pouvoir mettre à niveau la version du pool ZFS, préalablement mettre à niveau le zfsboot de la partition FreeBSD (/dev/ada0s2a):

/bin/dd if=/boot/zfsboot of=/dev/ada0s2a bs=512 count=1
1+0 records in
1+0 records out
512 bytes transferred in 0.016262 secs (31484 bytes/sec)
/bin/dd if=/boot/zfsboot of=/dev/ada0s2a bs=512 skip=1 seek=1024 
128+0 records in
128+0 records out
65536 bytes transferred in 0.012285 secs (5334638 bytes/sec)

Cette mise à jour se fait en démarrant le système à l'aide d'une clé USB (par exemple mfsBSD) pour que l'accès à la partition ne soit pas protégé.

Mais comme j'avais déjà recompilé tous le système à l'aide du nouveau compilateur clang, j'ai constaté que le démarrage du système se bloque lors de l'affichage de la barre tournante par zfsboot. Après avoir compilé zfsboot avec le compilateur classique gcc, tout rentre dans l'ordre.

Adaptation des ports

Sous FreeBSD-9 utmp(5) a été remplacé par l'interface standardisée POSIX utmpx [1]. Le port sysutils/libutempter doit être supprimé car cette API est maintenant intégrée au système.

Si x11/gdm est utilisé, il faut le réinstaller après la suppression de sysutils/libutempter.

Préférence IPv6 / IPv4

J'ai constaté que FreeBSD-9.0 utilise par défaut IPv4 tandis que la version précédente (FreeBSD-8.2) utilisait par défaut IPv6 si le protocole est disponible entre le client et le serveur. Ce comportement est contrôlé par la commande ip6addrctl(8). Pour rétablir la priorité du protocole IPv6, il suffit d'ajouter un parapètre dans /etc/rc.conf ou /etc/rc.conf.local :

 ip6addrctl_policy="ipv6_prefer"

Référence