Carte RAID Promise SX6000 ...

La machine ne voit pas de disque dur, seule la carte RAID-IDE qui n'est pas reconnue en standart ! D'où la difficulté : le BIOS de la carte RAID est juste capable de booter le MBR, pour le reste, il faut se débrouiller.

Le site de Promise ne fourni pas d'image disque directement utilisable pour l'installation de Suse 9.0 (Il existe pour d'anciennes versions.) Il faut donc créer cette disquette à la main. Sur le principe, il faut compiler le driver à partir de ses sources : http://www.promise.com/support/download/download2_eng.asp?productId=86&category=All&os=100 sur une machine en Suse 9.0 (car la compilation nécessite la présence des sources du même kernel qui sera utilisé lors de l'instalation, à savoir 2.4.21) puis le mettre sur une disquette. Enfin, booter avec le CD d'installation en appuyant lorsqu'il le propose sur F3 : "Driver update".

Création de la disquette : Identique à la création pour Mandrake. Il faut voir aussi le modèle des disquettes d'installation Suse. L'important est d'avoir le module sur la disquette.

A la fin de l'install, il faut stopper le reboot automatique et ouvrir une console ou redemarrer sur le CD de boot en mode rescue pour avoir une console.

L'opération consiste alors à mettre les drivers nécessaires dans le fichiers initrd.img et à relancer LILO (ou GRUB) (inutile si la taille du fichier n'a pas trop changé.) Le fichier /boot/initrd.img contient un système de fichier compressé. On peut donc le décompresser et le monter sur un répertoire, ajouter des fichiers puis le démonter et le recompresser.

  1. Aller dans /boot

  2. Créer un répertoire initrd.dir

  3. recopier le ficher /boot/inird-x.xx.xx-xx.xx.img dans /boot/inirdrd-x.xx.xx-xx.img.gz (noter le .gz en plus.)

  4. décompresser l'image : gunzip inirdrd-x.xx.xx-xx.img.gz

  5. monter l'image : mount inirdrd-x.xx.xx-xx.img initrd.dir -o loop

  6. Aller voir dans /boot/initrd.dir/ recopier les modules et changer le script linuxrc pour charger les nouveaux modules.

  7. Démonter le système de fichier : umount initrd.dir et recompresser l'image : gzip -9 -n inirdrd-x.xx.xx-xx.img. recopier l'image compressée dans /boot à la place de l'ancienne.

  8. Dans le doute, si fichier image a trop changé, il faut relancer LILO. Pour cela il faut écrire le fichier /etc/lilo.conf sur le modèle d'une autre Suse. En effet, en bootant en mode rescue, on n'a pas de lilo.conf.

Kernel

Attention : pour mettre à jour le kernel, il faut récuperer les sources, configurer, compiler et ajouter le pilote de Promise recompilé pour le nouveau kernel.

Voici ce qui a été fait étape par étape :

  1. Récuperer les sources du kernel dans /usr/src/linux-xx.xx ... et les sources du pilote Promise dans /usr/src/st_6000src_x.xx

  2. Eventuellement, nettoyer l'environnement : make clean ; make mrproper dans src/linux (cela détruit la dernière configuration) et rm *.o dans src/st_6000src. Effacer les traces de précédents essais : quelques fichiers dans /boot/ et un répertoire dans /lib/modules/, plus des entrées dans le menu /boot/grub/menu.lst.

  3. Tout ce qui sui ce passe dans /usr/src/linux... : Changer le numéro de version du kernel vi Makefile changer EXTRAVERSION en tout début de fichier : il suffit de remplacer "custom" par la date, ou un numéro qu'on incrémente à chaque essai.

  4. Pour ne pas partir de zéro, il est possible de récuperer la dernière bonne configuration : les fichiers sont /boot/config-x.xx.xx qu'il suffit de copier dans .config.

  5. Lancer la configuration : make xconfig. C'est la partie la plus délicate => Faire un chapitre à part ! Citons déjà les point les plus importants : autoriser le RAMDISK pour initrd ! En effet : le pilote Promise est livré sous forme de module à compiler : il doit donc se trouver dans le ramdisk créé au démarrage pour pouvoir être chargé dans le kernel et donner accès au disque dur !

  6. Lancer make dep ; make clean. Puis make bzImage, puis make modules et make modules_install. Vérifier que les deux dernières commandes se finissent bien : ce sont les parties les plus susceptible de génerer des erreurs. Dans ce cas revenir au point 2 et essayer de modifier la config.

  7. Aller dans les sources du pilote Promise et lancer make KERNEL_SOURCE_DIR=/usr/src/linux-x.xx.xx pour le compiler.

  8. Copier le fichier pti_st.o compilé dans /lib/module/x.xx.xx-xx.x/kernel/drivers/scsi/. (Ce répertoire est créé par make modules_install.)

  9. Retourner dans les sources linux pour lancer make install ! Si la commande se fini bien, il est possible de rebooter pour tester.

  10. Il est possible de vérifier si le pilote est bien dans l'image disque qui est chargé en ram au démarrage.

    1. Aller dans /tmp

    2. Créer un répertoire initrd.dir

    3. recopier le ficher /boot/inird-x.xx.xx-xx.xx.img dans /tmp/inirdrd-x.xx.xx-xx.img.gz (noter le .gz en plus.)

    4. décompresser l'image : gunzip inirdrd-x.xx.xx-xx.img.gz

    5. monter l'image : mount inirdrd-x.xx.xx-xx.img initrd.dir -o loop

    6. Aller voir dans /tmp/initrd.dir/lib si il se trouve un fichier pti_st.o ... si il n'y est pas, il est inutile d'essayer de booter avec ce kernel.

Note : le fichier /etc/modules.conf doit contenir une ligne alias scsi_hostadapter pti_st. Il n'y a pas à la modifier. Ce fichier contient, à priori les modules a charger au démarrage.