Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
linux:grub_fallback_ou_comment_rebooter_sur_un_autre_quenelle_si_on_se_loupe [2008/02/14 10:01]
gl
linux:grub_fallback_ou_comment_rebooter_sur_un_autre_quenelle_si_on_se_loupe [2010/01/12 13:29] (current)
Line 1: Line 1:
 +Qui ne s'est jamais retrouvé dans une situation où, lors d'une bidouille sur le noyau avec compilation et tout le tralala, la machine ne démarre plus après un reboot.\\
 +Toi, oui toi, qui recompiles ton noyau avec des patchs par ci et par là, n'​as-tu jamais eu la petite goutte de sueur lors d'un "​shutdown -r now" et bien sûr sur une machine distante ?\\
  
 +Alors, afin d'​éviter de devoir redémarrer sur un mode de secours, il est possible avec grub de redémarrer automatiquement sur un autre noyau qui fonctionnait correctement !
 +Pourquoi ne pas en profiter !?
 +
 +Ingrédients nécessaires à la démonstration:​
 +
 +- un grub\\
 +- un noyau qui marche pas\\
 +- un noyau qui marche\\
 +
 +On édite le fichier de conf grub ''/​boot/​grub/​menu.lst'':​
 +
 +<​code>​
 +# Boot automatically after 10 secs.
 +timeout 10
 +
 +# By default, boot the first entry.
 +default saved #important
 +
 +# Fallback to the second entry.
 +fallback 2 #indique en cas de problème sur le boot de précédent,​ sur quel noyau retourner
 +
 +
 +title           ​Debian GNU/Linux, kernel 2.6.23.1-rsbac02
 +root            (hd0,0)
 +kernel ​         /​vmlinuz-2.6.23.1-rsbac02 root=/​dev/​md2 ro
 +initrd ​         /​initrd.img-2.6.23.1-rsbac02
 +savedefault fallback #important
 +
 +title           ​Debian GNU/Linux, kernel 2.6.23.1-rsbac02 (single-user mode)
 +root            (hd0,0)
 +kernel ​         /​vmlinuz-2.6.23.1-rsbac02 root=/​dev/​md2 ro single
 +initrd ​         /​initrd.img-2.6.23.1-rsbac02
 +savedefault
 +
 +title           ​Debian GNU/Linux, kernel 2.6.18-6-686
 +root            (hd0,0)
 +kernel ​         /​vmlinuz-2.6.18-6-686 root=/​dev/​md2 ro
 +initrd ​         /​initrd.img-2.6.18-6-686
 +savedefault
 +
 +title           ​Debian GNU/Linux, kernel 2.6.18-6-686 (single-user mode)
 +root            (hd0,0)
 +kernel ​         /​vmlinuz-2.6.18-6-686 root=/​dev/​md2 ro single
 +initrd ​         /​initrd.img-2.6.18-6-686
 +savedefault
 +</​code>​
 +
 +
 +
 +
 +On voit dans ma configuration,​ que mon noyau de secours est "​Debian GNU/Linux, kernel 2.6.18-6-686"​ en troisième position dans la liste, soit fallback 2 (le premier élément de la liste est 0).
 +
 +On indique ensuite à grub quel est le noyau à booter par défaut, avec le parametre suivant : <​code>​default saved</​code>​\\
 +Oui, mais comment lui indiquer le "​saved"​ ?\\
 +En shell sous root:
 +
 +
 +<​code>#​grub-set-default 0</​code>​
 +
 +Donc à partir de la, grub bootera par défaut sur mon noyau "​Debian GNU/Linux, kernel 2.6.23.1-rsbac02"​ qui en l'​occurrence ne marche pas à cause d'une erreur configuration de [[http://​www.rsbac.org/​|RSBAC]].
 +
 +Après quelques minutes d'​attente,​ je vais donc me rendre dans l'​interface de management de mon serveur dédié et je vais lancer un reboot.\\
 +Et la, comme par magie, grub va automatiquement retourner sur mon noyau de backup à savoir "​Debian GNU/Linux, kernel 2.6.18-6-686"​\\
 +Grub continuera à booter sur le noyau de secours tant qu'on ne lui dira de changer de noyau par défaut.\\
 +donc, apres avoir corrigé le probleme on retape la commande kivabien :
 +<​code>#​grub-set-default 0</​code>​\\
 +
 +Pour savoir quelle est la configuration actuelle, un petit <​code>​cat /​boot/​grub/​default</​code>​
 +Ceci vous indiquera le numéro retenu par grub et donc le "​saved"​.
 +
 +Il est bien sûr possible de spécifier plusieurs noyaux de fallback à grub, pour cela il faut ajouter les numeros séparés par un exemple à la liste "​fallback",​ exemple:
 +<​code>​fallback 2 4 6</​code>​
 +
 +Ajouter aussi "​fallback"​ au "​sauvedefault"​ de chaque liste de noyau, sauf le dernier !
 +<​code>​
 +title           ​Debian GNU/Linux, kernel 2.6.23.1-rsbac02
 +root            (hd0,0)
 +kernel ​         /​vmlinuz-2.6.23.1-rsbac02 root=/​dev/​md2 ro
 +initrd ​         /​initrd.img-2.6.23.1-rsbac02
 +savedefault fallback #important
 +</​code>​
 +
 +
 +Voila, tu peux maintenant patcher, compiler les yeux fermés, du moment que tu gardes un noyau qui marche !
 +
 +Attention : Apres chaque boot, infructueux ou non, la valeur du default saved est toujours incrémenté à la valeur supérieure,​ donc même apres un boot réussi, ne pas oublié un petit <​code>#​grub-set-default 0</​code>​\\
linux/grub_fallback_ou_comment_rebooter_sur_un_autre_quenelle_si_on_se_loupe.txt · Last modified: 2010/01/12 13:29 (external edit)