Démarrer votre machine PA-RISC/Linux via PALO, le chargeur du noyau

Qu'est ce que PALO ?

PALO est deux programmes, un chargeur de noyau, qui est exécuté par le microcode HP depuis la mémoire, et un gestionnaire de démarrage, qui initialise et met à jour les périphériques amorçables tels que les disques durs. L'exécutable du chargeur de noyau PALO est conservé dans un fichier iplboot. "IPL" signifie dans le jargon HP pour Initial Program Loader pour programme de chargement initial. Le gestionnaire est appelé PALO, tout simplement comme pour x86 où le gestionnaire de démarrage lilo est surnommé LILO, cependant il est notable que PALO n'est pas à relancer à chaque fois que vous compilez un nouveau noyau, à la différence de LILO.

Que fait PALO ?

L'idée principale est de permettre de démarrer un noyau en lui passant les paramètres dont il a besoin. La pratique est un peu plus compliqué que ça. En fait, PALO peut aussi transformer un fichier vmlinux classique en une image amorçable incluant une RAMDISK ou bien une redirection NFSROOT. Ce fichier est baptisé lifimage. Cependant, il peut aussi rendre démarrable un disque dur en lui spécifiant le type de console que l'on désire utiliser ainsi que le chemin vers la partion racine. Nous allons voir chacune de ces utilisations précisément. Le point important est que le fichier lifimage contient un noyau Linux amorçable et vmlinux est le noyau lui-même et il a besoin de PALO pour être amoçable.

Comment fabriquer une lifimage avec RAMDISK ?

Le premier point est d'expliquer quand et pourquoi le faire. À une époque antérieure du projet PA/Linux, les lifimages étaient très utiles. En fait, vous les utilisez pour votre serveur de démarrage pour amorcer votre machine HP via l'instruction boot lan. L'avantage de la ramdisk est de décompresser son propre système de fichiers et d'être complètement indépendant. Le principal inconvénient est le fait que vous devez construire votre propre ramdisk si vous avez des contraintes de mémoire ou que des fichiers de configuration doivent être personnalisés. Maintenant, voyons comment faire cette lifimage. Tout d'abord, il faut le dernier source de PA/Linux. À partir de là, il vous faut un bon cross-compilateur et les répertoires linux et palo. Tout ce dont vous avez besoin est sur http://www.parisc-linux.org/. Vous faites votre make menuconfig. Ensuite, lancez make palo. L'idée est que dans le répertoire palo réside le Makefile de PALO dans lequel vous devez sélectionner quelle ramdisk vous désirez. Initialement, vous lisez:

# RAMDISK = ${PA}/ramdisk.bin
Ainsi, si vous désirez utiliser l'option RAMDISK contenue dans un fichier appelé par exemple ramdisk.bin et placé à la racine du source linux, vous n'avez qu'à décommenter cette ligne:
RAMDISK = ${PA}/ramdisk.bin
Après avoir configuré le Makefile, allez dans le répertoire linux et lancez le fameux make palo. Le résultat, un fichier lifimage, vous attends dans le répertoire PALO.

Comment fabriquer une lifimage avec NFSROOT ?

Cette méthode est largement utilisée car le noyau et le système de fichiers sont visibles depuis votre serveur. Il est très simple de tester un kernel. Vous avez juste à générer un nouveau noyau et le placer dans le bon répertoire. Au redémarrage, la machine HP ira utiliser le nouveau kernel via instruction boot lan. Pour obtenir l'option NFSROOT, c'est encore plus facile que que celle RAMDISK. Editez le Makefile de PALO et spécifiez l'adresse IP du serveur tftpboot. En fait, si votre serveur a comme IP 10.10.10.2, alors le fichier par défaut est correct car on peut y lire:

NFSROOT = 10.10.10.2
Pour une autre adresse, ce champ doit contenir les bons paramètres. Après avoir configuré le Makefile, vous pouvez aller dans le répertoire linux et lancer make palo. Le résultat, un fichier lifimage, vous attends dans le répertoire PALO.

Comment rendre amorçable une partition ?

Cette partie correspond aux fonctionnalités de PALO similaires à celles de LILO. PALO est principalement un programme qui permet à une machine HP de démarrer via un kernel sur son propre disque dur. Cette section va expliquer comment le faire proprement. Quand vous installez le paquet PALO, Paul Bame, l'auteur et le responsable, a mis une copie du /etc/palo.conf par défaut dans /usr/doc/share/doc/palo/palo.conf. Si vous désirez comprendre comment PALO fonctionne, vous devez juste lire ce fichier ! Cet échantillon vient de palo.conf. C'est la valeur par défaut. Nous vous conseillons de ne pas trop vous écarter du schéma utilisé. Cependant, le paramètre recoverykernel est le chemin du noyau à choisir lorsque vous désirez démarrer en mode sans échec ! Le suivant, bootloader, est le chemin de l'utilitaire qui est produit par PALO quand vous exécutez make iplboot. init-partitioned informe le système sur le périphérique que vous désirez rendre amorçable. L'effet est immédiat. Cela signifie que PALO va écrire sur les premiers octets de la partition. Un bon conseil est de vérifier cette information avec fdisk, pour être sûr de mettre à jour le bon disque. Finalement, le dernier paramètre est commandline ! Le premier chiffre indique quelle partition du disque PALO doit monter pour obtenir le noyau ! Logiquement, la chaîne suivante est le chemin absolu jusqu'au kernel. HOME and TERM sont des variables d'environnement qui sont passées à init. Elles ne sont pas obligatoires mais elles peuvent être utiles. le paramètre root dit au noyau quelle partition monter comme racine du système de fichiers en lecture seule au démarrage. Cale peut être piégeux quand vous avez deux disques attachés. Vous pouvez ajouter des paramètres intéressants comme console où vous spécifiez la sortie de votre console. Vous devez savoir que console=ttyS0 est pour la console série et console=tty0 pour celle graphique. Dans la dernière version de PALO, ce chemin est placé automatiquement et correctement. Sinon, rapportez votre problème à la liste de diffusion.

# The following arguments are set up for booting from /dev/sda3, specifically
# mounting partition 3 as root, and using /boot/vmlinux as both the
# recovery kernel, and the default dynamically-booted kernel.
# --recoverykernel=/boot/vmlinux
# --bootloader=/boot/iplboot
# --init-partitioned=/dev/sda
# --commandline=3/boot/vmlinux HOME=/ TERM=linux root=/dev/sda3

Comment se servir de PALO au démarrage ?

La théorie

Après avoir installé votre PALO, vous pourrez peut-être avoir envie de modifier les paramètres passés au noyau. Tout d'abord, vous devez savoir comment interagir avec PALO au démarrage. Pour certains modèles plus anciens, vous devez ajouter « ipl » à votre commande. dans la console de BOOT_ADMIN: BOOT_ADMIN> boot pri ipl Pour les machines plus récentes, le système vous demandera si vous désirez interagir avec IPL. Vous n'avez qu'à répondre par un « y ». Ensuite, vous voilà dans PALO avec une liste de tous les paramètres et un chiffre leur correspondant. Entrez le chiffre du paramètre que vous voulez changer. Appuyez sur Entrée et modifiez la valeur et validez. Le système va afficher la nouvelle liste de paramètres. Cette modification n'est pas permanente ! Pour l'inscrire, il faut que vous exécutiez /sbin/palo et il écrira sur le disque tous les paramètres contenus dans le fichier par défaut à savoir /etc/palo.conf. Si vous désirez ajouter un autre paramètre, choississez un paramètre et ajoutez le vôtre en les séparant par un espace. Pour en enlever un, il suffit de le choisir et d'effacer l'entrée complètement. Vous verrez que la liste en s'affichant de nouveau compte un paramètre en moins.

Pour plus d'informations à propos de PALO, allez lire le fichier lisezmoi de PALO. Cette section est largement inspirée de ce fichier écrit par Paul Bame et ma page actuelle sur PALO que vous trouvez à http://pateam.esiee.fr/palo.html.

Un exemple

Cet exemple est le travail de Michael Damaschke. Alors, c'est parti pour l'histoire de l'heureux utilisateur de PA/Linux démarrant un noyau aussi appelée Je ne sais pas comment je peux configurer ma machine pour qu'elle démarre avec le noyau que je veux ?.

Après avoir allumer votre machine et votre moniteur, un message apparaît à l'écran vous informant que le démarrage va se poursuivre dans quelque instants sauf si vous pressez sur la touche Echap pour interrompre le processus de démarrage automatique. À ce moment, maintenez enfoncée la touche Echap.

Note : Selon votre modèle, vous devez appuyer pendant un certain temps la touche. Aussi, votre moniteur peut être trop long pour pouvoir afficher ce message à l'écran. Donc, si vous voyez les diodes de votre clavier clignotées, c'est le signal pour maintenir enfoncée la touche Echap key. Si vous avez encore des soucis, référez-vous à la section Consoles.

Maintenant, il existe des variantes pour atteindre le prompt de BOOT_ADMIN. Si vous avez une ancienne machine, vous obtenez un autre message vous informant que le microcode de la machine recherche tous les périphériques amorçables. Vous pouvez interrompre cette recherche en appuyant encore sur la touche Echap. Là encore, appuyez sur Echap.

Là, un menu s'affiche. Choississez le choix avec la touche a et validez. Maintenant, vous voilà dans le prompt BOOT_ADMIN. D'abord, annulez l'autodémarrage en tapant ceci dans le BOOT_ADMIN:

BOOT_ADMIN> autoboot off
et puis valider avec Entrée.

Après ça, vous devez dire au système sur quel périphérique SCSI vous voulez démarrer. Ce disque doit contenir une partition de type f0 où le chargeur PALO réside.

Pour cet exemple, l'ancien noyau sera vmlinux-2.4.9-32 et le nouveau vmlinux-2.4.17-pa3. Le format d'un périphérique SCSI est SCSI.X.0X est l'ID du disque SCSI vous désirez atteindre. Par exemple:

BOOT_ADMIN> boot SCSI.5.0
Après cette commande boot et le SCSI-ID, vous devez ajouter IPL si vous avez une machine des séries 7xx pour dire que vous voulez interagir avec IPL. Si vous avez une machine plusrécente, le système vous demandera ce que vous voulez faire:
Interact with IPL (Y or N)?>
Maintenant, vous pouvez configurer les paramètres de démarrage de PALO. Par exemple:
BOOT_ADMIN> boot scsi.5.0 ipl
et puis validez avec Entrée.

Voilà le nouveau Menu où vous configurez dans la ligne 0 (par défaut) le numéro de la partition, le chemin et le nom du noyau. Voici un exemple:

HARD Booted.
palo ipl 0.92 root@spqr Mon Jun 25 23:03:13 CEST 2001
3/vmlinux-2.4.9-32 3585851 bytes @ 0x6d8f800
Current command line:
3/vmlinux-2.4.9-32 root=/dev/sda3 console=ttyS0 TERM=vt102
 0: 3/vmlinux-2.4.9-32
 1: root=/dev/sda3
 2: console=ttyS0
 3: TERM=vt102

Edit which field?
(or 'b' to boot with this command line)? 0
Vous demandez à PALO de démarrer le fichier vmlinux-2.4.9-32 contenant le noyau sur la troisième partition du disque SCSI.5.0. Mais cette fois-ci, vous désirez un autre kernel. Alors, vous validez avec Entrée et vous modifiez la chaîne de caractère pour qu'elle corresponde avec votre souhait, ici vmlinux-2.4.17-pa3. Vous concluez la modification via Entrée. Puis, il redemande si vous désirez effectuer des changements, mettez simplement « b » pour lancer le nouveau kernel ! Encore un fois, confirmez avec Entrée, évitez de changer d'autres paramètres si vous en connaissez pas le sens ! Maintenant, PALO n'a plus de secret pour vous :-)