Page suivante Page précédente Table des matières
3. Le chargeur
abootSi vous utilisez le firmware SRM,
abootest la meilleure façon de démarrer Linux. Il supporte :
- démarrage direct depuis divers systèmes de fichiers (
ext2,ISO9660, etUFS, le système de fichiers de Digital Unix),- lancement de fichiers objets exécutables (ELF et ECOFF),
- lancement de noyaux compressés,
- démarrage par réseau (en utilisant le protocole
bootp),- table de partitions au format Digital Unix (compatible avec les tables de partitions de BSD),
- démarrage interactif et configurations par défaut des consoles SRM qui n'acceptent pas les longues chaînes d'option.
3.1 Se procurer et installer
abootLes codes sources les plus récents d'
abootsont disponibles à l'adresse ftp://ftp.azstarnet.com/pub/linux/axp/aboot. La description de ce manuel s'applique àabootpour les versions 0.5 et suivantes.
Une fois que vous avez téléchargé et extrait l'archive
tar, jetez un oeil aux fichiersREADMEetINSTALLpour lire les directives d'installation. En particulier, assurez vous que les variables, dans les fichiersMakefileetinclude/config.hsont correctes vis-à-vis de votre environnement . Normalement, vous ne devriez pas avoir à changer quoi que ce soit pour compiler sous Linux, mais c'est toujours une bonne chose de vérifier. Si la configuration vous convient, tapez simplementmakepour lancer la compilation (si vous n'effectuez pas cette opération sous Linux, sachez queabootrequiert GNUmake).Après l'exécution de
make, le répertoireabootdevrait contenir les fichiers suivants :
- aboot
L'exécutable réel (fichier objet ECOFF ou ELF),
- bootlx
Comme ci-dessus, mais ce fichier ne contient que les segments text, data et bss (ce fichier n'est pas un fichier objet),
- sdisklabel/writeboot
Un utilitaire pour installer
abootsur un disque dur,- tools/e2writeboot
Un utilitaire pour installer
abootsur un système de fichiers ext2 (n'est en général utilisé que pour les disquettes),- tools/isomarkboot
Un utilitaire pour installer
abootsur un système de fichiers iso9660 (utilisé par les distributeurs de CD-ROM),- tools/abootconf
Un utilitaire pour configurer
aboots'il est installé.
3.2 Installation sur disquette
Le lanceur peut être installé sur une disquette en utilisant la commande
e2writeboot(note : ceci ne peut se faire sur un Jensen car son firmware n'implante pas le démarrage depuis une disquette). Cette commande nécessite que le disque ne soit pas trop fragmenté car elle a besoin de trouver suffisament de secteurs contigus pour stocker l'image entière deaboot(actuellement, environ 90Ko). Sie2writebootéchoue à cause de ça, reformatez la disquette et réessayez (par ex., avecfdformat(1)). Par exemple, la procédure suivante installeabootsur une disquette en supposant que la disquette est dans le lecteur correspondant à/dev/fd0:
fdformat /dev/fd0 mke2fs /dev/fd0 e2writeboot /dev/fd0 bootlx
3.3 Installation sur disque dur
Sachant que la commande
e2writebootpeut échouer sur un disque hautement fragmenté et comme le reformattage d'un disque dur ne se fait pas sans peine, il est généralement plus sûr d'installerabootsur un disque dur en utilisant la commandeswriteboot.swritebootnécessite que les premiers secteurs soient réservés aux procédures de démarrage. Nous suggérons que le disque soit partitionné de manière à ce que la première partition commence à une adresse correspondant à 2048 secteurs. Cela laisse 1Mo d'espace ibre pour stockeraboot. Sur un disque partitionné de cette façon , il est alors possible d'installerabootcomme décrit ci-dessous (en supposant que le disque correspond à/dev/sda.) :
swriteboot /dev/sda bootlxSur un Jensen, vous devrez laisser un peu plus d'espace, sachant que vous devrez également stocker le noyau à cet endroit - 2Mo devraient suffire en utilisant une image compressée. Utilisez
swritebootcomme décrit à la section booting pour écrirebootlxavec le noyau Linux.
3.4 Installation sur CD-ROM
Pour construire un CD-ROM amorçable avec SRM, construisez simplement
abootcomme décrit ci-dessus. Assurez-vous ensuite que le fichierbootlxest présent sur le système de fichiers iso9660 (e.g., copiezbootlxdans le répertoire où est monté le système de fichiers) , et lancezmkisofssur ce répertoire). Après cela, la seule chose restant à faire est de marquer le système de fichiers comme amorçable avec SRM. Cela est réalisé grâce à une commande de la forme :
isomarkboot filesystem bootlxLa commande ci-dessus nécessite que
filesystemest un fichier contenant le système de fichiers iso9660 et quebootlxa été copié dans la racine de ce système de fichiers. C'est tout !
3.5 Construire un noyau Linux
Un noyau Linux amorçable peut être construit par les étapes suivantes. Durant le
make config, assurez-vous de répondre "oui" ("yes") à la question concernant le lancement du noyau par SRM.
cd /usr/src/linux make config make dep make boot
La dernière commande construira le fichier
arch/alpha/boot/vmlinux.gzqui peut alors être copié sur le disque à partir duquel vous désirez démarrer. Dans notre exemple précédent concernant la disquette, cela donnerai :
mount /dev/fd0 /mnt cp arch/alpha/boot/vmlinux.gz /mnt umount /mnt
3.6 Démarrer Linux
Avec le firmware SRM et
abootinstallé, le démarrage de Linux s'effectue généralement avec une commande de la forme :
bootdevicename-fifilename-flflags
Les arguments filename et flags sont optionels. S'ils ne sont pas spécifiés, SRM utilise les valeurs par défaut contenues dans les variables d'environnement
BOOT_OSFILEetBOOT_OSFLAGS. La syntaxe et la signification de ces deux arguments est décrite plus en détail ci-dessous.
Nom du fichier boot
L'argument filename est de la forme :
[n/]filenamen est un simple nombre dans l'intervalle 1..8 qui donne le numéro de la partition de démarrage. filename est le chemin d'accés au fichier à lancer. Par exemple, pour démarrer depuis la deuxième partition du sixième disque SCSI, vous entreriez :
boot dka600 -file 2/vmlinux.gzOu, pour démarrer depuis le premier lecteur de disquette :
boot dva0 -file vmlinux.gz
Si un disque n'a pas de table des partitions,
abootconsidère que le disque contient une partitionext2commençant au premier bloc du disque. Cela permet de démarrer depuis une disquette.
Le numéro de partition 0 est utilisé pour demander le démarrage depuis un disque qui ne contient pas (encore) de système de fichiers. Si l'on spécifie le numéro de "partition" 0,
abootconsidère que le noyau Linux suit directement l'image deaboot. Une telle chose peut être réalisée avec la commandeswriteboot. Par exemple, pour configurer un démarrage sans système de fichiers depuis/dev/sda, on pourrait utiliser la commande :
swriteboot /dev/sda bootlx vmlinux.gz
Démarrer un système de cette façon n'est pas obligatoirement nécessaire. La raison d'être de cette fonctionnalité est de permettre l'installation de Linux sur un système qui ne peut démarrer depuis une disquette (e.g., le Jensen).
Drapeaux de démarrage
Plusieurs drapeaux de démarrage peuvent être spécifiés. La syntaxe en est :
-flags "options..."Où "options..." est une combinaison des options suivantes (séparées par des espace). Il y a encore plus d'options, en fonction des pilotes que le noyau a installé. Les options listées ci-après ne sont là que pour illustrer l'idée générale :
- load_ramdisk=1
Copie le système de fichiers racine depuis une disquette vers un disque virtuel en mémoire avant de lancer le système. Ce disque virtuel sera utilisé en lieu et place du périphérique racine. Ceci est utile pour démarrer Linux sur une machine qui ne possède qu'un lecteur de disquettes.
- floppy=str
- root=dev
Sélectionne le périphérique dev comme système de fichiers racine. Le périphérique peut être spécifié comme la combinaison des numéros major/minor du fichier de périphérique en hexadécimal (e.g., 0x802 pour /dev/sda2) ou un nom de fichier de périphérique (e.g.,
/dev/fd0,/dev/sda2).
- single
Lance le système en mode mono-utilisateur.
- kgdb
Autorise kernel-gdb (ne fonctionne que si
CONFIG_KGDBest activé ; un deuxième système Alpha doit être connecté par voie série pour que cela fonctionne).
Quelques implémentations de SRM (e.g., celle du Jensen) sont limitées et n'autorisent que les chaînes d'options de courte longueur (e.g., au plus 8 caractères). Dans ce cas là,
abootpeut être démarré avec le drapeau de démarrage "i". Avec ce drapeau,abootdemandera à l'utilisateur d'entrer une chaîne d'options pouvant atteindre 256 caractères. Par exemple :
boot dka0 -fl i aboot> 3/vmlinux.gz root=/dev/sda3 singleComme démarrer de cette façon devient rapidement pénible ,
abootautorise l'utilisateur à définir des raccourcis pour les lignes de commande fréquemment utilisées. En particulier, une option donnée par un chiffre -- option --> (0-9) demande àabootd'utiliser l'option correspondante dans le fichier/etc/aboot.conf. Un exemple de fichieraboot.confest donné ci-dessous :
# # aboot default configurations # 0:3/vmlinux.gz root=/dev/sda3 1:3/vmlinux.gz root=/dev/sda3 single 2:3/vmlinux.new.gz root=/dev/sda3 3:3/vmlinux root=/dev/sda3 8:- root=/dev/sda3 # fs-less boot of raw kernel 9:0/vmlinux.gz root=/dev/sda3 # fs-less boot of (compressed) ECOFF kernel -Avec ce fichier, la commande
boot dka0 -fl 1correspond exactement à la commande de démarrage donnée ci-dessus. Il est cependant facile d'oublier la correspondance entre les numéros et les chaînes d'options. Pour éviter ce problème, démarrez avec l'option "h" et
abootaffichera le contenu de/etc/aboot.confavant d'afficher l'invite demandant la chaîne d'option entière.En conclusion, même si
abootdemande l'entrée d'une chaîne d'options, il est possible d'entrer un simple caractère ("i", "h", ou "0"-"9") pour obtenir le même résultat que si le drapeau avait été spécifié sur la ligne de commande de démarrage. Par exemple, vous pouvez démarrer avec le drapeau "i", taper ensuite "h" (suivi par entrée) pour vous rappeler le contenu de/etc/aboot.conf
Sélectionner la partition de /etc/aboot.conf
Quand
abootest installé sur un disque dur, il a besoin de savoir sur quel partition il lui faut chercher le fichier/etc/aboot.conf. Nouvellement compilé,abootcherchera sur la deuxième partition (/dev/sda2). Comme il serait contraignant d'avoir à recompilerabootuniquement pour changer le numéro de la partition,abootconfautorise à directement modifierabootdéjà installé. Par exemple, si vous désiriez changerabootafin qu'il utilise la troisième partition du disque/dev/sda, vous utiliseriez la commande :
abootconf /dev/sda 3Vous pouvez vérifier le réglage courant simplement en omettant le numéro de partition. Alors,
abootconf /dev/sdaaffichera la partition actuellement sélectionnée. Notez queabootêtre déjà installé pour que cette commande réussisse. Aussi, lors de l'installation d'un nouvelaboot, le numéro de partition redeviendra celui par défaut (i.e., il sera nécessaire de relancerabootconf).Depuis la version 0.5 de
aboot, il est également possible de sélectionner la partition contenant le fichieraboot.confdepuis la ligne de commande de démarrage. Cela peut être fait avec une ligne de commande de la forme a:b où a est le numéro de la partition contenant/etc/aboot.confet b est une option d'une lettre comme décrit plus haut (0-9,i, ouh). Par exemple, si vous tapezboot -fl "3:h" dka100le système démarre depuis SCSI ID 1, charge/etc/aboot.confdepuis la troisième partition, affiche son contenu à l'écran et attend que vous entriez les options de démarrage.
3.7 Démarrage réseau
Deux étapes préliminaires sont nécessaires avant que Linux puisse démarrer par un réseau. Premièrement, vous devrez positionner les variables d'environnement de SRM pour permettre le démarrage via le protocole
bootpet deuxièmement vous devrez configurer une autre machine comme serveur de démarrage. Reportez-vous à la documentation de SRM fournie avec votre machine pour toute information sur la mise en place debootp. Configurer le serveur de démarrage dépend étroitement du système d'exploitation de cette machine, mais typiquement cela nécessite de lancer le programmebootpden tâche de fond après avoir configuré le fichier/etc/bootptab. Le fichierbootptabpossède une entrée par machine cliente autorisée à démarrer depuis le serveur. Par exemple, si vous voulez démarrer la machinemyhost.cs.arizona.edu, une entrée de la forme suivante serait nécessaire :
myhost.cs.arizona.edu:\ :hd=/remote/:bf=vmlinux.bootp:\ :ht=ethernet:ha=08012B1C51F8:hn:vm=rfc1048:\ :ip=192.12.69.254:bs=auto:Cette entrée considère que l'adresse Ethernet de la machine est
08012B1C51F8et que son adresse IP est 192.12.69.254. L'adresse Ethernet peut être trouvée grâce à la commandeshow devicede la console SRM ou, si Linux est lancé, avec la commandeifconfig. L'entrée précise également que si le client ne déclare pas le contraire, le fichier qui sera lancé sera le fichiervmlinux.bootpdu répertoire/remote. Pour plus d'informations sur la configuration debootpd, reportez-vous à sa page de manuel.Ensuite, construiser
abootgrâce à la commandemake netboot. Assurez-vous que le noyau que vous désirez lancer a déjà été construit. Par défaut, leMakefiledu programmeabootutilise le noyau/usr/src/linux/arch/alpha/boot/vmlinux.gz(éditez leMakefilesi vous désirez utiliser un autre chemin d'accés). Le résultat demake netbootest un fichier nommévmlinux.bootpcontenantabootet le noyau Linux, prêt pour le démarrage par réseau.Enfin, copiez
vmlinux.bootpdans le répertoire du serveur de démarrage. Dans l'exemple plus haut, vous l'auriez copié dans le répertoire/remote/. Ensuite, allumez la machine client et démarrez la, en spécifiant l'adaptateur Ethernet comme périphérique de démarrage. SRM nomme typiquement le premier adaptateur Ethernetewa0, donc, pour démarrer depuis ce périphérique, vous utiliserez la commande :
boot ewa0Les options
-fiet-flsont utilisable comme d'habitude. En particulier, vous pouvez demander àabootd'attendre l'entrée d'arguments pour le noyau Linux en spécifiant l'option-fl i.
Page suivante Page précédente Table des matières