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 ...
Enregistrer un commentaire