Page suivante Page précédente Table des matières GRUB-HOWTO: Ma première disquette GRUB super géniale  

11. Ma première disquette GRUB super géniale

Nous allons donc installer le GRUB sur une disquette, avec l'essentiel pour pouvoir tester en direct nos connaissances toutes neuves.

Le grub boutera depuis la disquette et chargera le fichier menu.lst qui effectuera immédiatement une transcription d'un clavier qwerty US (ce que l'on obtient par défaut) en un clavier azerty_FR ASCII (c'est-à-dire que les caractères accentués ne seront pas accessibles). Différentes entrées du menu permettent d'accéder à une aide sommaire sur :

11.1 Création de la disquette

Nous commençons par créer un système de fichiers supporté par le GRUB sur une disquette vierge. Ici de l'ext2 (sous root):


mke2fs /dev/fd0

Nous montons ce système de fichiers puis créons deux répertoires :


mount -t ext2 /dev/fd0 /floppy
mkdir /floppy/grub
mkdir /floppy/grub/doc

Nous recopions les stage1 et stage2 dans le répertoire grub de la disquette :


cp /boot/grub/stage? /floppy/grub

Nous ajoutons dans ce même répertoire le fichier de menu "menu.lst" que voici :


# GRUB : fichier "menu.lst" 

# Eh ! vous me reconnaissez ? Je vais vous en faire voir de toutes les
# couleurs... le premier couple foreground/background est pour le menu
# normal, le deuxième couple foreground/background est pour l'entree
# selectionnee
color white/blue yellow/cyan

# Emulation d'un clavier azerty_FR
setkey less backquote
setkey greater tilde
setkey ampersand 1
setkey 1 exclam
setkey tilde 2
setkey 2 at
setkey doublequote 3
setkey 3 numbersign
setkey quote 4
setkey 4 dollar
setkey parenleft 5
setkey 5 percent
setkey minus 6
setkey 6 caret
setkey backquote 7
setkey 7 ampersand
setkey underscore 8
setkey 8 asterisk
setkey backslash 9
setkey 9 parenleft
setkey at 0
setkey 0 parenright
setkey parenright minus
setkey numbersign underscore
# no change for equal
# no change for plus
setkey a q
setkey A Q
setkey z w
setkey Z W
setkey caret bracketleft
# no equivalent for diaresis => we keep the US braceleft
setkey dollar bracketright
# no equivalent for pound => we keep the US braceright
setkey q a
setkey Q A
setkey m semicolon
setkey M colon
setkey bracketleft quote 
setkey percent doublequote
setkey asterisk backslash
setkey bracketright bar
setkey w z
setkey W Z
setkey comma m
setkey question M
setkey semicolon comma
setkey period less
setkey colon period
setkey slash greater
setkey exclam slash
setkey bar question

# Par defaut bouter l'entrée N, ici la troisieme : l'aide sur les
# commandes de base. La troisieme c'est 2 (0,1,2).
default 2

# Si vraiment vous ne savez pas quoi faire, au bout de 20 secondes
# on lance la sequence 2
timeout 20


# Repasser le clavier en qwerty
title Repasser le clavier en qwerty
setkey

# Aide sur la transcription du fichier
title Aide sur la transcription du clavier
cat /grub/doc/azerty_FR.translation
pause Appuyez sur une touche pour continuer...

# Aide sur les commandes de base pour bouter
title Aide sur les commandes de base pour bouter
cat /grub/doc/commandes.txt
pause Appuyez sur une touche pour continuer

Puis, la maison ne reculant devant aucun sacrifice, les fichiers d'aide qui sont invoqués dans le menu vous sont fournis, et sont à mettre dans le répertoire "/floppy/grub/doc".

D'abord le fichier "azerty_FR.translation":


ATTENTION ! Seuls les caracteres ASCII sont disponibles : toutes les
lettres accentuees sont inaccessibles.
Les lettres sont a leur place. Par contre, certains caracteres ---
~ # | ` \ @ [ ] { } ---, normalement accedes par une combinaison de touches
( <Alt Gr> + <touche>) doivent etre affectes autrement. Les `<' et `>' 
portes par une 102 eme touche qui n'existe pas sur les PC US doivent etre
affectes ailleurs. D'ou 3 cas :

- un caractere accentue, non disponible, etait accede par la meme touche :
le caractere special reste sur sa touche, et le remplace : 
~ ('e) - ` (`e) - @ (`a) ;
- les `<' et `>' sont affectes a la touche portant l'exposant 2 ;
- les cas particuliers :
 o `{' et `}' sont a la place US et remplacent `trema' et `livre' ;
 o  `|' est assigne a `paragraphe' (mnemo : au-dessus vertical `!') ;
 o `#' est assigne a `degre' aka `numero' (mnemo : degre|diese,
   numero|numbersign) ;
 o `[' et `]' sont assignes a (`u) et `mu' (mnemo : penser regexp pres
 du joker *).

et le fichier "commandes.txt" que voici :


Pour bouter un OS, il faut trouver le noyau, dire au bootloader qu'il s'agit
d'un noyau, lui passer les paremetres et lui donner la main. Donc :

root (   
# appuyez sur <TAB> pour afficher les peripheriques disponibles

kernel (hd1,0)/mon_beau_noyau [parametres] 
# il faut charger _un noyau_ qui se trouve _là_, en lui passant tels
# [paramètres]

boot 
# chargez !

Et pour un noyau non supporte, trouver le secteur d'amorcage 
(512 octets == 1 bloc)

chainloader (hd0,1)+1  
# il faut pointer sur la bonne partition...

boot 
# chargez !

Et n'oubliez pas de lire les messages affiches par le GRUB...

Bien : tous les fichiers sont en place, mais la disquette n'est pas amorçable. Nous nous en occupons donc par la commande suivante (il faut être root) :


umount /floppy
/usr/local/sbin/grub --batch <<EOT
root (fd0)
setup (fd0)
quit
EOT

Où en fait nous utilisons le grub-shell (émulation sous Unix) en mode batch, en lui disant que tout ce dont il a besoin est sur la disquette (root (fd0)) --- par défaut le programme d'installation va chercher dans les répertoires /boot/grub et /grub --- et qu'il s'agit d'installer le grub sur la disquette (setup (fd0)).

Au démarrage, le menu va s'afficher. Lorsqu'une entrée est sélectionnée il suffit d'appuyer sur <ENTRÉE> pour que la séquence soit lancée.

Pour passer en ligne de commande, tapez `c'. Pour revenir au menu, tapez <ESC>. Cela n'est pas rappelé dans le fichier "commandes.txt", tout simplement parce que le GRUB l'affiche : regardez !

Nous avons alors une disquette amorçable, qu'il ne vous reste qu'à essayer. Et quand vous serez parvenus à revenir jusqu'ici, vous pourrez lire la suite...


Page suivante Page précédente Table des matières