Catégorie : Matériel     Tags :      0 Commentaire

    Retrouvez cet article dans : Linux Magazine 86

    Il n’y a pas si longtemps, les stations Sparc étaient assez répandues dans les universités, les administrations et même les entreprises. Mais depuis quelques années, ces machines aussi robustes que rustiques sont réduites à l’état de ramasse-poussières. Pourtant, elles peuvent encore rendre bien des services.

    J’ai ainsi récemment eu la chance de pouvoir mettre la main sur une telle antiquité, datant d’une époque où le monde des ordinateurs PC s’émerveillait devant la version 3.11 d’un certain environnement graphique à fenêtres. Les stations Sparc étaient alors l’idéal pour les stations de travail graphiques, offrant des possibilités bien supérieures à celles des PC de l’époque.

    Le matériel

    La machine est une station Hyundai HWS-S310, un clone d’une station Sun SPARCStation 10 [1], dotée d’un processeur Texas Instrument SuperSparc-II à 50MHz, de 80 Mo de mémoire et d’un disque dur SCSI de 1.1 Go. Le tout a été assemblé, il y a plus de dix ans. Point de lecteur CD-Rom, simplement un lecteur de disquettes dans lequel je craindrais d’insérer quoi que ce soit. Voilà à quoi cela ressemble :

    /img-articles/lm/86/art-1/fig-1.jpg

    Remarquez sur la droite l’indispensable bombe dépoussiérante : étant donné le sort peu glorieux réservé à ces ordinosaures, il est probable que la quantité de poussière aurait raison des poumons les plus entraînés. Vue arrière :

    /img-articles/lm/86/art-1/fig-2.jpg

    Les stations Sparc 10 contenaient deux connecteurs ISDN (sur la gauche), ainsi qu’un port Ethernet 10baseT. La prise pour l’écran étant assez spéciale, il est peut probable que vous pourrez y connecter un moniteur VGA classique. Un écran en état de marche est probablement l’élément le plus difficile à trouver.
    Voici enfin l’intérieur (l’avant est en haut) :

    /img-articles/lm/86/art-1/fig-3.jpg

    En l’absence de lecteur utilisable, la seule solution pour installer le système est de passer entièrement par le réseau, le noyau et l’installeur étant hébergés sur une autre machine. Ceux-ci sont récupérés au moyen du protocole TFTP [2], l’adresse IP étant déterminée avant le démarrage du système (forcément) par le protocole RARP [3].

    Préparer l’installation

    La carte réseau intégrée est une carte en 10baseT, qui refusera obstinément de discuter par un câble croisé avec une carte à 100 Mbps. Il est donc nécessaire de passer par un hub à 10Mbps afin d’adapter les communications.

    Déterminer l’adresse MAC

    Sans entrer dans les détails, l’adresse MAC d’une carte réseau est un numéro unique permettant de l’identifier physiquement sur un réseau. À ne pas confondre avec l’adresse IP : au moment où la machine est démarrée, elle ne dispose pas d’adresse IP lui permettant de communiquer réellement avec les autres machines du réseau. L’adresse physique (l’adresse MAC) de la carte va alors être utilisée pour attribuer une adresse IP à la machine.
    Pour cela, le protocole RARP est sans doute le moyen le plus simple (et le plus rudimentaire) de procéder – et de toute façon, la station n’en connaît pas d’autre. Aussi est-il nécessaire de déterminer cette adresse MAC. Pour cela, démarrez la station. Dès que l’écran se réveille, appuyez sur les touches [Stop]+[A] (ou [L1]+[A]). Vous devriez alors obtenir un écran comme celui-ci, l’écran d’accueil du système embarqué OpenBoot (l’équivalent du BIOS pour un PC, mais en beaucoup plus sophistiqué) :

    /img-articles/lm/86/art-1/fig-4.jpg

    Remarquez à droite du logo la ligne :

     Ethernet address 0:0:3b:80:5:2

    Cela nous donne l’adresse MAC sous forme hexadécimale. Si vous ne la voyez pas, vous pouvez la demander en entrant la commande suivante à l’invite ok tout en bas :

     .enet-addr

    N’oubliez pas le point au début.

    Mise en place de RARP

    Si vous ne l’avez pas déjà, installez le petit programme rarpd qui permet de lancer un démon répondant aux requêtes RARP. Sa configuration est fort simple. Il suffit de placer dans le fichier /etc/ethers une liste d’adresses MAC accompagnées des adresses IP que l’on souhaite leur attribuer. Dans notre exemple, la station se verra attribuée l’adresse 10.0.0.211. La configuration de rarpd se limite donc à ceci :

     # echo "00:00:3B:80:05:02 10.0.0.211" > /etc/ethers

    Naturellement, adaptez l’adresse MAC selon votre situation. Puis, on peut lancer le démon avec la commande :

    # rarpd -a

    Ajoutez les options -v et -d si vous ne voulez pas que le programme passe en tâche de fond, ce qui peut être souhaitable pour des raisons de sécurité : dès qu’il n’est plus nécessaire, un simple [Ctrl]+[C] permet ainsi d’arrêter le serveur RARP.
    Désormais la machine d’installation est capable de fournir une adresse IP à la station.

    Déterminer le noyau demandé

    Lorsque nous demanderons à la station de démarrer sur le réseau, elle va tout d’abord envoyer une requête RARP pour obtenir son adresse IP, puis chercher à télécharger un fichier précis contenant le noyau système à exécuter. Il n’existe pas vraiment de norme dans ce domaine : nous allons donc devoir expérimenter un peu avec le programme tcpdump pour " deviner " le nom du fichier contenant le noyau.
    Si la machine d’installation est reliée au hub par l’interface eth1, lancez la commande :

     # tcpdump -i eth1 -n -v

    Le programme tcpdump permet d’espionner les paquets de données qui transitent sur un réseau, ici les paquets reçus et envoyés par l’interface eth1.
    Démarrez la station (si ce n’est déjà fait) et accédez au système OpenBoot en pressant [Stop]+[A] dès que l’écran s’anime. Entrez alors la commande (le ok au début étant l’invite du système, il ne doit donc pas être saisi) :

    ok boot net

    Puis consultez l’affichage de tcpdump, qui devrait ressembler à ceci :

     # tcpdump -i eth1 -n -v
    tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
    14:41:28.814284 rarp who-is 00:00:3b:80:05:02 tell 00:00:3b:80:05:02
    14:41:28.814698 rarp reply 00:00:3b:80:05:02 at 10.0.0.211
    14:41:28.857768 IP (tos 0x0, ttl 123, id 1234, offset 0, flags [none], proto: UDP (17), length: 51) 10.0.0.211.37381 > 10.0.0.200.69:  23 RRQ "0A0000D3.SUN4M" octet
    14:41:28.857834 IP (tos 0xc0, ttl  64, id 27770, offset 0, flags [none], proto: ICMP (1), length: 79) 10.0.0.200 > 10.0.0.211: ICMP 10.0.0.200 udp port 69 unreachable, length 59
            IP (tos 0x0, ttl 123, id 1234, offset 0, flags [none], proto: UDP (17), length: 51) 10.0.0.211.37381 > 10.0.0.200.69:  23 RRQ "0A0000D3.SUN4M" octet

    Les deux premiers messages concernent la résolution de l’adresse IP par RARP. Les suivants sont les tentatives de téléchargement du fichier du noyau, sous la forme d’une requête RRQ "0A0000D3.SUN4M" : le nom entre guillemets est le nom du fichier supposé contenir le noyau.
    Ce nom est composé du nom de l’architecture de la station (ici, sun4m) précédé de son adresse IP sous forme hexadécimale.
    Si besoin est, vous pouvez obtenir la représentation hexadécimale d’une adresse IP aa.bb.cc.dd à l’aide de la commande :

    $ printf "%02X%02X%02X%02X\n" aa bb cc dd

    Par exemple, dans notre cas :

    $ printf "%02X%02X%02X%02X\n" 10 0 0 211
    0A0000D3

    En tout cas, notez bien le nom du fichier demandé, nous en aurons bientôt besoin.

    Mise en place de TFTP

    Le protocole TFTP [2] est un protocole de transfert de fichier, un peu comme FTP, mais en beaucoup plus simple. C’est ce protocole que la station va utiliser pour télécharger le noyau qu’il lui faudra démarrer pour lancer l’installation du système. Nous devons donc mettre en place un serveur TFTP. Celui qui a donné les meilleurs résultats est le programme atftp [4], normalement disponible pour toutes les " bonnes " distributions. Sinon, son installation à partir des sources est fort simple.

    La configuration par défaut suppose que les fichiers à transférer soient placés dans un répertoire /tftpboot (oui, juste à la racine) qui doit être lisible, inscriptible et exécutable pour le monde entier. Exécutez donc les commandes :

    # mkdir /tftpboot
    # chmod 0777 /tftpboot

    Nous allons placer dans ce répertoire les fichiers nécessaires à l’installation. Deux fichiers sont nécessaires, le noyau système et l’image disque contenant l’installeur. Exécutez tout simplement :

    # cd /tftpboot
    # wget -nd http://ftp.fr.debian.org/debian/dists/unstable/main/installer-sparc/current/images/combined/2.6/mini.iso
    # wget -nd http://ftp.fr.debian.org/debian/dists/unstable/main/installer-sparc/current/images/sparc32/netboot/2.6/boot.img

    Nous utilisons ici la version " unstable " de Debian, plus aboutie que les versions précédentes en ce qui concerne le support des stations Sparc. Renommez le second fichier, celui du noyau, afin qu’il puisse être trouvé par la station, dans notre exemple :

    # mv boot.img 0A0000D3.SUN4M

    Puis démarrez le serveur TFTP, par exemple ainsi pour qu’il ne passe pas à l’arrière-plan :

     # atftpd --daemon --no-fork

    Tout est désormais en place pour démarrer l’installation.

    Installation

    Si ce n’est déjà fait, démarrez la station et pressez [Stop]+[A] dès que l’écran s’éveille. À l’invite ok de OpenBoot, entrez la commande :

    ok boot net

    Normalement, l’installation de Debian devrait démarrer. Nous ne détaillerons pas la suite. Après tout, l’installation de Debian est identique à elle-même. Évitez simplement une installation toute automatique, à moins que vous n’ayez la chance de disposer d’un espace disque plus important. Ainsi n’ai-je installé ici qu’un système minimal, complété manuellement par la suite en utilisant apt-get uniquement sur les éléments voulus.

    Configuration de X

    Évidemment, la configuration de X ne va pas toute seule. La version installée est la version 7.0.22 de X.org. Le fichier de configuration à modifier est donc /etc/X11/xorg.conf (pensez à installer Vim !).

    Un conseil, installez un serveur OpenSSH pour pouvoir vous connecter à la station depuis une autre machine et éventuellement tuer un processus récalcitrant, comme X peut le devenir...

    Premier problème, parvenir à démarrer X lui-même. Les stations Sparc utilisent le FrameBuffer, ce que vous avez sans doute déjà constaté en voyant Tux en haut à gauche au démarrage du noyau Linux.

    Pour plus de détails spécifiques aux stations Sun, voyez la FAQ [5]. En ce qui concerne ma propre configuration, je dois me contenter d’un affichage en 256 couleurs (8 bits), mais en haute résolution (1152x900). Voici les deux sections clefs du fichier xorg.conf pour obtenir cet affichage :

    Section "Device"
        Identifier    “Generic Video Card”
        Driver        “suncg6”
        Option        “UseFBDev”    “true”
    EndSection
    Section “Screen”
        Identifier    “Default Screen”
        Device        “Generic Video Card”
        Monitor       “Generic Monitor”
        DefaultDepth  8
        SubSection “Display”
            Depth 8
            Modes "1152x900" "1152x864" "1152x768" "1024x768" "800x600" "640x480"
        EndSubSection
    EndSection

    Ensuite le clavier. La configuration par défaut de Debian (du moins, la version du jour) ne fonctionne pas correctement. Après quelques recherches, voici une configuration tout à fait classique qui me permet d’utiliser le clavier dont je dispose :

    Section "InputDevice"
            Identifier    “Generic Keyboard”
            Driver        “kbd”
            Option        “CoreKeyboard”
            Option        “XkbRules”        “xorg”
            Option        “XkbModel”        “pc105”
            Option        “XkbLayout”       “us”
    EndSection

    Finalement, on obtient quelque chose d’utilisable.
    Un dernier conseil : lorsque vous utilisez du matériel aussi ancien et limité, désactivez les fioritures diverses comme les transparences, les images de fond d’écran, l’affichage du contenu des fenêtres quand on les déplace, etc.

    Démarrages suivants

    Il est possible qu’au redémarrage de la station, celle-ci ne tente à nouveau de démarrer à partir du réseau. Dans ce cas, interrompez le processus avec [Stop]+[A] et tentez :

     ok boot disk

    Voici ce que j’obtiens alors dans mon cas :

     Boot device: /iommu/sbus/espdma@f,400000/esp@f,800000/sd@3,0 File and args:
    SCSI device 3,0 is not responding
    Can’t open boot device

    Soit en clair, la machine tente de démarrer à partir du disque SCSI d’identifiant 3, première partition. Ce qui ne fonctionne pas, le disque SCSI interne ayant l’identifiant 2. Pour démarrer le système, entrez :

    ok boot /iommu/sbus/espdma@f,400000/esp@f,800000/sd@2,0

    Comment rendre cette option permanente reste à découvrir...

    Conclusion

    Nous voilà donc avec une vieille machine parfaitement fonctionnelle. Bien sûr, ce n’est pas un foudre de puissance, inutile de seulement rêver démarrer OpenOffice.org ou Blender. Mais à quoi cela peut-il bien servir ? Vous pouvez par exemple en faire un terminal X tout à fait correct, permettant ainsi au petit dernier de découvrir l’ordinateur sans risquer de détruire (physiquement) votre précieux et moderne matériel.
    Les développeurs seront sans doute intéressés de pouvoir tester leurs programmes sur un processeur différent, certes ancien, mais dont les descendants sont assez répandus.

    Références :

    • [1] Sun SPARCStation 10 : http://www.obsolyte.com/sun_ss10/
    • [2] Protocole TFTP : http://fr.wikipedia.org/wiki/TFTP
    • [3] Protocole RARP : http://en.wikipedia.org/wiki/Reverse_Address_Resolution_Protocol
    • [4] atftp : http://packages.debian.org/atftp
    • [5] Sun FrameBuffer FAQ : http://www.sunhelp.org/faq/FrameBuffer.html

    Retrouvez cet article dans : Linux Magazine 85

    Posté par (La rédaction) | Signature : Yves Bailly | Article paru dans

    Laissez une réponse

    Vous devez avoir ouvert une session pour écrire un commentaire.