Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Mon livre « Cyberstructure »

Ève

Mettre à jour NetBSD

Première rédaction de cet article le 13 avril 2008
Dernière mise à jour le 1 octobre 2009


Après des années passées à administrer des machines Debian où la mise à jour vers une nouvelle version du système est simple et marche à (presque) tous les coups, passer un ordinateur NetBSD de la version 3 à la version 4 est un amusant retour en arrière, comme de faire un stage dans une île déserte avec juste un briquet et un couteau.

La machine est une Sun UltraSparc 10. Elle était en NetBSD 3.1 et vient de passer en NetBSD 4 puis, avec la même méthode, en NetBSD 5. Ce que j'ai fait, sur les excellents conseils de Mark Weinem :

  • Vérifier que tout était en place pour rattraper un éventuel problème. Sauvegarde des choses importantes, test de la liaison série avec la console (une session minicom sur une autre machine Unix).
  • Récupérer tous les fichiers nécessaires en http://ftp.netbsd.org/pub/NetBSD/NetBSD-5.0.1/sparc64/binary/sets/. J'ai utilisé pour cela la commande wget --mirror --no-parent --execute robots=off http://ftp.netbsd.org/pub/NetBSD/NetBSD-5.0.1/$(uname -m)/binary/sets/. Pour le reste de la manipulation, on va supposer qu'on a tout copié dans /var/tmp/netbsd5. On se rend dans ce répertoire.
  • Décomprimer le noyau avec pax -zrf kern-GENERIC.tgz. pax est simplement un frontal aux différents formats d'archivage comme tar.
  • Copier, par précaution, l'ancien noyau du système avec mv /netbsd /netbsd.old et mettre le nouveau noyau, récupéré à l'étape précédente avec mv netbsd /netbsd. On pourra redémarrer sur l'ancien noyau, si nécessaire, avec la commande boot netbsd.old de l'invite de démarrage de la Sparc.
  • Sur la Sparc, qui utilise OpenFirmware, une autre manipulation semble nécessaire, ou bien le nouveau noyau panique (« No bootinfo information.\ This kernel requires NetBSD boot loader.\ panic: sparc64_init. »). Il faut sauvegarder l'ancien /ofwboot, puis copier le nouveau (qu'on trouve dans l'ensemble base.tgz, en ./usr/mdec/ofwboot).
  • Redémarrer. (Il est important d'installer le noyau d'abord.)
  • Lors de la récupération, on a obtenu des ensembles (sets), des fichiers d'archive contenant tout les fichiers nécessaires. etc.tzg et xetc.tgz contiennent, comme leur nom l'indique, des fichiers de configuration. On ne les installera pas directement, la machine étant déjà configurée.
  • Installer les ensembles. On va dans la racine (cd /) et on installe : for set in $(ls /var/tmp/netbsd5/*.tgz | grep -v etc | grep -v kern); do; pax -zrf $set; done.
  • postinstall check. Ce programme va vérifier que tout est bien en place. Exécuter ensuite la commande qu'indiquera postinstall.
  • On a désormais les exécutables, les bibliothèques, etc. Mais on n'a pas encore mis à jour la configuration de la machine. Pour cela, on va utiliser le programme etcupdate ainsi : etcupdate -s /var/tmp/netbsd5/etc.tgz -s /var/tmp/netbsd5/xetc.tgz. etcupdate est interactif et, pour chaque fichier de configuration pour lequel il y a une nouveauté, il demandra s'il doit garder l'ancien, installer le nouveau ou bien fusionner interactivement les deux (le système est nettement moins intelligent que son équivalent Debian, qui regarde si l'ancien fichier a été modifié localement, avant de poser la question).
  • Il ne reste plus qu'à redémarrer, sur le nouveau système.

À noter que cette opération n'a mis à jour que le système de base. Autre différence avec Debian, le système est coupé en deux, le système de base et les applications, qui se gèrent à la main, ou bien via un système comme pkgsrc.

Il existe d'autres méthodes pour mettre à jour un système NetBSD. Citons notamment la possibilité de démarrer la machine sur un CD-ROM NetBSD et de choisir l'option de mise à jour (merci à Marc Baudoin pour ses explications). Cela simplifie le processus mais ne peut pas s'effectuer à distance.

Une autre solution, pour ceux qui aiment le compilateur, est de compiler soi-même le système de base (attention, je ne l'ai pas fait moi-même, l'opération est trop lente et consomme trop de place disque, je recopie juste une documentation) :

  • cd /usr/src
  • cvs update
  • Éditer le fichier de configuration (ici, MAMACHINE) et ./build.sh -U -u kernel=MAMACHINE.
  • cp /netbsd /netbsd.old puis cp /usr/src/sys/arch/$(uname -m)/compile/obj/MAMACHINE/netbsd /netbsd
  • Redémarrer
  • cd /usr/src
  • ./build.sh -U tools
  • ./build.sh -U -u distribution

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)