mercredi 3 octobre 2012

Clef de secours

Ce sujet ne traitera pas de la constitution d'une clef usb permettant de réparer windows.
Pour ceux qui seraient intéressés, ce lien devrait les combler.
Nous allons ici parler ici d'une clef permettant de démarrer linux lorsque cette possibilité a été perdue suite par exemple à l'utilisation d'une clef usb (ou d'un cd) de réparation de windows.
Bien sûr, il y a toujours moyen de s'en sortir via l'utilisation d'un Live cd, mais la procédure est beaucoup plus lourde.
Le mieux est d'être prévoyant.
Donc, supposons que nous pouvons accéder sans problèmes à notre système linux.
Déterminons quelles sont les partitions utilisées par notre système à l'aide la commande df:


La partition racine de notre système est /dev/sda7.
Nous constatons la présence d'une clef usb reconnue en tant que /dev/sdc et dont l'unique partition 1 est montée en /media/KINGSTON.
La première opération, consiste, si ce n'est déjà fait, à installer grub (acronyme de Grand Unified Bootloader) sur le secteur d'amorce (VBR) de la partition racine. En effet, rien n'empêche d'installer grub à la fois sur /dev/sda (donc sur le MBR) et sur le VBR de /dev/sda7. On dispose ainsi de deux portes d'entrée pour lancer notre système linux.
Procédons à l'aide de la commande:

# grub-install --force /dev/sda7

L'option --force n'est tellement appréciée par le système et il nous le fait savoir.
Le grub installé sur /dev/sda7 ne peut être utilisé qu'en tant que chargeur secondaire.
Nous verrons dans un autre billet comment il peut être initié par le chargeur de windows. Dans ce billet nous allons montrer comment procéder en bootant sur une clef usb (ceci a déjà été évoqué dans ce billet).
Tout d'abord, il convient d'installer grub sur le secteur d'amorce de la clef usb et le faire pointer vers des fichiers qui seront enregistrés sur la clef:

# grub-install --boot-directory=/media/KINGSTON /dev/sdc

Il est à remarquer que les données présentes sur la clef (par exemple formatée en FAT32) ne sont absolument pas impactées par l'opération: elle peut donc continuer à être utilisée de manière classique.
Simplement il y a apparition d'un dossier grub contenant tous les fichiers liés à ce chargeur. Il y manque le fichier de configuration grub.cfg.
Afin de pouvoir le constituer, il serait utile d'avoir quelques informations complémentaires sur /dev/sda7:


Constatant que la partition n'avait pas de label, nous lui en avons attribué un (en rapport évidemment avec le système linux installé)
Nous pouvons créer un fichier de configuration utilisant l'UUID de /dev/sda7, et contenant:

search --no-floppy --fs-uuid --set=root 5eba7617-afd6-4480-9b65-fb4e48de3d3c
chainloader +1
boot

On peut aussi fonctionner avec le label:

search --no-floppy --label --set=root Ubuntu
chainloader +1
boot

L'avantage de cette dernière solution est que la clef peut être utilisée sur différentes machines à condition que les partitions utilisées pour booter aient toutes le même label (à savoir Ubuntu dans cet exemple).

Et voilà: pourvu que le bios soit configuré pour booter en priorité sur l'usb, il suffit de démarrer avec une clef insérée pour amorcer linux sans utiliser le MBR

Pour avoir l'opportunité de choisir le système à amorcer, il faut évidemment une étape supplémentaire, à savoir afficher un menu, ce qui s'obtient par exemple avec un fichier de configuration tel que celui-ci:

menuentry "Ubuntu" { 
search --no-floppy --label --set=root Ubuntu 
chainloader +1

menuentry "Linux Mint" { 
search --no-floppy --label --set=root Mint 
chainloader +1
}