[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Résolu] Re: Configuration grub



Merci Kevin pour cette réponse complète qui m'a permis de résoudre mon problème, je n'y ai pas passé 1 mois je te rassure :-)

La ligne #GRUB_DISABLE_LINUX_UUID=true était bien commentée, je ne sais pas pourquoi à la mise à jour de Debian la configuration de Grub n'a pas été mise à jour, par contre j'ai compris grâce à l'étude du script pourquoi la regénération du script grub ne fonctionnait pas avec un rescue CD.

Le script grub-mkconfig cherche les UUID dans /dev/disks/by-uuid. Or dans un chroot le répertoire /dev est vide ! Et avec un répertoire vide le script n'utilise pas les UUID.

Pour contourner ce problème, il faut monter le répertoire /dev à l'emplacement /monpointdemontagechroot/dev avec mount --bind

Automatiquement le script grub fonctionne.

Merci encore Kevin pour ton mail qui m'a permis de gagner énormément de temps.

Mickaël


Le 24/08/2010 16:57, Kevin Hinault a écrit :
Le 24 août 2010 15:50, Vera Mickael<vera.mickael@free.fr>  a écrit :

Est-ce que quelqu'un sait comment forcer le nom de la partition qui est
écrite dans grub.cfg ?

Comme l'a fait remarquer Sylvain déjà : pourquoi n'utilises tu pas les
UUID plutôt que les noms des disques ?

Pour ça il suffit de commenter la ligne suivante dans /etc/default/grub

#GRUB_DISABLE_LINUX_UUID=true

En fait le script /etc/grub.d/10_linux est exécuté purement et
simplement par grub-mkconfig qui lui va d'abord chercher les UUID
grâce à grub-probe.

Si tu veux en avoir le coeur net, tu peux exécuter à la main le script
pour simuler le travail de grub-mkconfig :

Exportes des variables d'environnement :
# export GRUB_DISABLE_LINUX_UUID="false"
# export GRUB_DEVICE=`grub-probe --target=device /`
# export GRUB_DEVICE_UUID=`grub-probe --device $GRUB_DEVICE --target=fs_uuid`
# export GRUB_DEVICE_BOOT=`grub-probe --target=device /boot`
# export GRUB_DEVICE_BOOT_UUID=`grub-probe --device $GRUB_DEVICE_BOOT
--target=fs_uuid`

Puis exécutes le script.
# /etc/grub.d/10_linux

Chez moi ça se traduit comme ça:
Found linux image: /boot/vmlinuz-2.6.32-5-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-amd64
menuentry 'GNU/Linux, avec Linux 2.6.32-5-amd64' --class gnu-linux
--class gnu --class os {
         insmod part_msdos
         insmod ext2
         set root='(hd0,msdos8)'
         search --no-floppy --fs-uuid --set 3190b419-d40f-4bc3-9a5c-012f66e18650
         echo    'Chargement de Linux 2.6.32-5-amd64 ...'
         linux   /boot/vmlinuz-2.6.32-5-amd64
root=UUID=3190b419-d40f-4bc3-9a5c-012f66e18650 ro
         echo    'Chargement du disque mémoire initial ...'
         initrd  /boot/initrd.img-2.6.32-5-amd64
}
[... ]

Tentes
# export GRUB_DISABLE_LINUX_UUID="true"

et tu verras plutôt :
linux   /boot/vmlinuz-2.6.32-5-amd64 root=/dev/sda8 ro


Attention il y a une subtilité dans le script /etc/grub.d/10_linux,
sur machine où le / est dans un lvm alors le script force
l'utilisation du nom du device dans /dev pour le paramètre root= passé
au noyau. Soit /dev/mapper/[Quelquechose]-root

Bref tout ça pour dire que c'est le script 10_linux qui écrit le
partie du fichier grub.cfg qui t'interesse et il st très facilement
lisible.


Merci,
Mickaël

Oups pardon je t'ai appelé Vera un plus tôt :/



Reply to: