Le vendredi 2 novembre 2007 par Alan Garcia

Installer Debian sur une Sun V210


Introduction

Pour installer une machine par le réseau, la méthode la plus usité est celle du boot PXE. Ce n’est pas celle que nous emploieront ici, pour la bonne et simple raison qu’elle ne marche apparemment pas :)

Pour installer la machine, nous allons utiliser rarpd.

Rarpd  is  a  daemon  which responds to RARP requests.  RARP is used by
some machines at boot time to discover their IP address.  They  provide
their  Ethernet  address and rarpd responds with their IP address if it
finds it in the  ethers  database  (either  /etc/ethers  file  or  NIS+
lookup) and using DNS lookup if ethers database contains a hostname and
not an IP address.  By default rarpd also checks if  a  bootable  image
with  a name starting with the IP address in hexadecimal uppercase let-
ters is present in the TFTP boot directory (usually /tftpboot )  before
it decides to respond to the RARP request.

Rarp fonctionne de la manière suivante :

  • la machine fait une annonce sur le réseau en demandant des informations ARP/RARP
  • le serveur rarp regarde si il connait une associations MAC/IP pour cette machine
  • le cas échéant, il répond à la machine
  • la machine se connecte au serveur rarp en tftp, et télécharge l’image de boot
  • la machine boot

Architecture

Nous verrons comment installer la sun dans le cas suivant : Vous avez un réseau avec internet et un serveur DHCP. Vous avez branché sur ce réseau la Sun et votre machine personnelle (que nous appelleront machinette). Votre machine personnelle servira de serveur rarpd et à se connecter sur le port Console de la Sun.

La Sun, une belle bête

Tout d’abord, familiarisons nous avec la Sun.

La Sun a une chose particulièrement attrayante en tant que serveur, c’est le LOM. Pour simplifier, on va dire que le LOM est le bios de la Sun, sauf qu’il est accessible par l’interface console, à distance. Ainsi, alors que la Sun est éteinte, vous pouvez vous connecter sur le LOM, et l’allumer. Puis, alors qu’elle est allumé, vous pouvez vous connecter sur le LOM et l’éteindre, et ce même si elle est planté.

Pour se connecter au LOM, deux outils existe : un simple (screen), et un puissant (minicom). Ici nous verrons le simple, les aficionados de la ligne de commande n’auront aucun mal à maitriser minicom par eux-même.

Nota : La Sun a un cycle de boot assez lent : elle test soigneusement sa ram, très soigneusement ses disques dur, extrêmement soigneusement ses processeurs... Le but sera donc de la démarrer "matériellement" une fois pour toute, puis de faire des redémarrages "légers" grâce au LOM. 

Quelques liens pour les curieux :

Du coté de chez Sun

La sun est relié par le cable adéquat à votre port série. Si vous utilisez un adaptateur série vers USB, regardez dmesg pour savoir quel est le port exact utilisé. Nous allons demander à screen d’ouvrir la console se trouvant sur /dev/ttyS0 :

# screen /dev/ttyS0

Nota : Si rien ne s’affiche dans le screen, n’hésitez pas à démarrer la machine manuellement une première fois avec le bouton power (ce n’est en théorie pas nécessaire).

Si jamais vous voulez forcer screen à quitter, "[ctrl] + a " puis "k". Ceux qui veulent travailler avec minicom peuvent vouloir que screen utilise une autre combinaison de touche que "[ctrl] + a" (par exemple "[ctrl] + x"), il suffit de lancer avec le paramètre -e :

# screen -e^Xx /dev/ttyS0

Lorsque tout fonctionne, vous devez avoir un écran de login sur votre shell, de type :

xxx console login:

C’est le login de solaris. Aucun intérêt.

Pour basculer du login Solaris au LOM, il suffit de faire #. (dièse point), un login plus sympathique apparait alors :

Sun(tm) Advanced Lights Out Manager 1.3 (jobs)

Please login:

Ici, utilisez vos login et mot de passe pour vous connecter.

Nous voilà dans le LOM, un help vous indiquera les commandes, voyons les principales :

help
console
poweron
poweroff
bootmode
password
reset
logout

La plus intéressante de ces commandes est bootmode, c’est elle qui nous permettra de choisir la priorité de boot. Par exemple le réseau, ça parait bien.

sc> help bootmode
This command provides control over the managed system OBP firmware behavior during system initialization.
sc> bootmode pan
Error: Invalid command option
Usage: bootmode [normal|reset_nvram|diag|skip_diag|bootscript="string"]
sc> bootmode bootscript="boot net"
sc> bootmode
Bootmode: normal
bootscript="net"
sc>

Attention : au bout de quelques minutes, le bootmode revient automatiquement à "normal" sans "net".

Allez hop, on test : on allume la bête et on bascule du LOM vers la console :

sc> poweron
sc> console

Lorsque vous êtes connecté au système d’exploitation, le seul choix n’est pas de repasser sur le LOM complètement : vous pouvez aussi administrer l’OS actif. Pour cela, envoyez un break (dans screen "[ctrl] + a" puis "b"). Cette commande met en pause l’OS, jusqu’à ce que vous le relanciez avec la commande "go".

Configuration de Rarpd

Nous avons vu les opérations de base avec la Sun, il n’y a pas besoin de plus. On va commencer à configurer machinette alors.

# apt-get install rarpd

Pour configurer rarpd correctement, il faut l’adresse MAC de la machine. Nous allons donc la faire démarrer en boot réseau, et surveiller les logs de machinnette pour savoir quelles MAC ont demandé à profiter d’un boot réseau.

Nota : lorsque la Sun démarre, elle indique son adresse MAC, vous pouvez aussi la récupérer par là (mais nous aurons de toute façon besoin des logs).

# /etc/init.d/rarpd start
# tail -f /var/log/syslogn

Démarrons la Sun en boot réseau, connectons nous sur la console, et attendons.

Boot device: /pci@1f,700000/network@2  File and args:
Timed out waiting for Autonegotation to complete
Check cable and try again
Link Down

Et oui, il y a plusieurs ports réseau sur la Sun, et nous l’avons branché sur le mauvais. Branchons sur le port 0 et tout marchera mieux. Mais une fois le branchement fait, il nous faut redémarrer la Sun. Pour cela, au lieu de faire un démarrage "à froid", envoyez un break (voir plus haut), puis :

SC Alert: SC Request to send Break to host.
/
Type  'go' to resume
{1} ok boot net

Cela vous permettra de faire des redémarrage rapide et propre.

Nous redémarrons donc :

Sun Fire V210, No Keyboard
Copyright 1998-2003 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.11.4, 2048 MB memory installed, Serial #59193085.
Ethernet address 0:3:ba:87:36:fd, Host ID: 838736fd.

Executing SC bootscript:
Boot device: /pci@1f,700000/network@2  File and args:
1000 Mbps FDX Link up
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet

Et dans /var/log/syslog, tadaaan :

Oct 30 13:42:10 v440-1 rarpd[7933]: RARP request from 00:03:ba:87:36:fd on eth14
Oct 30 13:42:10 v440-1 rarpd[7933]: not found in /etc/ethers

Rarpd cherche dans /etc/ethers à quelle IP correspond cette adresse MAC.

Nota : Pour être vraiment propre, l’idéal est d’en profiter pour dire à votre serveur DHCP de donner cette même IP au serveur.

# cat >> /etc/ethers
00:03:ba:87:36:fd 192.168.1.9
^D

On redémarre rarpd :

invoke-rc.d rarpd restart

Et le log nous dit :

Oct 30 13:43:31 v440-1 rarpd[8128]: RARP request from 00:03:ba:87:36:fd on eth14
Oct 30 13:43:31 v440-1 rarpd[8128]: RARP response to 00:03:ba:87:36:fd 192.168.1.9 on eth14

Et pourtant, la Sun continue ses "Timeout waiting for ARP/RARP packet"... L’explication est simple : rarpd voit qu’il n’y a pas de serveur tftp, il ne perd donc pas son temps à répondre.

Il faut donc installer un serveur tftp, en l’occurrence tftpd :

# apt-get install tftpd

Tftpd est lancé par inetd, et a rajouté une ligne de configuration dans ce dernier. Il faut donc relancer inetd pour qu’il prenne en compte la modification.

Nous redémarrons encore une fois la Sun, toujours en boot réseau. Elle boot, et syslog nous indique :

Oct 30 15:32:43 v440-1 tftpd[8740]: tftpd: trying to get file: C0A80109
Oct 30 15:32:43 v440-1 tftpd[8740]: tftpd: serving file from /srv/tftp

Rarpd tente comme prévu d’envoyer un fichier dont le nom correspond à l’adresse IP en hexadécimal : nous avons donné 192.168.1.9, il cherche donc le fichier C0A80109. Notez bien qu’il ne sert à rien de perdre son temps à calculer le nom que doit avoir le fichier, syslog nous l’indique très poliment.

Le fichier adéquat se trouve sur le site officiel de debian : http://www.debian.org/releases/etch/debian-installer/.Il faut prendre le fichier d’installation par le réseau pour SPARC, c’est un fichier "boot.img" de quelques Mo. Vous avez le choix entre SPARC 32 et SPARC 64, cela dépendra de votre matériel.

Allez hop, je met un boot.img pour SPARC32.

mkdir -p /srv/tftp
cp boot.img /srv/tftp/C0A80109

Tiens, même pas besoin de redémarrer la Sun, elle télécharge tout de suite le fichier. Je patiente...

On sun4u you have to use UltraLinux (64bit) kernel
and not a 32bit sun4[cdem] version

Diable ! Quelle erreur ! Je recommence avec le bon boot.img, pour SPARC64.

Waiting...

Tiens, un installateur Debian. Le combat est gagné, à vous de jouer ;)

Répondre à cet article

Les fortunes de #epplug. Retrouvez les membres de notre association sur notre salon IRC: irc.geeknode.net #epplug
Voici quelques extraits amusants (Télécharger le fichier de fortune)

Association Picarde des Utilisateurs de Logiciels Libres (EPPLUG) ­ Association régie par la loi 1901
137, avenue du général FOY 80000 AMIENS.
Parution au Journal Officiel le 21/06/03 sous le n° 20030025 ­ Siren : 494 525 280

© epplug.org 2002-2005 - ce site fonctionne grace au moteur d'edition collaboratif SPIP fonctionnant sous license GPL

ADMIN

Toutes les interventions sur ce site sont la propriété de leurs auteurs respectifs.