NetBSD sur Soekris net4801
J'ai donc une vielle carte Soekris net4801 qui traîne et les options pour l'utiliser se réduisent: la mémoire de 128 MB devient limite, et le processeur, équivalent à un Pentium, n'est plus supporté par Debian. Je me suis donc tourné vers autre chose. FreeBSD a des besoins relativement élevés (96 MB RAM et 1.5 GB d'espace disque) et une rapide tentative avec OpenBSD s'est soldée par des freezes après quelques minutes d'activité. Je me suis donc tourné vers NetBSD, en version 8.0 à l'heure où j'écris ces lignes.
Le nécessaire
- Un serveur DHCP
- Un serveur TFTP
- Un système NetBSD (une VM par exemple) - le système de base suffit
- Un terminal et un câble série null-modem
- Le chargeur d'amorçage PXE de NetBSD
- Le kernel d'installation
- Une carte Compact Flash
Quelques remarques:
- DHCP, TFTP et le terminal ont déjà été décrits lors de l'installation de Debian via PXE.
- Une carte Compact Flash rapportant 1024 cylindres ou plus peu perturber les chargeurs d'amorçage sur la Soekris et mener à un échec du démarrage. J'ai utilidé une carte de 4 GB.
Les fichiers d'amorçage
Depuis ma première utilisation de TFTP, Debian est passée en version 9.0, et la configuration par défaut d'atftpd sert ses fichiers depuis /srv/tftp, tel que configuré dans /etc/defaults/atftpd.
Le kernel (netbsd-INSTALL.gz) peut être copié tel quel, simplement renommé en netbsd. Il contient à la fois le kernel et un ramdisk avec l'installeur.
Le chargeur d'amorçage (pxeboot_ia32.bin) doit d'abord être configuré pour indiquer à l'installeur d'utiliser le port série comme console, en utilisant la vitesse configurée dans le BIOS:
- Copier le fichier vers un système NetBSD.
- exécuter la commande installboot -e -v -o speed=0,console=com0 pxeboot_ia32.bin (ça peut être fait en tant que simple utilisateur).
- Transférer le fichier ainsi modifié vers /srv/tftp sur le serveur TFTP.
Les paramètres DHCP
Outre les paramètres classiques (passerelle, masque de sous-réseau, adresse IP, une configuration de ce genre est nécessaire:
host soekris { hardware ethernet 00:00:24:c5:39:28; fixed-address 192.168.1.2; server-name "192.168.1.1"; next-server 192.168.1.1; if substring (option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000" { filename "pxeboot_ia32.bin"; } elsif substring (option vendor-class-identifier, 0, 17) = "NetBSD:i386:libsa" { if filename= "boot.cfg" { filename "tftp:boot.cfg"; } else if filename = "netbsd" { filename "tftp:netbsd"; } } }
La raison de cette complexité est qu'après la requête DHCP initiale, pxeboot_ia32.bin va exécuter des requêtes supplémentaires pour obtenir les autres fichiers nécessaires au démarrage.
L'installation
Rien de particulier. J'ai exécuté l'installation avec un port série à 9600 bps.
- Démarrer la Soekris.
- Appuyer sur CTRL-P pour entrer dans le setup du BIOS.
- Taper boot f0 pour démarrer via le réseau.
Il y a assez peu à commenter sur l'installation. J'ai limité l'installaion aux sets de base et aux pages de manuel, configuré l'interface réseau primaire (sip0) via DHCP, activé les services SSH, NTP et mDNS et désactivé tous les autres.
Pour le partitionnement, le défaut est tout dans une partition unique sauf 128 Mo pour le swap. Le disque wd0 va être partitionné avec une seule partition (au sens du MBR), elle même divisée en plusieurs sous-partitions: wd0a pour la racine, wd0b pour le swap, wd0c représente toute la partition DOS et wd0d tout le disque.
Après le redémarrage, j'ai ajouté une ligne du genre hostname=un nom pour configurer le hostname du système.
Je peux maintenant connecter la Soekris à mon réseau principal, où je pourrai la retrouver via son nom et m'y connecter par SSH. Quelques taches vont prendre du temps lors des premiers démarrages: la création de la clé SSH et la génération des pages de man. Au total, la partition racine est occupée à hauteur de 376 Mo, dont 40 MB de pages de man et 95 MB de fichiers d'installation dans /usr/INSTALL.