aboot
Si vous utilisez le firmware SRM, aboot
est la meilleure
façon de démarrer Linux. Il supporte :
ext2
,
ISO9660
, et UFS
, le système de fichiers de Digital Unix),bootp
),aboot
Les codes sources les plus récents d'aboot
sont disponibles à
l'adresse
ftp://ftp.azstarnet.com/pub/linux/axp/aboot. La description de ce manuel s'applique à aboot
pour
les versions 0.5 et suivantes.
Une fois que vous avez téléchargé et extrait l'archive
tar
, jetez un oeil aux fichiers README
et INSTALL
pour lire les directives d'installation. En particulier, assurez vous
que les variables, dans les fichiers Makefile
et include/config.h
sont 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 simplement
make
pour lancer la compilation (si vous n'effectuez pas cette
opération sous Linux, sachez que aboot
requiert GNU make
).
Après l'exécution de make
, le répertoire aboot
devrait
contenir les fichiers suivants :
L'exécutable réel (fichier objet ECOFF ou ELF),
Comme ci-dessus, mais ce fichier ne contient que les segments text, data et bss (ce fichier n'est pas un fichier objet),
Un utilitaire pour installer
aboot
sur un disque dur,
Un utilitaire pour installer aboot
sur un système de fichiers ext2 (n'est en général utilisé que pour les
disquettes),
Un utilitaire pour installer aboot
sur un système de fichiers iso9660 (utilisé par les distributeurs de CD-ROM),
Un utilitaire pour configurer aboot
s'il est installé.
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 de aboot
(actuellement,
environ 90Ko). Si e2writeboot
échoue à cause de ça, reformatez la
disquette et réessayez (par ex., avec fdformat(1)
). Par exemple, la
procédure suivante installe aboot
sur une disquette en supposant
que la disquette est dans le lecteur correspondant à /dev/fd0
:
fdformat /dev/fd0
mke2fs /dev/fd0
e2writeboot /dev/fd0 bootlx
Sachant que la commande e2writeboot
peut é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'installer
aboot
sur un disque dur en utilisant la commande swriteboot
.
swriteboot
né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 stocker aboot
. Sur un disque partitionné de cette façon
, il est alors possible
d'installer aboot
comme décrit ci-dessous (en supposant que le
disque correspond à /dev/sda
.) :
swriteboot /dev/sda bootlx
Sur 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 swriteboot
comme décrit à la section
booting pour écrire bootlx
avec le noyau Linux.
Pour construire un CD-ROM amorçable avec SRM, construisez
simplement aboot
comme décrit ci-dessus. Assurez-vous ensuite que le
fichier bootlx
est présent sur le système de fichiers iso9660
(e.g., copiez bootlx
dans le répertoire où est monté le système
de fichiers) ,
et lancez mkisofs
sur 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 bootlx
La commande ci-dessus nécessite que filesystem
est un fichier
contenant le système de fichiers iso9660 et que bootlx
a été copié dans la racine de ce système de fichiers. C'est tout !
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.gz
qui 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
Avec le firmware SRM et aboot
installé, le démarrage de
Linux s'effectue généralement avec une commande de la forme :
boot
devicename -fi
filename -fl
flags
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_OSFILE
et
BOOT_OSFLAGS
. La syntaxe et la signification de ces deux
arguments est décrite plus en détail ci-dessous.
L'argument filename est de la forme :
[n/]filename
n 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.gz
Ou, pour démarrer depuis le premier lecteur de disquette :
boot dva0 -file vmlinux.gz
Si un disque n'a pas de table des partitions, aboot
considère
que le disque contient une partition ext2
commenç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, aboot
considère que le noyau Linux suit
directement l'image de aboot
. Une telle chose peut être
réalisée avec la commande swriteboot
. 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).
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 :
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.
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
).
Lance le système en mode mono-utilisateur.
Autorise kernel-gdb (ne fonctionne que si CONFIG_KGDB
est 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à, aboot
peut être démarré
avec le drapeau de démarrage "i". Avec ce drapeau, aboot
demandera à 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 single
Comme démarrer de cette façon devient rapidement pénible
, aboot
autorise 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 à aboot
d'utiliser l'option
correspondante dans le fichier /etc/aboot.conf
. Un exemple de
fichier aboot.conf
est 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 1
correspond 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 aboot
affichera le contenu de
/etc/aboot.conf
avant d'afficher l'invite demandant la
chaîne d'option entière.
En conclusion, même si aboot
demande 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
Quand aboot
est installé sur un disque dur, il a besoin de
savoir sur quel partition il lui faut chercher le fichier
/etc/aboot.conf
. Nouvellement compilé, aboot
cherchera
sur la deuxième partition (/dev/sda2
). Comme il serait
contraignant d'avoir à recompiler aboot
uniquement pour changer
le numéro de la partition, abootconf
autorise à directement
modifier aboot
déjà installé. Par exemple, si vous désiriez
changer aboot
afin qu'il utilise la troisième partition du
disque /dev/sda
, vous utiliseriez la commande :
abootconf /dev/sda 3
Vous pouvez vérifier le réglage courant simplement en omettant le
numéro de partition. Alors, abootconf /dev/sda
affichera la
partition actuellement sélectionnée. Notez que aboot
être
déjà installé pour que cette commande réussisse. Aussi, lors de
l'installation d'un nouvel aboot
, le numéro de partition
redeviendra celui par défaut (i.e., il sera nécessaire de relancer
abootconf
).
Depuis la version 0.5 de aboot
, il est également possible de
sélectionner la partition contenant le fichier aboot.conf
depuis 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.conf
et
b est une option d'une lettre comme décrit plus haut
(0
-9
, i
, ou h
). Par exemple, si vous tapez
boot -fl "3:h" dka100
le système démarre depuis SCSI ID 1, charge
/etc/aboot.conf
depuis la troisième partition, affiche son contenu
à l'écran et attend que vous entriez les options de démarrage.
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 bootp
et 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 de bootp
. 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 programme bootpd
en
tâche de fond après avoir configuré le fichier
/etc/bootptab
. Le fichier bootptab
possède une entrée
par machine cliente autorisée à démarrer depuis le serveur. Par
exemple, si vous voulez démarrer la machine
myhost.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
08012B1C51F8
et que son adresse IP est 192.12.69.254. L'adresse
Ethernet peut être trouvée grâce à la commande show
device
de la console SRM ou, si Linux est lancé, avec la commande
ifconfig
. L'entrée précise également que si le client ne déclare
pas le contraire, le fichier qui sera lancé sera le fichier vmlinux.bootp
du répertoire /remote
. Pour plus d'informations sur la
configuration de bootpd
, reportez-vous à sa page de manuel.
Ensuite, construiser aboot
grâce à la commande make
netboot
. Assurez-vous que le noyau que vous désirez lancer a déjà été
construit. Par défaut, le Makefile
du programme aboot
utilise le noyau
/usr/src/linux/arch/alpha/boot/vmlinux.gz
(éditez le
Makefile
si vous désirez utiliser un autre chemin d'accés). Le
résultat de make netboot
est un fichier nommé vmlinux.bootp
contenant aboot
et le noyau Linux, prêt pour le
démarrage par réseau.
Enfin, copiez vmlinux.bootp
dans 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 Ethernet
ewa0
, donc, pour démarrer depuis ce périphérique, vous utiliserez
la commande :
boot ewa0
Les options -fi
et -fl
sont utilisable comme d'habitude. En
particulier, vous pouvez demander à aboot
d'attendre l'entrée
d'arguments pour le noyau Linux en spécifiant l'option -fl i
.