Forum Linux.général problème de définition de partition dans /boot/grub/menu.lst

Posté par  .
Étiquettes :
-1
3
avr.
2012

Bonjour,

J'ai un petit problème avec grub2 (edit : faux, c'est grub v 0.97) sur ma mageia.
Suite très certainement à une installation initiale un peu naze, grub deux pense que ma partition de boot se trouve sur hd2 (/dev/sdc) au lieu de hd0 (/dev/sda)

A chaque mise à jour de noyau, le menu.lst est réécrit avec la fausse entrée hd2 (malgré un menu.lst pré-mise à jour corrigé avec hd0.

   [root@hyperion ~]# cat /boot/grub/menu.lst
    timeout 5
    color black/cyan yellow/cyan
    gfxmenu (hd0,0)/boot/gfxmenu
    default 0

    title linux
    kernel (hd0,0)/boot/vmlinuz [...]

devient

    [root@hyperion grub]# cat /boot/grub/menu.lst
    timeout 5
    color black/cyan yellow/cyan
    gfxmenu (hd2,0)/boot/gfxmenu
    default 0

    title linux
    kernel (hd2,0)/boot/vmlinuz [...]
    initrd (hd2,0)/boot/initrd.img [...]

    [...]    

    title desktop 3.3.1-1.mga2
    kernel (hd2,0)/boot/vmlinuz-3.3.1-desktop-1.mga2 [...]
    initrd (hd2,0)/boot/initrd-3.3.1-desktop-1.mga2.img

Un petit sed et tout rentre dans l'ordre…

    [root@hyperion ~]# sed -i s/hd2/hd0/ /boot/grub/menu.lst

Mais comme je suis étourdi, un fois sur deux j'oublie de faire le sed et je me retrouve à éditer les paramètres de boot à la main dans le menu boot de grub
Certes je pourrais l'automatiser mais ce n'est pas élégant et je voudrais savoir comment réparer le problème.

J'ai fouillé dans avec un grep hd2 /boot/grub.
Il y a bien un install.sh

    [root@hyperion grub]# cat install.sh
    grub --device-map=/boot/grub/device.map --batch <<EOF
    root (hd2,0)
    setup --stage2=/boot/grub/stage2 (hd2,0)
    quit
    EOF

mais sa modification de hd2 en hd0 ne change rien non plus, il revient aussi à hd2 à chaque mise à jour.

Internet ne m'a pas été d'un grand secours sur ce sujet précis.

Ma question est donc : quel fichier/paramètre permet de définir la partition de boot de grub définitivement ?

  • # recalcule de device.map

    Posté par  . Évalué à 3.

    [root@hyperion grub]# cat install.sh
    grub --device-map=/boot/grub/device.map --batch root (hd2,0)
    setup --stage2=/boot/grub/stage2 (hd2,0)
    quit
    EOF

    dans ton exemple, il utilise le device.map
    je dirais que c'est la dedans qu'il y a l'info que ton disque est hd2 et pas hd0

    de memoire, il y a une option pour dire à grub de recalculer le device.map

    • [^] # Re: recalcule de device.map

      Posté par  . Évalué à 1. Dernière modification le 03 avril 2012 à 15:47.

      device.map contient la liste des disques durs.

      (hd0) /dev/sda
      (hd1) /dev/sdb
      (hd2) /dev/sdc
      (hd3) /dev/sdd

      rien ne semble préciser quoi prendre en tant que partition de boot et lui imposer d'utiliser hd0,0 et pas hd2,0

      j'ai bien trouvé grub-install qui semble fait pour faire le job mais j'ai un peu peur de faire des bêtises… notamment à cause du commentaire qui suit --recheck

      /sbin/grub-install --help
      Unrecognized option `--help
      Usage: grub-install [OPTION] install_device
      Install GRUB on your drive.
      
        -h, --help              print this message and exit
        -v, --version           print the version information and exit
        --root-directory=DIR    install GRUB images under the directory DIR
                                instead of the root directory
        --grub-shell=FILE       use FILE as the grub shell
        --no-floppy             do not probe any floppy drive
        --force-lba             force GRUB to use LBA mode even for a buggy
                                BIOS
        --recheck               probe a device map even if it already exists
                                This flag is unreliable and its use is
                                strongly discouraged.
      
      INSTALL_DEVICE can be a GRUB device name or a system device filename.
      
      grub-install copies GRUB images into the DIR/boot directory specfied by
      --root-directory, and uses the grub shell to install grub into the boot
      sector.
      
      

      au pire, je lirai le code de grub-install en bash ce soir…

      • [^] # Re: recalcule de device.map

        Posté par  . Évalué à 4.

        Et refaire un bête grub-install, sans utiliser l'option --recheck, c'est plus simple et ça ne risque pas grand chose (si on fait un peu attention) et ça résoudrait peut-être le problème.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: recalcule de device.map

          Posté par  . Évalué à 1.

          C'est sûrement ce que je vais finir par faire…
          Je trouvais ça juste bizarre que ce ne soit pas écrit quelque part.

          • [^] # Re: recalcule de device.map

            Posté par  . Évalué à 1.

            en passant, c'est grub legacy 0.97 et non grub2 qui est présent contrairement à ce que je pensais…
            J'aurais du faire un grub --version dès le début.
            d'où l'absence de /etc/grub.d/ et la présence de menu.lst (remplacer par grub.cfg dans grub 2)
            Je retourne chercher sur le net en évitant les pages sur grub2..

  • # Une piste

    Posté par  . Évalué à 4.

    Je ne sais pas pour Mageia mais en tous cas pour Debian il ne faut pas modifier directement le menu.lst si tu veux que les changements restent suite aux mises à jour. Il faut intégrer tes changements aux fichiers dans /etc/grub.d/ (qui sont les templates utilisés par update-grub pour créer le menu.lst)

    • [^] # Re: Une piste

      Posté par  . Évalué à 1. Dernière modification le 03 avril 2012 à 16:22.

      Je n'ai pas ce genre de dossier.
      Je pense qu'il correspond à /boot/grub ici.
      Je pensais justement que /boot/grub/install.sh faisait office de template mais il semble lui même modifié à chaque mise à jour.
      Si update-grub est un commande dispo sur Debian, mageia ne semble en disposer.

      Et j'ai rien vu d'intéressant pour définir la partition de boot dans les outils graphiques du mcc.

      • [^] # Re: Une piste

        Posté par  . Évalué à 3. Dernière modification le 03 avril 2012 à 16:26.

        Je pense qu'il correspond à /boot/grub ici.

        Non non, il y a bien /boot/grub aussi ici…

        Tu devrais peut-être poser la question sur un forum Mageia ? Je ne peux pas t'aider je ne connais pas cette distribution. Bon courage en tous cas et peut-être qu'un Mageieu (?) passera par là. Qui sait ?

        • [^] # Re: Une piste

          Posté par  . Évalué à 1.

          moui, je pensais peut être à tort que ce problème de grub était plus général et non lié à une distrib précise.
          J'irai éventuellement faire un tour sur les forums mageia…
          Merci pour les infos.

      • [^] # Re: Une piste

        Posté par  . Évalué à 1.

        En fait, je me rate totalement sur le sujet, le configurateur de démarrage du mcc possède bien des options pour modifier le périphérique d’amorçage mais rien n'est réellement appliqué au final.

        Cf le log de l’exécution ci dessous (si des fois cela parle à quelqu'un).

            GNU GRUB  version 0.97  (640K lower / 3072K upper memory)
        
         [ Minimal BASH-like line editing is supported.  For the first word, TAB
           lists possible command completions.  Anywhere else TAB lists the possible
           completions of a device/filename. ]
        grub> root (hd2,0)
         Filesystem type is ext2fs, partition type 0x83
        grub> setup --stage2=/boot/grub/stage2 (hd0,0)
         Checking if "/boot/grub/stage1" exists... yes
         Checking if "/boot/grub/stage2" exists... yes
         Checking if "/boot/grub/e2fs_stage1_5" exists... yes
         Running "embed /boot/grub/e2fs_stage1_5 (hd0,0)"... failed (this is not fatal)
         Running "embed /boot/grub/e2fs_stage1_5 (hd2,0)"... failed (this is not fatal)
         Running "install --stage2=/boot/grub/stage2 /boot/grub/stage1 d (hd0,0) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded
        Done.
        grub> quit
        
        

        malheureusement hd2,0 reste dans le menu.lst

        [root@hyperion grub]# more /boot/grub/menu.lst
        timeout 5
        color black/cyan yellow/cyan
        gfxmenu (hd2,0)/boot/gfxmenu
        default 0
        
        title linux
        kernel (hd2,0)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=333399c9-440a-4128-820f-9f4e006b8718 nokmsboot splash quiet resume=UUID=aadf478e-a147-46bb-9add-19c93646cc4a vga=794
        initrd (hd2,0)/boot/initrd.img
        
        title desktop 3.3.1-1.mga2
        kernel (hd2,0)/boot/vmlinuz-3.3.1-desktop-1.mga2 BOOT_IMAGE=desktop_3.3.1-1.mga2 root=UUID=333399c9-440a-4128-820f-9f4e006b8718 nokmsboot splash quiet resume=UUID=aadf478e-a147-46bb-9add-19c93646cc4a vga=794
        initrd (hd2,0)/boot/initrd-3.3.1-desktop-1.mga2.img
        
        

        J'ai essayé de refaire les commandes du log à la mano dans le shell grub en remplaçant hd2 par hd0 mais sans succès, j'ai une erreur de fichier non trouvé.

        root (hd0,0)
         Filesystem type is ext2fs, partition type 0x83
        grub> setup --stage2=/boot/grub/stage2 (hd0,0)
        setup --stage2=/boot/grub/stage2 (hd0,0)
         Checking if "/boot/grub/stage1" exists... no
         Checking if "/grub/stage1" exists... no
        
        Error 15: File not found
        
        

        Mais je ne comprends pas grand chose à ce 'File not found'. Le dossier /boot/grub contient bien stage1 et stage2 et est présent sur /dev/sda1 (hd0,0).

        Je vais finir par refaire une installation du grub via le install-grub.sh. Ce sera peut être formateur.

  • # Question bonus

    Posté par  . Évalué à 3.

    C'est quoi "une installation initiale un peu naze"?

    • [^] # Re: Question bonus

      Posté par  . Évalué à 1.

      Le fait d'avoir choisi sans faire gaffe de coller le mdr dans sdc1 une première fois puis de recommencer l'installation suite à un crash en choisissant cette fois sda1.
      C'est la cause que j'associe à ce bug. Peut être que je me trompe…

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.