dimanche, octobre 10, 2010

FreeBSD developer summit 2010, Karlsruhe


Je viens de terminer mon premier FreeBSD developer summit que j'ai vraiment adoré.
La dernière conférence BSD à laquelle j'ai participé était la BSDCan 2007 et je n'avais pas participé au dev summit (d'ailleurs je ne savais même pas que ca existait à cette époque).
Mais qu'est ce qu'un dev summit exactement ?
Il s'agit d'une rencontre se déroulant sur 2 jours juste avant l'EuroBSDCon qui permet de rencontrer physiquement la majorité des personnes qui contribuent au projet FreeBSD (seul les contributeurs et quelques invités y participent).
Chacune des 2 journées du dev summit se décomposent en 3 parties:

  • Le matin, dans le grand amphi: Les personnes présentent l'état de leurs travaux (environ 10 minutes de présentation et 5 minutes de questions).
  • L'après midi a lieu différents ateliers sur des thèmes spécifiques.
  • Le soir: Le resto on l'on essaye de discuter d'autre chose que de «geekerie» (mais c'est très très dur vus le profil de la population présente ).

Le nombre de personne qui viennent de loin pour ces quelques jours (US et Japon en particulier) est impressionnant. On y rencontre bien sur pas mal de personne travaillant pour iXsystems (Warner Losh, Dru Lavigne, Kris Moore, Alexander Motin).

Voici quelques sujets abordés le matin:

  • ringmap : Une autre approche différente de «zero_copy» permettant d'éviter toute recopie interne d'un paquet lors de son traitement. Cette techno à été mise au point pour la capture de paquet à haut débit, mais elle va être très intéressante concernant les améliorations de performance de routage.
  • VPS: C'était LA présentation que j'attendais. Voir des VPS FreeBSD changer de serveur hôte sans impact sur les clients c'est très beaux, tellement que ca fait presque pleurer. Et surout on va pouvoir bientôt leur en foutre pleins sur la gueule à virtuozzo!!!
  • Amélioration de NanoBSD: Synthèse des différents problèmes que j'ai rencontré avec nanoBSD et les solutions proposées
  • FreeNAS: Warner Losh a présenté l'état actuel de la récupération du projet par iXsystems.
  • FreeBSD Virtualbox Image for Port Mainteners, basée sur FreeBSD -current elle inclue une tinder box pré-configurée pour pour valider ses ports FreeBSD (7,8,-current)… Il va falloir que je test ce truc.
  • La documentation: Comment simplifier la contribution à la doc ?
  • PC-BSD: Les utilisateurs de PC-BSD, par leurs usages différents remontent pas mal de bug non détecté par les admins systèmes de FreeBSD. Comment améliorer la synergie entre PC-BSD et FreeBSD ?
  • Et pleins d'autres sujets: la gestion des ports, des trucs concernant le noyau dont je ne comprends rien, etc… La liste est sur le wiki.


Au sujet les ateliers de l'après-midi, par exemple celui sur FreeNAS, on profite de la présence dans la même pièce de plusieurs personnes clés:

  • Warner Losh, qui récupère la responsabilité du projet chez iXsystems
  • Martin Matuska qui contribue à l'import ZFS dans FreeBSD
  • Alexander Motin qui développe entre autre le système CAM ATA… entre autre

Pour discuter «performance, tunning» et autre. Bref le résultat est «vivement FreeNAS 8 car le support du ZFS dans FreeBSD 7 n'est pas terrible du tout» (que soit au niveau des perfs et même de la stabilité).

J'ai aussi profité de la présence de Kris Moore (PC-BSD) pour qu'il me montre sa version de travail du futur PC-BSD (qui supportera plusieurs gestionnaires de bureau comme Gnome et LXDE4 et ne reste plus limité à KDE). Il lui reste à finir l'homogénéisation des différents thèmes et menu. Cela à l'air vraiment prometteur (résultats dans 1 ou 2 mois).

Conclusion: Je vais essayer de me refaire inviter pour celui de l'année prochaine. Car même pour un petit contributeur le dev summit permet d'échanger énormément en seulement 2 jours !
Le seul problème est que les journées se terminent tard (1h du matin), ce qui ne m'a pas laissé le temps d'aller visiter Karlsruhe :-(

vendredi, août 27, 2010

Mise à jour du firmware OBP d'une Sun Blade 100/150 par le réseau

La procédure officielle de mise à jour du firmware OBP nécessite d'installer le firmware (119235-01.zip) sur la partition / du Solaris, puis de lancer la mise à jour en démarrant sur le fichier de firmware.
Oui mais si l'OS installé sur la Sun Blade n'est pas un Solaris, comment je fait ?
Il est heureusement possible de faire cette mise à jour à travers le réseaux en utilisant:
  1. Un serveur rarp qui va donner une IP à la station Sun Blade
  2. Un serveur tftp sur lequel la Sun Blade ira chercher sa mise à jour
Voici comment le faire à partir d'une station FreeBSD…

On commence par noter l'addresse MAC de la Sun Blade, c'est facile, elle est affichée au démarrage:

Sun Blade 150 (UltraSPARC-IIe 650MHz), No Keyboard
Copyright 1998-2003 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.10.6, 1024 MB memory installed, Serial #57463918.
Ethernet address 0:3:ba:6c:d4:6e, Host ID: 836cd46e.

On va commencer par configurer notre serveur rarp pour qu'il donne une IP dans la même plage que votre interface Ethernet, exemple avec 192.168.100.49:

echo "0:3:ba:6c:d4:6e 192.168.100.49" > /etc/ethers

Puis on lance le serveur rarpd en précisant l'interface d'écoute, exemple avec bge0:

rarpd bge0

Reste à décompresser l'archive du firmware et mettre le fichier «flash-update-Blade100-Blade150-latest» dans le dossier /tftpboot.
Mais là, il y a une astuce:
Comment la sun blade, à son démarrage, va connaitre le nom du fichier à aller chercher ?
Suite à sa requêtte RARP, elle n'obtiendra qu'une seule information: Son addrresse IP.
Et c'est là qu'est l'astuce: La station va convertir son adresse IP en hexa, et aller chercher un fichier ayant comme nom cette valeur hexa.
Donc, dans mon exemple, j'ai choisi de donner l'IP 192.168.100.49, le nom du fichier que la station ira chercher sera donc:

echo 192.168.100.49 | awk -F . '{ printf "%02X%02X%02X%02X\n", $1, $2, $3, $4 }'

C0A86431

On créer une copie de flash-update-Blade100-Blade150-latest ayant ce nom:
cd /tftpboot
ln flash-update-Blade100-Blade150-latest C0A86431

Ne reste plus qu'a lancer le serveur tftpd en éditant le /etc/inetd.conf et en décommentant la ligne commencant par «tftp    dgram   udp ...»
Une fois modifié, on lance inetd:
/etc/rc.d/inetd onestart

C'est normallement terminé pour le serveur RARP/TFTP, mais on peux lancer un tcpdump pour suivre l'échange:

tcpdump -i bge0

Avant d'allumer la Sun Blade, on l'ouvre pour vérifier que les jumpers de la flash sont bien en position «écriture» (cf le fichier flashprom-jumper-diagram.ps inclus dans l'archive pour plus d'info).

Une fois le jumper en bonne position (vous pouvez le laisser définitivement comme ça), on démarre la Sun Blade, un petit break pour se retrouver dans l'OBP, et il suffit de lui demander de booter par le réseau:

boot net

Coté serveur RARP/TFTP, votre écran tcpdump devrais s'activer (c'est bon signe):

02:23:07.113609 ARP, Reverse Request who-is 192.168.100.49 tell 192.168.100.49, length 50
02:23:07.113962 ARP, Reverse Reply 192.168.100.49 at 192.168.100.49, length 28
02:23:07.114294 IP 192.168.100.49.59141 > 192.168.100.2.tftp:  17 RRQ "C0A86431" octet
02:23:07.121913 IP 192.168.100.2.24672 > 192.168.100.49.59141: UDP, length 516
02:23:07.128807 IP 192.168.100.49.59141 > 192.168.100.2.24672: UDP, length 4
02:23:07.128843 IP 192.168.100.2.24672 > 192.168.100.49.59141: UDP, length 516

Et du coté de la Sun Blade, le lancement de la mise à jour:

Standalone Flash PROM Update Utility, Rev. 3.0
            Ultra(tm) 1
            Ultra(tm) 2
            Ultra(tm) 5/10
            Ultra(tm) 30
            Ultra(tm) 60 / E220R / Netra T1120/1125
            Ultra(tm) 80 / E420R / Netra T1400/1405
            Ultra(tm) Enterprise(tm) 250
            Ultra(tm) Enterprise(tm) 450
            Sun Blade(tm) 100
            Sun Blade(tm) 1000
            Sun Blade(tm) 1500
            Sun Blade(tm) 1500 (Silver)
            Sun Blade(tm) 2500
            Sun Blade(tm) 2500 (Silver)
80R             Sun Fire (tm) 2\
            Sun Fire (tm) 480R / Sun Fire V490
            Sun Fire (tm) 880 / Sun Fire V890
            Netra(tm) T4
            Sun Fire (tm) V210/V240,Netra 240
            Sun Fire (tm) V440, Netra 440


This utility allows you to interactively update the firmware
revisions in specific system Flash PROM components.
type h for help, q to quit, Return or Enter to continue: |


Every precaution should be taken to prevent the loss of system
power during the Flash PROM programming process!

type h for help, q to quit, Return or Enter to continue: -


       Firmware Release(s)                Firmware Release(s)
 Currently Existing in the System      Available for Installation  /  Install?
---------------------------------- -------------------------------------------
OBP 4.10.6 2003/06/06 12:30        OBP 4.17.1 2005/04/11 14:31          no
2.0.1 2001/08/23 17:13          no POST |

Type sa if you wish to select all available firmware releases for installation.  Type h for help, quit to exit, or cont to continue: /
sa
=>  You've selected the same revision of POST firmware
=>  as that which is currently installed.
=>  You've selected the same revision of POST firmware
=>  as that which is currently installed.
=>  Do you REALLY want to do that?? (y/[n]) /
y

      Firmware Release(s)                Firmware Release(s)
 Currently Existing in the System      Available for Installation  /  Install?
---------------------------------- -------------------------------------------
OBP 4.10.6 2003/06/06 12:30        OBP 4.17.1 2005/04/11 14:31          YES
POST 2.0.1 2001/08/23 17:13        POST 2.0.1 2001/08/23 17:13          YES

if you wish to select all available firmware releases for 
installation.  Type h for help, quit to exit, or cont to continue: -
cont
The Flash programming process is about to begin.

-ype h for help, q to quit, Return or Enter to continue: \


Erasing the top half of the Flash PROM.
Programming OBP into the top half of the Flash PROM.
Verifying OBP in the top half of the Flash PROM.

Erasing the bottom half of the Flash PROM.
Programming OBP into the bottom half of Flash PROM.
Verifying OBP in the bottom half of the Flash PROM.

Erasing the top half of the Flash PROM.
Programming POST into the top half of Flash PROM.
Verifying POST in the top half of the Flash PROM.

Programming was successful.

Resetting ...