Brancher une Soekris sur le LAN ou le serveur DHCP/TFTP est accessible (sur la soekris Net4801 seul le port “sis0/eth0” permet d'utiliser le pxeboot, il s'agit du premier port ethernet à côté du port Série).
Récuperer les fichiers pxeboot et bsd.rd (disponible par exemple sur ftp.openbsd.org/pub/OpenBSD/snapshots/i386/) et rendez les accessibles via le serveur TFTP.
Créer aussi à la racine de votre serveur TFTP, dans notre exemple /tftboot, un fichier etc/boot.conf pour automatiquement basculer l'affichage vers le port console et lancer l'installation.
$cat /tftboot/etc/boot.conf set tty com0 stty com0 19200 boot bsd.rd
note: il est aussi possible de passer manuellement ces arguments au prompt boot>.
Démarrer les services DHCP et TFTP necessaires au pxeboot.
Sur Debian, installer de preference le paquet tftpd-hpa ( qui vient lui meme en partie d'OpenBSD )
Brancher la Soekris et via le port console au demarrage presser ctrl+p pour entrer dans le mode “monitor”, puis tapper boot F0
note: a cet instant vous pouvez recuperer l'adresse MAC de l'interface eth0/sis0 a la ligne “CLIENT MAC ADDR: 00 00 XX YY ZZ XX” qui peut etre utile pour configurer votre serveur DHCP.
En avant pour une installation standard d'OpenBSD i386
L'idee principale est de faire tenir OpenBSD sur 512MB ou + (rien d'exeptionnel) et d'eviter d'ecrire sur le media CompaqFlash. pour ce second point nous disposons de 2 outils:
mfs, qui permet d'emuler un disque en memoire, et donc que l'on peut utiliser pour gérer les partitions qui doivent autoriser l'ecriture.
le “flag” noatime de mount(8) qui diminue enormement les ecritures sur le media en ne mettant pas jour les informations d'acces (access time).
Je prefere utiliser mfs pour /tmp et /var, l'ensemble des logs pourront etre redirigés vers un serveur Syslog distant. On peut peaufiner le travail pour le passage du /var en mfs par exemple en ne mettant que /var/tmp, /var/db, /var/run, /var/www/logs, /var/logs en mfs. Mais pour l'avoir testé je prefere avoir un gros mfs de 32M à gérer plutôt qu'une multitude de petites partitions. Il ne faut cependant pas oublier que la mémoire disponible sur la Soekris doit être assez grande pour contenir toutes les partitions mfs et pouvoir executer tout ce qu'elle sera charger de faire.
exemple de partitionnement:
$ df -kh Filesystem Size Used Avail Capacity Mounted on /dev/wd0a 68.7M 46.6M 18.7M 71% / /dev/wd0d 29.5M 5.6M 22.4M 20% /mfs /dev/wd0e 381M 181M 181M 50% /usr mfs:11926 30.0M 3.0K 28.5M 0% /tmp mfs:351 30.0M 5.1M 23.4M 18% /var</code>
exemple de choix de packages
mise en place des partitions mfs
Apres avoir installé les packages necessaires (comme net-snmp, pftop, pfstat, screen…) apres avoir configuré la crontab, apres avoir configuré les services chrootés comme bind ou un reverse proxy Apache, on peut travailler à mettre en place le /var en mfs en copiant son contenu dans la partition reservé à cet usage. Attention à partir de maintenant toute modification de /var devra se faire depuis /mfs/var.
$ sudo sh -c "find /var | cpio -dumpv /mfs/"
On peut alors configurer les mfs et en profiter pour mettre en place quelques flags speciaux:
$sudo vi /etc/fstab /dev/wd0a / ffs ro,noatime 1 1 /dev/wd0d /mfs ffs rw,nodev,nosuid,noatime 1 2 /dev/wd0e /usr ffs ro,nodev,noatime 1 2 swap /tmp mfs rw,nodev,nosuid,-s=64000 0 0 swap /var mfs rw,-P=/mfs/var,nodev,nosuid,-s=64000,noauto 0 0
la superbe option “-P” a ete ajoutee a la commande mount(8) dans OpenBSD 3.6: “-P file”
If file is a directory, populate the created mfs file system with the contents of the directory. If file is a block device, popu- late the created mfs file system with the contents of the FFS file system contained on the device.
en gros pas besoin de se casser trop la tete pour creer sa partition mfs, vous n'avez qu'a choisir le repertoire que vous voulez cloner, mount s'occupe de tout…
$cat /home/alf/dhcpd.conf subnet 192.168.10.0 netmask 255.255.255.0 { } host soekris { hardware ethernet 00:00:XX:YY:ZZ:XX; fixed-address 192.168.10.1; option subnet-mask 255.255.255.0; filename "pxeboot"; }
note: 00:00:XX:YY:ZZ:XX correspond ici à l'adresse MAC de l'interface sis0 de la soekris.
$sudo ifconfig fxp0 192.168.10.99 netmask 255.255.255.0
$sudo touch /var/db/dhcpd.leases
$sudo dhcpd -c /home/alf/dhcpd.conf fxp0
#tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot
$sudo pkill -HUP inetd
$sudo cu -l cua00 -s 19200
(-l cuaU0 s'il s'agit d'un adaptateur USB→serie)
Curiosité oblige, je me suis demandé combien de bande passante mon pauvre petit geode 266 Mhz (NET 4801) peut gérer avant de rendre l'âme et/ou d'être obliger de jouer du scalpel dans la config kernel (ou autre sysctl si possible).
Ben étonnamment, plus que je ne croyais (et avais lu ici et là dans les ML soekris : du genre 30 Mbps) : j'arrive à tirer du 60 Mbps à grand coup de netperf TCP_STREAM. Honorable pour un si petit nougat.
En fait, à grand coup de netperf d'un côté à l'autre de ma pauvre soekris configurée en bridge transparent avec PF activé ne servant qu'à scrub-er les lutins ('set optimization aggressive' et 'scrub in all' en entrée), j'atteinds les sommets suivants : de l'ordre de 60 Mbps (test netperf TCP_STREAM). Mes confs :
* /etc/hostname.sis1
up
* /etc/hostname.sis2
up
* /etc/bridgename.bridge0
add sis1 add sis2 up
* /etc/pf.conf
# OpenBSD /etc/pf.conf for a soekris transparent filtering bridge # for netperf testing purpose adm_if="sis0" br1_if="sis1" br2_if="sis2" bri_if="bridge0" set optimization aggressive set skip on l0 scrub in all # for now, no filtering (just for netperf testing purpose) pass in quick on $br1_if all pass out quick on $br1_if all pass in quick on $br2_if all pass out quick on $br2_if all pass in quick on $adm_if all pass out quick on $adm_if all # - The End
* et biensur les 'pf=YES' (/etc/rc.conf.local) et autre 'net.inet.ip.forwarding=1' (/etc/sysctl.conf), suivi d'un petit reboot des familles (bon moment pour ne pas oublier d'y mettre les câbles…).
Il est interressant de noter que le 'scrub in all' fait passer le débit de 51,… Mbps (mode bridge sans activation de PF) à 60 Mbps… comme quoi, parfait cette petite normalisation : à recommander à toute ménagère de moins de 50 ans !
Ce qui fait plafonner grâve la box, c'est le taux d'interruptions qui monte en flèches. Les mbufs par défaut (kernel GENERIC de plateforme i386) sont loin d'être épuisés. Pour les interruptions, le géode s'affolle à gérer les demandes d'interruptions des ifaces (sis) présentes sur la carte, sans savoir faire de l'interruption sharing (rien vu dans le BIOS de la carte mère Soekris 4801) ni même optimiser (le polling à la FreeBSD, c'est pas encore pour aujourd'hui chez puffy). Du coup, pas faute kernel, rien à optimiser… c'est le nougat qui nous limite (fait rare n'est-il pas ?)…
Donc voila amis lutin : si tu soekrises ton réseau, penses à rester humble sur la bande passante que tu vas lui faire bouffer :)
PS : Comme la prochaine NET 5501 dispose d'un processeur plus puissant, j'ose espérer qu'on pourra lui passer plus de lutins sans broncher… Dès que j'aurais une 5501 sous les mains, je retenterai le test biensur :)