mardi 9 août 2011

FreeBSD : mise à jour d'une version 8.2-RELEASE à 8.2-STABLE

Ce post n'a rien d'exceptionnel, mais il peut permettre à une personne qui aurait besoin de certaines fonctionnalités d'une version STABLE de FreeBSD de pouvoir en bénéficier.

Configuration

Dans mon exercice, j'ai utilisé :
  • Mac OS X Lion
  • Un outil de virtualisation :
    • VirtualBox v4.0.12
    • Parallel Desktop 6 (dernière mise à jour)
  • Une iso FreeBSD-8.2-RELEASE-amd64-dvd1.iso
  • Une connexion internet, c'est mieux avec que sans surtout dans ce cas là
Mes VMs, virtualbox ou //, n'ont rien de vraiment particulier attribué :
  • 2 CPU
  • 2 Gio de RAM
  • Un disque de 50 Gio, mais 30 Gio pourrait suffire
Installation de FreeBSD 8.2-RELEASE

Ici, il s'agit d'une installation tout ce qu'il y a de plus standard sans documentation. Par contre pour des raisons de facilités, installe standard = UFS et pas autre chose (qu'on ne me parle pas de ZFS pour ce post, merci)
Rajouter uniquement 2 ports :
  • shells/bash (prédilection)
  • ports-mgmt/portupgrade (prédilection)
Pourquoi pas de documentation ? car lors de la mise à jour des ports, ça installe tout un tas de ports dont on n'a vraiment pas besoin. D'autant plus que pendant la mise à jour à priori on ne veut mettre à jour que "bash", "portupgrade" et leurs dépendances.

Recompiler le kernel

Une fois l'installe faite et que votre VM a rebooté, le kernel GENERIC de base est sympa, mais clairement je préfère vraiment, et je le conseille, d'installer les sources grâce à sysinstall et de recompiler le kernel :
  • sysinstall
  • Configure      Do post-install configuration of FreeBSD
  • Distributions               Install additional distribution sets
  • src       Sources for everything
  • All
  • installation par "ftp through firewall", merci le mode passif
Une fois que sysinstall a installé les sources, en sortir. :p
Puis recompiler le kernel :
  • cd /usr/src
  • make buildkernel KERNCONF=GENERIC
  • make installkernel KERNCONF=GENERIC
  • reboot
Oui j'en entend certains qui vont me dire : "pourquoi GENERIC si c'est juste bien ?"
  1. C'est une VM
  2. La mise à jour du système complet ne se fera que sur un kernel GENERIC non modifié (doc. FreeBSD)
  3. Il faut suivre un peu ... :p

Mettre à jour l'environnement

Avant même de vouloir récupérer les sources STABLE de la version 8.x de FreeBSD, il est conseillé (doc. FreeBSD) de mettre à jour l'environnement des ports :
  • cd /usr/ports
  • portsnap fetch
  • portsnap extract
  • portsnap fetch update (fetch et extract prennent un peu de temps, on essaie une mise à jour du répertoire de ports)
  • portupgrade -af --batch (on met à jour tous les ports déjà installés, sans poser de questions)

Mise à jour des sources

Pour mettre à jour les sources de FreeBSD, il faut :
  • une machine avec un kernel GENERIC non modifié
  • cvsup, et puisque nous sommes sur une VM, on ne veut pas forcément la version qui compile avec une GUI, donc on parle là du port "net/cvsup-without-gui"
  • un fichier stable-supfile à utiliser avec cvsup
Installer "cvsup" :
  • cd /usr/src/net/cvsup-without-gui
  • BATCH=YES make install clean (mon compte root utilise bash)
Création du fichier stable-supfile
  • cp /usr/share/examples/cvsup/stable-supfile /root/stable-supfile
  • chmod 644 /root/stable-supfile
  • editer /root/stable-supfile avec vi, ou autre
    • *default host=CHANGE_THIS.FreeBSD.org
      • j'habite en France, donc je mets "cvsup1.fr.freebsd.org"
    • *default release=cvs tag=RELENG_8
      • Si vous avez suivi ce post, il n'y a pas besoin de toucher à cette variable. 
      • Si vous étiez sur une autre version de FreeBSD, c'est ce tag que l'on veut
Mettre à jour les sources (enfin...)

Attention, ça peut prendre un peu de temps (ou pas...) :
  • cvsup -g -L 2 /root/stable-supfile
Après ça, on est content car on a mis à jour les sources. Au revoir et à bientôt ............
Ah non, ce n'est pas fini en fait


Mise à jour complète du système

C'est la partie qui a priori vous prendra le plus de temps, de CPU, de RAM, de sueurs froides (si si... vous verrez). Mais une fois que vous l'aurez fait "une première fois", les autres fois vont paraîtront beaucoup plus simple... même si c'est fastidieux ! Toujours d'après la doc. FreeBSD :
  • cd /usr/src
  • make buildworld (prend beaucoup de temps)
  • make buildkernel (vous connaissez déjà)
  • make installkernel (de même)
  • shutdown -r now (et oui, faut pas déconner non plus)
  • Au redémarrage, il faut choisir le mode "single user"
    • à un moment en mode single user, on va vous demander ou se trouve /bin/sh, soit vous le re précisez "/bin/sh", soit vous appuyer sur entrée et faites confiance au système
  • adjkerntz -i
  • mount -a -t ufs (parce que vous aurez choisi UFS sous mon conseille, sinon débrouillez vous !)
  • mergemaster -p
  • cd /usr/src
  • make installworld
  • mergemaster
    • sueurs froides, vous voilà. Attention à la version des fichiers et au merge de certains fichiers. Même si la plupart des cas sont des choix simple, ne vous trompez pas sinon votre système aura probablement beaucoup de mal à redémarrer
  • reboot (facile)
Final

Si tout s'est bien passé, mesdames et messieurs, votre VM redémarre tranquillement, et si vous avez été assez malin, "uname -a" vous répondra quelque chose comme :
"FreeBSD bsd64.local 8.2-STABLE FreeBSD 8.2-STABLE #1: Mon Aug  8 11:40:45 CEST 2011     root@bsd64.local:/usr/obj/usr/src/sys/GENERIC  amd64"