OpenBSD sur carte Alix 2D3

Installation par flashdist (version modifiée ici) d’un OpenBSD sur une carte flash 1Go.

Les points de montage /dev et /tmp sont montés sur des disques RAM (commande mount_mfs), /var est un lien symbolique sur /tmp/var et l’ensemble de la carte flash est en read-only.

Un graphique Cacti permet de s’assurer de l’espace disponible en disque RAM.

Collecte des logs de connexions

Lancement du syslogd avec le paramètre -u permettant la collecte des logs des passerelles; ces logs sont filtrées par un script Perl éliminant les éléments inutiles, ce qui donnent des fichiers plus compacts.

La commande newsyslog, lancée toutes les heures par cron, assure toutes les nuits la rotation des logs, qui sont alors archivées et sauvegardées sur une machine distante par un script de sauvegarde, lancé également par cron.

Installation de la surveillance de l’onduleur

Le package nut permet le monitoring de l’onduleur, dans notre cas un MGE Ellipse 1500 ASR.

Il n’est pas possible d’utiliser le cordon USB, l’onduleur n’étant pas reconnu par le système comme un device hiddev0 mais comme ugen0, ce qui ne permet pas le fonctionnement de nut.

ohci0 at pci0 dev 15 function 4 "AMD CS5536 USB" rev 0x02: irq 15, version 1.0, legacy support
ehci0 at pci0 dev 15 function 5 "AMD CS5536 USB" rev 0x02: irq 15
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 "AMD EHCI root hub" rev 2.00/1.00 addr 1
...
usb1 at ohci0: USB revision 1.0
uhub1 at usb1 "AMD OHCI root hub" rev 1.00/1.00 addr 1
...
ugen0 at uhub1 port 2 "MGE UPS SYSTEMS ELLIPSE" rev 1.10/42.41 addr 2

Ce qui donne le message d’erreur suivant au lancemant de nut :

Network UPS Tools: 0.29 USB communication driver - core 0.32 ()
No matching HID UPS found
Driver failed to start (exit status=1)

Il faut donc utiliser le cable série, en désactivant la console dans /etc/ttys

...
# tty00 "/usr/libexec/getty std.19200"  vt100   on  secure
tty00   "/usr/libexec/getty std.9600"   unknown off
...

Correctif : le driver usbhid-ups fonctionne sous OpenBSD, voir cet article.

Utilisation des leds

Les ports gpio doivent être initialisés au démarrage avant de d’établir le securelevel à 1, en rajoutant les lignes ci-dessous dans le script /etc/rc (extrait d’un OpenBSD 4.5) :

echo -n "Configuring the leds : "
/usr/sbin/gpioctl gpio0 25 set out led2
echo -n "                       "
/usr/sbin/gpioctl gpio0 27 set out led3

juste avant la ligne

[ -f /etc/rc.securelevel ] && . /etc/rc.securelevel

Un exemple d’utilisation, faire clignoter la led 2 à la seconde si la gateway est accessible :

#!/bin/sh
GATEWAY=$(/sbin/route -n show -inet | /usr/bin/sed -ne 's/^default *\([0-9\.]*\).*$/\1/p')
DELAI=1
if [ "x$GATEWAY" != "x" ]; then
   while : ; do
      gpioctl -q gpio0 led2 on
      ping -c 1 -t 1 $GATEWAY > /dev/null 2>&1
      ERR=$?
      sleep $DELAI
      if [ $ERR -eq 0 ]; then
         gpioctl -q gpio0 led2 off
      fi
      sleep $DELAI
   done
else
   echo "Gateway not found"
fi