MonkeyBlog

Grub et les nouveaux disques durs.

GrubComme ca m’a pri un peu de temps, alors que ca semble quand meme super evident, j’en fais un petit billet qui n’est rien d’autre qu’un cri d’espoir au monde souhaitant que je ne sois pas le seul a rater les evidences :) .

La problematique est la suivante:
On a un systeme GNU/Linux (Debian dans mon cas) qui fonctionne tres bien, mais qui commence a etre un peu juste en place. Du coup on souhaite lui rajouter un autre disque dur plutot qu’etre propre et faire un peu de rangement. Seulement le nouveau disque dur pour une raison X ou Y sera le nouveau primary device, et l’ancien l’esclave du nouveau.
On se retrouve donc a devoir booter un disque qui ne contient pas forcement de bonne choses et qui surtout n’a aucune idee de notre configuration precedente, puisque celle ci se trouve sur l’autre disque dur.

La solution est (comme dit plus haut) plutot simple. Il suffit de se munir d’un live-cd et demarrer avec. Une fois lance on accede a un terminal et on regarde nos differents devices, dans ma configuration j’avais le nouveau disque dur en /dev/hda et l’ancien en /dev/hdd. Il faut donc d’abord formater le nouveau disque, pour cela on utilise mkfs de maniere un peu seche puisque celui ci efface tout simple le contenu du disque entier pour n’en faire qu’une grosse partition. La commande (en root, donc precedee d’un sudo si besoin) :

# mkfs -t ext2 /dev/hda

On confirme la commande, et cela nous cree donc une partition de la taille du nouveau disque dur de type ext2 (ou du type que vous souhaitez utiliser, et de la taille que vous voulez, je ne suis pas specialement difficile comme garcon).
Tout ca est bien sympa. Seulement en l’etat si on redemarre ca ne change rien, on bootera toujours sur le nouveau disque, propre cette fois, mais pas de grub, pas d’info, rien qui n’indique que notre systeme ne se trouve sur le second disque dur. Pour cela on lance la console de grub pour lui indiquer ou se trouve les infos utiles a grub, et ou les re-installer. Toujours en root on lance la console de grub :

# grub –batch

On souhaite retrouver notre configuration grub precedente, alors on lui demande ou la trouver:

> find /boot/grub/stage1
(hd1,0)

Maintenant que nous savons ou se trouve la configuration valide de grub (dans mon cas (hd1,0)) il suffit de dire a grub de l’utiliser et de s’installer sur le nouveau disque dur (soit hd0) par les commandes suivantes:

> root (hd1,0)
> setup (hd0)
> quit

Qu’avons nous jusqu’ici?
Un nouveau disque dur correctement formate et partitionne, qui a recu une installation de grub utilisant les informations de l’ancien disque dur, comme nous le souhaitions. On pourrait donc penser qu’en redemarrant tout se passerait bien dans le meilleur des mondes… qu’on retrouverait notre systeme comme avant mais avec un disque supplementaire. Et bien on se tromperait.
Puisqu’en redemarrant on arriverait bien sur un grub tout neuf, nous proposant des configurations coherentes, mais celle ci seraient innexploitables puisque pointant sur hd0, qui etait la position de l’ancien disque quand il etait seul, mais qui a ete bouleverse quand le nouveau disque a pri cette position, releguant donc l’ancien sur hd1. Pour etre clair, notre systeme se trouve donc maintenant sur hd1 et pas sur hd0 puisque le disque est vide.
Pour corriger ce probleme, il suffit d’ouvrir le fichier de menu des configuration de grub et modifier la ligne qui specifie ou se trouve le systeme. Il faut avant tout monter la partition / de notre systeme pour pouvoir acceder aux fichiers, dans mon cas :

# mkdir /tmp/monsysteme
# mount /dev/hdd2 /tmp/monsysteme

une fois ceci fait il suffit d’ouvrir /boot/grub/menu.lst avec votre editeur de texte prefere:

# emacs /tmp/monsysteme/boot/grub/menu.lst

et aux lignes de configuration (generalement en fin de fichier) nous devrions trouver quelque chose comme ceci :

title Debian GNU/Linux, kernel 2.6.17-2-486
root (hd0,0)
kernel /boot/vmlinuz-2.6.17-2-486 root=/dev/hdd1 ro
initrd /boot/initrd.img-2.6.17-2-486
savedefault

la ligne qui nous interesse est celle contenant la valeur du champs root. En effet on remarque que tout pointe encore sur (hd0,0) qui, en l’etat actuel, est notre nouveau disque. Remplacons le pour qu’il pointe sur l’ancien disque dur, ainsi on remplace la ligne root par celle que nous a retourne le find de la console grub precedemment, dans mon cas:

root (hd1,0)

On sauvegarde.
On redemarre.
“et voila”.

Je me suis ainsi rendu compte que ce qui me faisait tres peur hier (a savoir grub) n’est en fait pas si effrayant quand on prend le temps de le connaitre.
Plus qu’un probleme d’informatique, une lecon de vie :)

This entry was posted on Monday, June 16th, 2008 at 14:59 and is filed under Coding, Life. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

« Välkommen till MonkeyBlog.
Si on joue le jeu… »

2 Responses to “Grub et les nouveaux disques durs.”

  1. geoffrey Says:
    June 16th, 2008 at 16:04

    TRIVIAL MANIPULATION
    IS TRIVIAL

  2. Sasha Roar Says:
    June 21st, 2008 at 18:27

    J’aime quand tu bosses sur Debian. Ceci dit, grub me fait toujours aussi peur.

Leave a Reply

  • Archives

    • November 2008
    • October 2008
    • September 2008
    • August 2008
    • July 2008
    • June 2008
    • May 2008
    • April 2008
    • March 2008
    • February 2008
    • January 2008
    • December 2007
    • November 2007
    • October 2007
  • Categories

    • Blog (8)
    • Coding (11)
    • Gaming (23)
    • Life (33)
    • Other (3)

MonkeyBlog is proudly powered by WordPress | Bob