Déplacer le disque dur principal d'une machine Debian, facile ?
Le samedi 18 juillet 2009 à 19:10 - Lien permanent
C'est ce que je croyais...
On a dû changer de bus et/ou d'emplacement le disque root d'un serveur ? Qu'à cela ne tienne, on modifie le disque de boot dans le BIOS, on édite les options de grub au démarrage, puis une fois le système booté on va dans /boot/grub/menu.lst
pour rendre les changements définitifs. Il y a alors deux lignes par noyau à changer, du type :
root (hd0,0) kernel /boot/vmlinuz-2.6.18-6-486 root=/dev/hda1 ro
À chaque fois, il convient de mettre la bonne partition : ici hd0,0
ou /dev/hda1
, selon la convention choisie.
Bien, bien. On reboote la machine, pour valider la chose. Elle boote comme un charme, pas de problème. On va donc la remettre à son emplacement de « production », au hasard au fond d'un placard, sans clavier ni écran bien entendu. Encore un boot, tout se passe bien, on en profite pour appliquer les dernières mises à jour, puis la machine vit sa vie.
Un jour, la machine reboote pour une raison quelconque, et là, perte de contact réseau ! Bien qu'elle soit headless, on se rend vite compte que Debian n'a pas booté. On l'extrait de son placard, on la connecte à un écran et un clavier, et là stupeur, on constate que grub cherche à booter sur l'ancien emplacement de la partition racine... À se taper la tête contre les murs.
Explication
Parmi les mises à jour effectuées, il y avait eu une mise à jour du noyau. Or lors des mises à jour du noyau, les sections par défaut de menu.lst
(celles qui sont repérées par les BEGIN/END AUTOMAGIC KERNELS LIST
) sont écrasées par un script qui s'appelle update-grub
. Les modifications faites à la main sont donc perdues. Il ne faut donc pas faire comme expliqué ci-dessus sous Debian, mais au contraire, modifier directement les paramètres qui sont utilisés par update-grub
. Ces paramètres sont donnés directement dans le fichier menu.lst
, sous forme de commentaires spéciaux. Il y en a deux qui nous intéressent :
# kopt=root=/dev/hda1 ro # groot=(hd0,0)
Ce sont donc ces deux lignes qu'il faut modifier, puis pour appliquer les modifications aux lignes « réelles » du fichier de configuration, il suffit d'appeler update-grub
.
Commentaires
Et dire que ça va faire un an que je réédite précautioneusement le menu.lst de mon amd64 qui a besoin du 'acpi=off' pour tourner après chaque update automatique ...
Merci d'avoir partagé ce tuyau avec nous.
Bion, il m'a fallu le temps de comprendre quand-même ... ne pas dé-commenter # kopt=...
update-grub va lire les commentaires entre BEGIN AUTOMAGIC ... et END AUTOMAGIC ... pour réécrire toutes les entrées. Ca explique les commentaires doublement commentés :P