samedi 21 mars 2009

Boot sur OpenGate et débuts sous OpenBSD

On m'a donné il y a plusieurs mois une OpenGate — un mini PC, projet de Neuf — qui était restée dans son carton.
J'ai souhaité la ressortir pour faire mes premiers vrai pas dans le monde « unix », mais il s'est averé que l'OS présent, destiné aux débutants, empêchait toutes modifications du système.
Devant le grand nombre de distributions linux, je me suis tourné vers les *BSD découvertes un peu avant. C'est OpenBSD qui sera choisie :).

Cette OpenGate ne contenant qu'une mémoire flash de 512Mb comme disque dur, j'ai voulu installer le système sur une clé USB (qui pourrait en plus être transportable).

Une clé USB Bootable


Le problème que j'ai rencontré, c'est que l'OpenGate ne supporte que des partitions de type DOS (?) pour pouvoir démarrer sur la clé USB; si une partition d'un autre type est active, le gate se freeze sur le logo du BIOS.
Cela pose donc probleme pour pouvoir lancer une clé usb contenant un ArchLinux, ou encore une clé usb ayant un système sur une partition non DOS installé.

Il faut donc faire appel à une partition DOS et un bootloader pour régler le problème.
Dans mon cas, une partition de 32Mo (me permettant d'ajouter des outils comme Memtest, memdisk, cdrom44.fs (from cdemu44.iso - pour OpenBSD), et des fond d'écran), contenant un Grub.

Ensuite après avoir installé le système voulu, il reste à modifier le Menu.lst pout y ajouter le système; pour OpenBSD c'est :
title OpenBSD USB
 root (hd0,3,a)
 chainloader +1
Il existe bien une commande Grub pour les noyaux BSD, mais ça semble ne pas fonctionner; le bootloader OpenBSD semble s'y retrouver tout seul dans les disques :).

Le système


En utilisant un autre PC et le CD OpenBSD, l'installation se fait de mémoire sans problème.
Mais il reste à régler un problème : le fstab, qui contient la liste (fixe) des partitions à monter (dynamique, selon le système).
Pour cela, j'ai fais une modification du /etc/rc, après swapctl -A -t blk, j'ai ajouté :
#Perso
#Mount RamFS (2Mo) in /etc/ramfs
mount_mfs -s 4536 -m 0 swap /etc/ramfs 2>/dev/null >/dev/null
#Make fstab
hd=$(dmesg | awk '/root on/{ print $3 }' | sed -e "s/a//" | tail -n 1)
sed -e "s/USB_/${hd}/" /etc/fstab.ref > /etc/ramfs/fstab
  #Perso
et remplacé umount -a >/dev/null 2>&1 par umount -a -t nomfs >/dev/null 2>&1 pour empêcher de démonter la partition en RAM.
Cela créé donc une partition en RAM de 8Mo (?), pour avoir une partition "writable", qui sera montée dans /etc/ramfs, et récupère dans le log dmesg le disque sur lequel le système a booté jusque la, pour remplacer dans le fstab de référence le mot "USB\_" par ce disque.
Il faut donc aussi :
  • créer /etc/ramfs/ et y placer une copie du fstab actuel (au cas où le montage rate)
  • renommer fstab en fstab.ref et y ajouter "USB\_" où cela est necessaire
  • créer un lien symbolique de /etc/fstab vers /etc/ramfs/fstab

La clé USB peut normalement maintenant booter n'importe où :).

Pour avoir une interface graphique, on peut créer un /etc/rc.conf.local contenant
xdm_flags=""
etc ...

Les problèmes

  • la clé usb : je me suis rendu compte en voulant me servir un peu de cette OpenBSD qu'extraire une archive contenant plein de fichiers (source de x11vnc, l'archive des ports) était très long, et peut mener au plantage du système après plusieurs heures ; j'imagine que c'est du à la clé usb ..
  • j'ai d'abord tenté d'installer une FreeBSD (qui m'attirait plus), mais le temps du chargement du kernel est très long (pour la version 7.1 en tout cas), beaucoup moins avec OpenBSD, même si cette étape peut bloquer quelques minutes, ou pas si j'appuis sur une touche (??).

Les bidouillages


Utiliser X11VNC comme "écran"


Il faut installer X11VNC et ajouter vers la fin de /etc/X11/xdm/Xsetup_0 :
/usr/local/bin/x11vnc -forever -bg -o /var/log/x11vnc.log
ou même :
/usr/local/bin/x11vnc -forever -gone 'dtaction LockDisplay' -passwd <pass> -ncache -http -bg -o /var/log/x11vnc.log
qui ajoute :
  • gone 'dtaction LockDisplay' ne fonctionne pas, à verifier
  • passwd <pass> : defini un pass pour l'accès
  • ncache : créé un cache des zones de l'écran, peut gêner selon les viewers
  • http : si la version le permet, créé un serveur web (port 5800 ?) avec une page web contenant un viewer en java



Obtenir un écran avec des caractères bizarres et clignotant


/!\ Risqué ?
Il faut charger en mémoire avec memdisk l'un des iso ou fs proposés par le ftp openbsd, ou l'un des fs extrait des iso openbsd ; le résultat :
http://alex.twb.fr/OpenGate/DSCF0838.JPG
http://alex.twb.fr/OpenGate/DSCF0837.AVI

Conclusion


Voila, je voulais partager mon expérience de boot avec l'OpenGate et de 1ers pas avec OpenBSD; j'espère que ce post servira (même si je n'ai pas détaillé certaines étapes).
Je rajoute que même si j'ai deja un peu touché au monde unix, je suis encore un « Vista user ».

Je joins :
  • mon rc (v.4.4) modifié et fstab.ref ;
  • mon menu.lst ;
  • mon fichier OpenGate.txt, qui me sert de bookmark/bloc note ;
  • une page web disparue du net.

Merci à un certain « Pierre B. » pour la commande extractant le disque du dmesg, et aux personnes de #EasyGate (FreeNode), #FreeBSD (EpikNet) =).

Fichiers joins :


OpenBSD.zip
OpenGate.pdf

1 commentaire:

Alexandre L. a dit…

Au sujet de FreeBSD, cela se résoud à l'aide de

#Clavier
hint.atkbd.0.disabled=1
#Souris
hint.psm.0.disabled=1
#Driver global ?
hint.atkbdc.0.disabled=1

dans /boot/loader.conf (en effet, il n'y a pas de ports PS/2 (clavier USB) et le noyau semble les attendre).

On peut aussi rajouter

#Good time counter
kern.timecounter.hardware=i8254

Enregistrer un commentaire