Nouveau shell GRUB sur clé USB
6 pages
Français

Nouveau shell GRUB sur clé USB

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
6 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Nouveau shell GRUB sur clé USB
http://www.linux-france.org/~platu/weblog/
Dans la série sur les turpitudes de la gestion d'amorçage d'un système d'exploitation, voici un billet sur la trousse à outils de
secours ultime : l'installation de grub(2) sur clé USB et l'utilisation de son shell spécifique. Après avoir vanté les mérites du
vieux gestionnaire d'amorce LILO, voici le temps de la découverte des avantages du gestionnaire de nouvelle génération :
GRUB.
Table des matières
1. Contexte GRUB sur Debian GNU/Linux .................................................................................................. 1
2. Installation de GRUB sur clé USB .......................................................................................................... 1
3. Utilisation du shell GRUB ...................................................................................................................... 3
4. Quelques commandes utiles .................................................................................................................... 4
5. Pour conclure ........................................................................................................................................ 5
1. Contexte GRUB sur Debian GNU/Linux
À l'heure de la rédaction de ce billet, GRUB est en cours de transition entre une version «historique» fournie avec le
paquet grub-legacy et une version plus actuelle distribuée via plusieurs paquets : grub-common et grub-pc.
Attention ! ...

Sujets

Informations

Publié par
Nombre de lectures 137
Langue Français
Poids de l'ouvrage 2 Mo

Extrait

1
Nouveau shell GRUB sur clé USB
http://www.linux-france.org/~platu/weblog/
Dans la série sur les turpitudes de la gestion d'amorçage d'un système d'exploitation, voici un billet sur la trousse à outils de
secours ultime : l'installation de grub(2) sur clé USB et l'utilisation de son shell spécifique. Après avoir vanté les mérites du
vieux gestionnaire d'amorce LILO, voici le temps de la découverte des avantages du gestionnaire de nouvelle génération :
GRUB.
Table des matières
1. Contexte GRUB sur Debian GNU/Linux .................................................................................................. 1
2. Installation de GRUB sur clé USB .......................................................................................................... 1
3. Utilisation du shell GRUB ...................................................................................................................... 3
4. Quelques commandes utiles .................................................................................................................... 4
5. Pour conclure ........................................................................................................................................ 5
1. Contexte GRUB sur Debian GNU/Linux
À l'heure de la rédaction de ce billet, GRUB est en cours de transition entre une version «historique» fournie avec le
paquet
grub-legacy
et une version plus actuelle distribuée via plusieurs paquets :
grub-common
et
grub-pc
.
Attention ! Il n'est pas question ici de promouvoir cette nouvelle version. La transition entre les deux versions n'est
pas achevée et j'ai trois ou quatre machines sur lesquelles la migration n'a pas fonctionné comme prévu. Dans ce genre
de cas, la version de GRUB correspondant au paquet
grub-legacy
ayant largement fait ses preuves, le passage à un
nouveau gestionnaire d'amorce n'est pas justifié.
En revanche, j'ai découvert presque par hasard que le
shell
de la nouvelle version possède des fonctions dites
auto completion
particulièrement séduisantes lorsque la gestion d'amorçage est dans un état calamiteux. Ces mêmes
fonctions utilisées via un dispositif de stockage externe tel qu'une clé USB deviennent indispensables pour amorcer un
système d'exploitation sur une machine dont le partitionnement et les versions de noyaux disponibles sont inconnus.
2. Installation de GRUB sur clé USB
Cette section relève du plagiat éhonté puisque ce type d'installation a déjà été maintes fois présenté sur la toile. Voici
tout de même la liste des instructions d'installation.
Dans cet exemple, le disque dur du transportable M6300 est référencé
/dev/sda
et la clé USB
/dev/sdb
. Ses
caractéristiques se retrouvent dans les messages système après connexion.
usb 1-4: new high speed USB device using ehci_hcd and address 3
usb 1-4: New USB device found, idVendor=090c, idProduct=1000
usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-4: Product: USB Flash Disk
usb 1-4: Manufacturer: General
usb 1-4: SerialNumber: AA08061700013029
usb 1-4: configuration #1 chosen from 1 choice
Initializing USB Mass Storage driver...
scsi5 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 3
usb-storage: waiting for device to settle before scanning
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usb-storage: device scan complete
scsi 5:0:0:0: Direct-Access
General
USB Flash Disk
1100 PQ: 0 ANSI: 0 CCS
sd 5:0:0:0: Attached scsi generic sg2 type 0
sd 5:0:0:0: [sdb] 3917824 512-byte logical blocks: (2.00 GB/1.86 GiB)
sd 5:0:0:0: [sdb] Write Protect is off
sd 5:0:0:0: [sdb] Mode Sense: 43 00 00 00
sd 5:0:0:0: [sdb] Assuming drive cache: write through
sd 5:0:0:0: [sdb] Assuming drive cache: write through
Nouveau shell GRUB sur clé USB
2
sdb: sdb1
sd 5:0:0:0: [sdb] Assuming drive cache: write through
sd 5:0:0:0: [sdb] Attached SCSI removable disk
• La première opération consiste à créer une partition unique
bootable
sur la clé USB et à formater cette partition
avec un système de fichier FAT32. De cette façon, le BIOS de la machine reconnaîtra un périphérique de stockage
utilisable pour amorcer un système d'exploitation.
Pour cette opération, on utilise l'outil de partitionnement parted qui permet de faire tous les traitements requis.
# parted /dev/sdb
GNU Parted 1.8.8.git-dirty
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) rm 1
(parted) print
Model: General USB Flash Disk (scsi)
Disk /dev/sdb: 2006MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number
Start
End
Size
Type
File system
Flags
(parted)
mkpart primary 1MB 2006
(parted) mkfs 1 fat32
Warning: The existing file system will be destroyed and all data on the
partition will be lost. Do you want to continue?
parted: invalid token: 1
Yes/No? Yes
Partition number? 1
File system type?
[ext2]? fat32
(parted) toggle 1 boot
(parted) quit
Information: You may need to update /etc/fstab.
On note que la capacité exacte de la clé USB donnée par la commande
print
est utilisée pour créer la partition avec
la commande
mkpart
.
• La seconde opération consiste à installer GRUB sur le système de fichiers créé précédemment. On utilise la version
courante des paquets installé sur le transportable.
# dpkg -l grub* | grep ^ii
ii
grub
0.97-59
GRand Unified Bootloader (dummy package)
ii
grub-common
1.97-1
GRand Unified Bootloader, version 2 (common files)
ii
grub-pc
1.97-1
GRand Unified Bootloader, version 2 (PC/BIOS version)
Après avoir créé le répertoire d'installation de GRUB, on copie l'ensemble des modules disponibles de façon à
pouvoir traiter le maximum de configurations différentes possibles.
# mount /dev/sdb1 /mnt
# mkdir -p /mnt/boot/grub
# cp /usr/lib/grub/i386-pc/* /mnt/boot/grub/
On créé une carte minimale des périphériques de stockage disponibles avant de lancer l'installation du gestionnaire
d'amorce.
# echo '(hd0) /dev/sdb' > /mnt/boot/grub/device.map
# grub-install --root-directory=/mnt /dev/sdb
Installation finished. No error reported.
This is the contents of the device map /mnt/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(hd0) /dev/sdb
Nouveau shell GRUB sur clé USB
3
Ces deux étapes accomplies, la phase d'installation est achevée et on peut passer à l'exploitation du gestionnaire
d'amorçage GRUB à partir d'une clé USB.
3. Utilisation du shell GRUB
Dans cette section, on utilise la séquence d'initialisation du transportable M6300 pour illustrer les fonctions du
shell
GRUB à l'aide de clichés de qualité
remarquable
pris avec un téléphone mobile.
On commence par la sélection du périphérique de démarrage. Sur le transportable, la touche
F12
permet de choisir
la clé USB. Sur un poste fixe, il faut utiliser les menus du BIOS pour désigner le premier périphérique de stockage
utilisé pour lancer un système d'exploitation.
Choix du périphérique de démarrage
2
Une fois que l'invite de commande du
shell
GRUB est disponible, la première opération à réaliser consiste à choisir la
racine du
gestionnaire d'amorçage
à l'aide de la commande
root
.
• La commande
root
, utilisée sans paramètre, renvoie la racine en cours d'utilisation. Dans la vue ci-dessous, on
reconnaît l'identification du système de fichier de la clé USB que l'on formaté en FAT32.
(hd0,1): Filesystem is fat
• La même commande utilisée avec un autre périphérique de stockage en paramètre sert à désigner une nouvelle racine
à partir de laquelle on va pouvoir choisir le noyau à utiliser. Ici, on désigne le disque dur du transportable et sa
première partition. Le message renvoyé indique que le système de fichiers a bien été reconnu et que l'on peut le
parcourir à partir du
shell
. C'est justement la fonction qui nous intéresse !
Racine du gestionnaire d'amorçage
3
Pour choisir le noyau Linux à utiliser pour le lancement du système d'exploitation, on dispose de deux commandes
du
shell
:
linux
et
initrd
. La commande
linux
sert à désigner le fichier contenant la partie monolithique du noyau.
Généralement, ce fichier est baptisé
vmlinuz-*
. La commande
initrd
sert elle aussi à désigner un fichier. Il s'agit
cette fois ci de l'
initial ramdisk
qui contient une pseudo arborescence racine du système d'exploitation dans laquelle
on trouve un
shell
minimal (
BusyBox
), un ensemble d'outils et les modules du noyau.
2
images/grub-usb2.png
3
images/grub-usb3.png
Nouveau shell GRUB sur clé USB
4
Pour chaque utilisation des commandes
linux
et
initrd
, le
shell
GRUB renvoie un message de confirmation. Dans le
cliché ci-dessous, on utilisé la touche de
tabulation
pour obtenir la liste des fichiers disponibles.
Choix du noyau Linux
4
Une fois les deux fichiers du noyau choisis, il ne reste plus qu'à utiliser la commande
boot
pour lancer le système
d'exploitation normalement ou presque ... Lors de l'utilisation de la commande
linux
j'ai malencontreusement oublié de
préciser la
véritable racine
du système d'exploitation. En fait, cet oubli était volontaire. Il permet de montrer comment
identifier les volumes logiques disponibles à partir du
shell
BusyBox fourni via
initrd
.
Repérage de la racine du système d'exploitation
5
Comme précisé plus haut, l'arborescence contenue dans le fichier
initrd
contient un certain nombre d'outils, dont
ceux nécessaires à la gestion de volumes logiques. Dans le scénario de découverte d'une machine inconnue, on peut
activer tous les volumes disponibles à l'aide de la commande
vgchange -a y
. On identifie ainsi le volume correspondant
à la fameuse racine du système d'exploitation.
Une fois l'identification faite, il est possible de relancer le système à l'aide de la commande
reboot
et de reprendre les
étapes précédentes en précisant le paramètre
root=/dev/mapper/Amethyste-root
à la commande
linux
. Et cette
fois-ci, le système d'exploitation pourra se lancer normalement.
4. Quelques commandes utiles
Avec la version de GRUB utilisée, le
shell
est essentiellement modulaire. Qu'il s'agisse de ses propres fonctionnalités
comme la commande
ls
ou du support des systèmes de fichiers nécessaires au lancement d'un système d'exploitation,
tout est disponible sous forme de modules.
Il n'est pas question ici de reprendre la documentation officielle sur les commandes que l'on trouve à l'adresse
http://
grub.enbug.org/
6
. Simplement, voici quelques exemples de commandes et de syntaxe utiles pour la rédaction de ce
billet.
4
images/grub-usb4.png
5
images/grub-usb5.png
6
http://grub.enbug.org/ListeDesCommandes
Nouveau shell GRUB sur clé USB
5
lsmod, insmod
Ces deux commandes permettent de lister et charger des modules en mémoire. On peut citer l'exemple du module
raid
qui permet de reconnaître les système de fichiers sur des partitions RAID logicielles.
root
Cette commande est utilisable soit pour consulter la racine du système d'amorçage reconnu soit pour désigner une
nouvelle racine. Cette racine est fonction de carte établie lors de l'installation de GRUB sur le système. Cette carte
est stockée dans le fichier
/boot/grub/device.map
. Quantité d'erreurs rapportées sur les forums de la toile sont
relatives à un changement de référence sur la liste des périphériques de stockage contenue dans ce fichier. Il est
essentiel que cette carte et le paramétrage des menus soient cohérents.
Dans le cas du transportable, on dispose des informations suivantes :
$ cat /boot/grub/device.map
(hd0)
/dev/sda
$ grep -3 hd0 /boot/grub/grub.cfg
### BEGIN /etc/grub.d/05_debian_theme ###
insmod ext2
set root=(hd0,1)
search --no-floppy --fs-uuid --set 171f0aff-232a-4dc4-a4bc-b9f2ff2f6757
insmod png
if background_image /grub/moreblue-orbit-grub.png ; then
--
### BEGIN /etc/grub.d/10_linux ###
menuentry "Debian GNU/Linux, with Linux 2.6.31.5" {
insmod ext2
set root=(hd0,1)
search --no-floppy --fs-uuid --set 171f0aff-232a-4dc4-a4bc-b9f2ff2f6757
linux
/vmlinuz-2.6.31.5 root=/dev/mapper/Amethyste-root ro
initrd
/initrd.img-2.6.31.5
}
linux
Cette commande désigne le fichier image de la partie monolithique du noyau ainsi que ses paramètres
d'initialisation tels que la racine du système d'exploitation. Les paramètres de lancement du noyau Linux sont
documentés dans le fichier
kernel-parameters.txt
fourni avec ses sources. Comme dans le cas de la
commande
root
de GRUB, le fichier
/boot/grub/grub.cfg
donne un bon exemple avec la syntaxe des deux
paramètres importants :
linux
/vmlinuz-2.6.31.5 root=/dev/mapper/Amethyste-root ro
• Le paramètre
root
indique la racine du système d'exploitation à partir de laquelle le processus
init
est lancé.
• Le paramètre
ro
précise que cette racine doit être montée en lecture seule (
read only
) durant le lancement du
système.
Si
aucun paramètre
n'est fourni, l'initialisation du système s'arrête au niveau du
shell
BusyBox.
initrd
Cette commande simple désigne le fichier image de l'arborescence de chargement des modules du noyau Linux.
En plus de la mise à disposition des modules, cette arborescence fournit un ensemble minimum d'outils. Ces outils
peuvent être utilisés pour
identifier
les points de montage des différents périphériques de stockage.
initrd
/initrd.img-2.6.31.5
5. Pour conclure
Si vous êtes parvenu jusqu'à la lecture de ces lignes, vous serez peut-être moins intimidé par ce terrible monstre qu'est
le gestionnaire d'amorce ! Il faut dire que dans le contexte d'exploitation professionnelle, ces manipulations se font
dans des conditions de stress très importantes. Si un système ne se lance plus normalement, c'est que l'on est face à
un problème sérieux.
Nouveau shell GRUB sur clé USB
6
Disposer d'un gestionnaire d'amorce sur périphérique externe comme une clé USB peut être déterminant dans ces
situations critiques.
Enfin, c'est l'occasion de recycler une superbe clé USB Canal+ qui aurait été totalement inutile autrement ! Vous l'aurez
constaté, je n'ai aucun goût pour les
goodies
.
Ce document est disponible en version imprimable au format PDF :
grub-usb.pdf
7
.
$Id: grub-usb.xml 1430 2009-11-02 22:39:06Z latu $
7
http://www.linux-france.org/~platu/weblog/telechargement/grub-usb.pdf
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents