Boitier Soekris

De OpenWikiBSD
Aller à : navigation, rechercher

24/04/2017 : Soekris ferme boutique ! Trop peu de vente, trop de concurrence.. Snif ! [1]

Intro

Il existe un certain nombre de méthodes d'installation tant de linux que d'OpenBSD sur ces boitiers. Google est votre ami.

J'ai tenté un système plus basique qui, moyennant quelques précautions est assez pratique et ne demande pas de disposer d'un serveur dhcp pxe avec image de boot. (Il faut juste VMWare pour une CF et un portable ancien (port IDE) pour un disque, quand même..)

MaJ : La méthode PXE/DHCP/TFTP est quand même plus simple...

Remarques sur le matériel

  • Les specs
  • La conso électrique est TRES réduite (moins de 10W)
  • Pas de clavier, pas de souris, pas d'écran...
  • Boot sur un disque IDE 2'1/2
    • Le disque est vu en hda (Linux) ou wd0 (OpenBSD)
  • boot sur carte CF
    • La CF est vue en hdb (Linux) ou wd1 (OpenBSD)

Boot

Depuis la version [ http://soekris.com/media/software/changelog.txt 1.41] du comBIOS, il est possible de démarrer sur de l'USB, CDROM par exemple. En revanche, il faut que votre lecteur USB soit alimenté, car le port USB exterieur ne débite pas forcément beaucoup.. Attention, ceci ne concerne pas les 4801 qui ne pourront jamais booter sur de l'USB en flash.

Réglages BIOS

Principe

Disque dur

  • On insère le disque 2'1/2 dans un portable et on fait une install classique
  • On effectue les modifs nécessaires ici

Compact Flash

  • On utilise un adaptateur CF-USB et on fait une install dans VMWare en faisant reconnaitre la CF comme un disque IDE

Sous un hôte Linux, j'ai eu un souci de mise en place de cette méthode. Impossible d'accéder au raw device:Insufficient permission to access file

Solution:

En root sudo vmware

  1. Add Hardware Wizard
  2. Hard disk
  3. Use Physical disk
  4. Device : /dev/sdX : Attention à ne pas vous planter là-dessus, dmesg sur l'hôte est votre ami.
  5. Use entire disk
  6. Valider
  1. Faites l'install su la CF (vue comme un disque IDE sous VMware)
  1. Fermez VMware
  1. Sortez et réinsérez la CF.
  1. elle est vue comme un FS linux classique. Faites les modifs, maintenant.


  • Ou on utilise un adaptateur CF-IDE et on revient au cas précédent (Disque IDE 1'1/2). Méthode non testée

Modifications post install

Disque dur

Compact Flash

  • Après la fin de l'install dans VMWare, il faut effectuer les modifs suivantes :

Linux

    • /etc/inittab
#Au lieu de 
1:2345:respawn:/sbin/getty 38400 tty1

#Mettre

1:2345:respawn:/sbin/getty  -L 19200 ttyS0 ansi

    • /boot/grub/menu.lst

 ## ## End Default Options ##

#Ajouter :
default 0
timeout 5
serial --unit=0 sspeed=19200 --word=8 --parity=no --stop=1
terminal --timeout=0 serial

title          Debian GNU/Linux, kernel 2.6.26-1-686-Soekris
root           (hd0,0)
kernel         /boot/vmlinuz-2.6.26-1-686 root=/dev/hdb1 ro  console=tty0 console=ttyS0,19200n8 acpi=off
initrd         /boot/initrd.img-2.6.26-1-686
savedefault
boot
 


Différences entre les modèles Soekris

  • Les cartes réseaux sont en sisX (Realtek) pour les modèles 4801
  • Les cartes réseaux sont en emX (Intel) pour les modèles 6501
  • Tous les Soekris sont à utiliser préférentiellement en i386. Il n'est pas impossible que l'architecture amd64 fonctionne sur les 6501; sans forcément de gain notable néanmoins.: [2]

OpenBSD en PXE

Méthode actuelle (post 5.5)

Désormais la config se fait une fois sur le serveur OpenBSD (plutôt) et l'install se fait automatiquement en PXE sur le client.

Quasiment tout vient d'ici : [3], mais pas complétement.

  • Trouver l'adresse MAC du boitier Soekris

Enlever la carte CF et booter en PXE sur le port eth0

Les logs du serveur dhcp vous donneront l'info.

pkg_add -v wget
  • Modifier /etc/dhcpd.conf et ajouter
 filename "auto_install";
 next-server 10.0.0.1;

voire

host soekris {
hardware ethernet 00:00:XX:YY:ZZ:XX;
fixed-address 10.0.10.1;
option subnet-mask 255.255.0.0;
filename "pxeboot";
}
 /etc/rc.d/dhcpd restart
 mkdir -p /tftp/etc
 cd /tftp/
 wget http://mirrors.ircam.fr/pub/OpenBSD/6.1/i386/pxeboot
 wget http://mirrors.ircam.fr/pub/OpenBSD/6.1/i386/bsd.rd
 ln -s pxeboot auto_install
 mv bsd.rd bsd
 echo "
  stty com0 19200
  boot bsd
  " > /tftp/etc/boot.conf 
 echo 'tftpd_flags="-4 /tftp"' >> /etc/rc.conf.local
 /etc/rc.d/tftpd start
 cd /var/www/htdocs/
  wget -nH -r http://ftp2.fr.openbsd.org/pub/OpenBSD/6.1/i386/{BUILDINFO,SHA256,SHA256.sig,INSTALL.i386,base61.tgz,bsd,bsd.rd,bsd.mp,comp61.tgz,man61.tgz,xbase61.tgz,xfont61.tgz,xserver61.tgz,xshare61.tgz}
 echo 'nginx_flags=""' >> /etc/rc.conf.local
 /etc/rc.d/nginx start

Ajouter

autoindex on;

à /etc/nginx/nginx.conf

/etc/rc.d/nginx restart 

La | doc

touch  /var/www/htdocs/@MAC-install.conf
 echo "System hostname =  FQDN-SRV
Password for root = PASS
Network interfaces = vi0
IPv4 address for em0 = dhcp
Setup a user = USER
Password for user = PASS
Public ssh key for user = ssh-ed25519 AAAAC3NzaC1...g3Aqre puffy@ai 
What timezone are you in = Europe/Paris
Location of sets = http
Server = 10.0.0.1
" > /var/www/htdocs/install.conf

Ce qui permet d'avoir une config par client PXE.

touch /var/www/htdocs/pub/OpenBSD/5.6/i386/install.site
echo "
#!/bin/sh
set -x
export PKG_PATH=ftp://ftp.fr.openbsd.org/pub/OpenBSD/`uname -r`/packages/`uname -m`
pkg_add -r bash wget zip vim--no_x11 rsync-- munin-node
" >   /var/www/htdocs/pub/OpenBSD/5.6/i386/install.site

Rien à faire, et en plus les packages s'installent !

Pour le moment, on ne peut pas choisir l'état du disque dur en terme de répartition des partitions.

Attention à bien remettre le boot par défaut sur la CF sinon, vous allez boucler sur une réinstallation..

Debug

/etc/random.seed no such file or directory : -> [4]

mkdir -p /tftp/etc
mkfifo /tftp/etc/random.seed
while true; do dd if=/dev/random count=1 > /tftp/etc/random.seed 2>/dev/null; done &

Soekris bloqué sur le chargment du noyau:

>> OpenBSD/amd64 PXEBOOT 3.23

La réponse est simple, non...c'est du i386, benêt ;-)


Bloqué à entry point at 0x200120

Plusieurs possibilités :

    • Vous avez fait une install en VM et modifié le nom du périphérique.[5]
    • Vous avez fait une boulette dans la config du serveur tftp

open( ) Operation not permitted

open(tftp:/etc/boot.conf): Operation not permitted
boot>

N'oubliez pas de mettre le "-s" dans le serveur tftp afin de rendre l'appel au fichier relatif et non absolu.

Méthode obsolète

Configuration du serveur de boot

Lien d'origine avec une modif

On va partir sur l'installation sur une CF (2Go). Il faut :

  1. Un serveur de boot PXE (Debian/Squeeze):
apt-get install dhcp3-server tftpd rarpd openbsd-inetd

Modifs dans /etc/dhcp/dhcpd.conf

option domain-name "schwarz-fr.net";
option domain-name-servers @IP;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet @LAN netmask 255.255.255.0 {
  range @IP1 @IP2;
  option routers @IP;
}

host soekris {
  hardware ethernet @MAC;
  fixed-address @IP;
  option host-name "soekris";
  next-server @IP;
  filename "pxegrub.sis";
}

echo "tftp            dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd -s /srv/tftp/"
>> /etc/inetd.conf
mkdir /srv/tftp
wget 	http://www.berger.to/openbsd/pxegrub.sis-tty-19200.gz
gzip -d pxegrub.sis-tty-19200.gz
mv pxegrub.sis-tty-1920O /srv/tftp/pxegrub.sis
wget http://ftp.fr.openbsd.org/pub/OpenBSD/4.9/i386/bsd.rd
mv bsd.rd /srv/tftp/
echo "@MACSOekris  @IPSoekris" >> /etc/ethers


echo "default=0
timeout=5
serial --unit=0 --speed=19200
terminal serial
title soekris
kernel //bsd.rd
root (nd)
boot
" > /srv/tftp/grub.conf

/etc/init.d/openbsd-inetd restart
/etc/init.d/isc-dhcp-server restart

Côté client PXE
  1. Un cable série (F) - Série (F)
  2. un emulateur de terminal (minicom est parfait)

On se connecte au port série : minicom -s qui va configurer le bon port série (/dev/tty0 chez moi et pas /dev/tty1, je n'ai qu'un seul port série sur le portable) Un lien

sudo minicom -s

Port série /dev/ttyS0

Paramètres 19200 8N1

( CTRL+A Z P A Entrée)

Si la version de minicom ne propose pas 19200, sortez de minicom et éditez /etc/minicom/minirc.dfl

  • Les paramètres de boot sont :
    • 81 : disque dur
    • 80 : CF
    • F0 : PXE
  • Attention, seul le port eth0 permet le boot PXE!
  • Activez le boot PXE
CTRL+P
boot F0

Puis vous faites l'install normale de l'OS.

Si au boot, vous rencontrez

Invalid system disk
Replace the disk, and then press any key

On reboot , puis Ctrl-P

 set BootDrive=81 80 F0 FF
reboot

Au reboot, toujours connecté en port série, il faut activer le reboot par défaut sur la CF:

set BootDrive=80 F0
reboot

et c'est parti.

Clavier inutilisable sous Minicom

Désactivez le contrôle de flux matériel

WatchDog

Le boîtier Soekris dispose d'un watchdog matériel. Ce dispositif permet de redémarrer matériellement et sans être OS-dépendant le boitier. Pour cela, un démon qui tourne sur l'OS vient remettre à zéro un timer à intervalle de temps régulier. Quand ce timer matériel arrive en bout de course ( 30s par défaut), il considère l'OS comme figé et redémarre brutalement la machine. Côté OS, le démon vient (tous les TTL/3, soit 10s par défaut) se rappeler aux bons souvenirs du matériel.

La réalisation est simplissime :

  • Vérifier les timers:
sysctl -a |grep watchdog
kern.watchdog.period=30
kern.watchdog.auto=0
  • Lancer la partie OS
/usr/sbin/watchdogd

A ajouter au /etc/rc.conf.local pour action au redémarrage

  • Tester:
kill -9 `ps ax |grep watchdogd |cut -d" " -f1`