Contexte
Au taf, on va recevoir bientôt 14 Blade Center d'IBM supplémentaires avec chacun 14 lames, le tout à installer sous RedHat. L'installation ne pose pas de problème, j'ai deja une infrastructure en place qui me permet de faire tout ça en 1h (si je ne compte pas le temps passer à récuperer les adresses MAC pour générer le dhcpd.conf...).
Le problème que j'ai eu avec les précédent a été la création du RAID sur les cartes LSI. J'ai essayé dans un script pre-inst du kickstart, mais du coup, le soft d'installation de la RedHat perdait un disque et ralait, et il fallait que j'intervienne manuellement... Pas top quand on a 196 lames à installer, et via une applet java qui plus est (le SOL - Serial Over Lan - refusant de fonctionner). J'ai aussi essayer en post-inst, mais ça ne fonctionne pas, je crois qu'il n'arrive pas à charger le module mptctl ou alors il ne trouve pas quelque chose que j'ignore, mais je n'ai pas trop creusé la chose.
J'ai trouvé un outil sur le site d'IBM qui s'appelle cfg1030 qui existe en version DOS et GNU/Linux et puis je me suis souvenu de loadlin, un programme dos pouvant un booter un kernel linux. Je me suis dit que j'avais trouvé la solution si je trouvais comment faire cette image et surtout, comment booter dessus. Connaissant un peu le projet Syslinux vu qu'il me sert à faire mes installations en PXE, je suis allé voir le site et j'ai trouvé le projet Memdisk, qui permet justement de faire tout ça : on boote en PXE, on récupére l'image et on boote dessus, impeccable. Il me restait plus qu'à fabriquer cette fameuse image DOS, incorporer mes outils et la tester.
Création de l'image DOS
Alors c'est cette partie qui m'a pris le plus de temps, car j'ai testé un nombre incalculable de solution à base de dd, fdisk pour la plupart, mais sans succès. Et puis sur la mailling list de Syslinux, j'ai vu son auteur qui conseillé d'utiliser qemu pour faire l'image, et la j'ai eu la révélation.
J'ai donc créé une image de 100Mo, puis j'ai téléchargé les disquettes d'installation de DRDOS 7.03 (merci le site drdos.net et j'ai lancé son installation dans qemu. Et après l'installation, j'ai copié cette image sur le serveur d'installation, j'ai modifié la config PXE et lorsque j'ai lancé ma blade en bootant en PXE, je me suis retrouvé sur un prompt DrDOS : victoire !
Modification de l'image DOS
Alors la je dois avouer que j'ai choisi la facilité en utilisant WinImage sous windows pour ajouter, supprimer et éditer des fichiers dans l'image. On doit pouvoir faire ça via qemu mais je n'avais ni le temps ni l'envie de voir comment.
J'ai donc copier le kernel, l'initrd et loadlin dans l'image et relancer la machine pour tester tout çà. Lors du lancement de loadlin, la machine reboote sans rien m'afficher. Je cherche un peu sur le net, j'essai un autre bootloader (gujin qui lui me parle de problème mémoire au chargement du kernel. Du coup, je regarde la configuration de DrDos à ce niveau et je vois qu'il charge EMM386.EXE et un DPMI.EXE. Je farfouille dans la documentation de DrDOS et dans celle de Gujin et je me dis que ça serait bien de charger HIMEM.SYS à la place. Je modifie donc l'image et je reboote
Et la, j'ai droit au message d'erreur "ran out of input data" et tout était planté. Après une recherche sur le net, c'est un problème du à la taille du kernel qui est supérieure à 1 Mo. La version 1.6c de loadlin est sensée corriger l'erreur, mais manque de pot, c'est la version que j'ai...
Me voila donc parti pour trouver un autre remplaçant mais la précédente recherche m'avait refroidi de ce coté. Mais par chance, sur la première page trouvée sur le problème de loadlin sur son message d'erreur, quelqu'un parle de linld qui n'aurait pas ce problème. Je le télécharge, je le copie sur l'image, je reboote et hop, tout fonctionne comme il faut, l'installation de RedHat se lance et la machine s'installe.
Dernier problème
Bien évidement, si je veux industrialiser le processus, j'ai un probleme, qui se situe dans les arguments passés à linld. En effet, je fais les installations par Kickstart, et on doit passer en argument le nom du fichier de profile qui doit être accessible en NFS ou en HTTP par exemple. Jusqu'à présent, je faisais tout ça en NFS, mais la, ça me pose un problème car je ne vais pas faire autant d'image de 100Mo que je n'ai de systèmes !
En réfléchissant, je me suis dit que la possibilité de passer du NFS au HTTP pourrait bien résoudre ce problème. En effet, en utilisant le HTTP, je peux faire pointer le lien vers un script en perl (ou autre) qui en fonction de l'adresse IP de la machine qui le demande va fournir le bon fichier Kickstart. J'ai donc écrit ce petit script et ça fonctionne.
Il ne restait plus qu'à incorporer toutes ces commandes dans l'autoexec.bat et le tour est joué.
Conclusion
Bien que le DOS soit dépassé, il est capable de rendre de bon service. Grace à lui, j'ai une image facilement modifiable qui me permet pour l'instant de booter dessus, de créer le RAID sur des cartes LSI et de lancer l'installation de RedHat de façon personnalisée. C'est déja pas mal pour une vielle techno.
J'ai encore quelques test à faire, comme vérifier que cfg1030 fonctionne avec les nouvelles cartes LSI à base de SAS. J'aimerai bien aussi intégrer les outils de HP/Compaq (si je les trouve en version DOS) pour faire pareil qu'avec LSI. Peut être qu'un menu au boot de l'image serait bien aussi. Bref, il y a un grand nombre d'améliorations/modification possibles.
Si quelqu'un est intéréssé, je dois pouvoir mettre à disposition mon image et fournir des informations.
