Suite à la sortie de la version stable 7.2 de FreeBSD, j’ai mis à jour mon système 7.1-STABLE depuis les sources. A des fins de mémorisation, je résume ici l’ensemble des commandes saisies.

# cp /usr/share/example/cvsup/stable-supfile /usr/local/etc/cvsup/supfile
# ee /usr/local/etc/cvsup/supfile
# cd /usr/src
# csup -g -L 2 /usr/local/etc/cvsup/supfile
# make -j4 buildworld
# make buildkernel
# make installkernel
# cd /boot
# mv kernel kernel.test
# mkdir kernel
# cp kernel.old/* kernel/
# nextboot -k kernel.test
# reboot
# cd /boot
# mv /boot/kernel /boot/kernel.old
# mv /boot/kernel.test /boot/kernel
# cd /usr/src
# mergemaster -p
# make installworld
# mergemaster
# pwd_mkdb /etc/master.passwd
# reboot

Un peu d’explication tout de même : je télécharge les sources depuis un dépôt CVSUP, compile le nouveau monde, compile et installe un noyau GENERIC issu du nouveau monde. Je fais en sorte de ne booter qu’une fois sur le nouveau noyau, afin de pouvoir rebooter sur le noyau précédent en cas de pépin. Si tout est OK, je remplace le noyau par défaut par le nouveau. J’installe ensuite le nouveau monde. Pour finir, je mets à jour les fichiers de configuration, regénère la base des identifiants et je reboote sur un FreeBSD 7.2 tout propre.

# uname -a
FreeBSD freebsd.mydomain.lu 7.2-STABLE FreeBSD 7.2-STABLE #0: Wed May  6 01:26:03 CEST 2009
   bhuisgen@freebsd.mydomain.lu:/usr/obj/usr/src/sys/GENERIC  i386

Si quelqu’un connait un outil similaire à nextboot pour Linux je suis preneur.

Documentation de référence FreeBSD :
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
http://svn.freebsd.org/base/releng/7.2/UPDATING