[Résolu] Grub compatibilité ext4 - boot debian/ubuntu/win

Bonjour,

je viens d’installer lenny et je n’ai plus accès à mon ubuntu !
Apparemment ça vient d’un problème de compatibilité du grub de Debian avec l’ext4…

Voici mes partitions:

/dev/sda1/ windows xp NTFS /dev/sda2/ linux swap swap /dev/sda3/ debian lenny ext3 /dev/sda4/ --partition entendue-------------- |---- /dev/sda5/ données fat32 |-----/dev/sda6/ données ext3 |-----/dev/sda7/ ubuntu karmic ext4

[code]sebastien-desktop:/home/sebastien# fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xba76ba76

Device Boot Start End Blocks Id System
/dev/sda1 1 2295 18434556 7 HPFS/NTFS
/dev/sda2 2296 2538 1951897+ 82 Linux swap / Solaris
/dev/sda3 2539 4833 18434587+ 83 Linux
/dev/sda4 4834 60801 449562960 5 Extended
/dev/sda5 4834 7128 18434556 b W95 FAT32
/dev/sda6 7129 58547 413023086 83 Linux
/dev/sda7 58548 60801 18105223+ 83 Linux[/code]

comment m’y prendre pour récupérer ubuntu?

je pensais éventuellement procéder comme suit afin d’utiliser le grub d’ubuntu:
-booter avec le live-cd d’ubuntu
(-monter la partition ubuntu sda7) -> utile?
-mettre à jour grub avec update-grub (pour prendre en compte debian)

Mais je ne suis pas sur de moi et j’ai peur de faire une erreur, est-ce que c’est bon ?
est-ce qu’il faut que je fasse aussi sudo grub-install /dev/sda ? avant update-grub?

merci

Salut,

Grub n’a pas de problème en ext4 (je l’utilise) et le grub de Debian n’est pas spécial à Debian :slightly_smiling:

Peut-être en est-il autrement sous Ubuntu, familier de ce genre de choses :slightly_smiling:

Ajoutes Ubuntu au menu de grub !

perso je ne connais pas grub, mais sur le forum d’ubuntu, ils semblent dire que debian et ubuntu n’ont pas la même version: grub legacy ou (os1) pour lenny et grub 2 ou (os2) pour ubuntu (karmic koala)…

http://forum.ubuntu-fr.org/viewtopic.php?id=372019
http://forum.ubuntu-fr.org/viewtopic.php?id=361264

[quote]
On est dans une délicate phase de double transition :
ext3 --> ext4, avec les anciens noyaux (Lenny p.ex) qui ne gèrent pas le ext4
grub-legacy --> grub-pc, avec grub-legacy qui ne gère pas le ext4 non plus (sans compter le changement radical de configuration)[/quote]

je suppose que tu parle de rajouter des lignes dans le fichier /boot/grub/menu.lst…
mais quelle ligne rajouter?
ça ressemble à ça:

**title** Ubuntu 8.04, kernel 2.6.24-18-generic root (hd0,6) kernel /boot/vmlinuz-2.6.24-18-generic root=UUID=e9aecbac-8ff7-42fb-96c2-09c36461a8db ro quiet splash initrd /boot/initrd.img-2.6.24-18-generic quiet
(hd0,6)–> pour sda7
mais je ne connais pas les numéros derrières vmlinuz, ni l’uuid…

Salut,

Je pensais que Grub-legacy ne prenait pas en charge le ext4 ?.. Je me trompais ?

Sinon, pour le problème de CasseTaTele, un simple chaiload vers le grub (grub2 ?) de Ubuntu ne réglerais pas le problème ? (Si le grub de Ubuntu est installé, et s’il est dans /dev/sda7/)

Pour répondre au dernier message, grub2 existe aussi sous Lenny :apt-cache policy grub2 grub2: Installé : (aucun) Candidat : 1.96+20080724-16 Table de version : 1.97~beta3-1~bpo50+1 0 1 http://www.backports.org lenny-backports/main Packages 1.96+20080724-16 0 500 http://ftp.fr.debian.org lenny/main Packages

[quote=“CasseTaTele”]perso je ne connais pas grub, mais sur le forum d’ubuntu, ils semblent dire que debian et ubuntu n’ont pas la même version: grub legacy ou (os1) pour lenny et grub 2 ou (os2) pour ubuntu (karmic koala)…

http://forum.ubuntu-fr.org/viewtopic.php?id=372019
http://forum.ubuntu-fr.org/viewtopic.php?id=361264

[quote]
On est dans une délicate phase de double transition :
ext3 --> ext4, avec les anciens noyaux (Lenny p.ex) qui ne gèrent pas le ext4
grub-legacy --> grub-pc, avec grub-legacy qui ne gère pas le ext4 non plus (sans compter le changement radical de configuration)[/quote]

je suppose que tu parle de rajouter des lignes dans le fichier /boot/grub/menu.lst…
mais quelle ligne rajouter?
ça ressemble à ça:

**title** Ubuntu 8.04, kernel 2.6.24-18-generic root (hd0,6) kernel /boot/vmlinuz-2.6.24-18-generic root=UUID=e9aecbac-8ff7-42fb-96c2-09c36461a8db ro quiet splash initrd /boot/initrd.img-2.6.24-18-generic quiet
(hd0,6)–> pour sda7
mais je ne connais pas les numéros derrières vmlinuz, ni l’uuid…[/quote]

En étant sous Debian tu montes et tu vas voir dans la partition Ubuntu les renseignements qui te manquent et si tu dois mettre à jour grub, n’hésites pas, grub2 fonctionne maintenant très bien :slightly_smiling:

justement le problème c’est que je ne peux pas monter la partition ubuntu depuis debian,
mount me renvoi une erreur “unknown type ext4” (de mémoire)…

le plus simple ça serait donc d’installer grub2 depuis debian, et grub2 devrait reconnaitre ubuntu tout seul avec un update-grub ou un truc du genre?

Re,

[quote=“CasseTaTele”]justement le problème c’est que je ne peux pas monter la partition ubuntu depuis debian,
mount me renvoi une erreur “unknown type ext4” (de mémoire)…

le plus simple ça serait donc d’installer grub2 depuis debian, et grub2 devrait reconnaitre ubuntu tout seul avec un update-grub ou un truc du genre?[/quote]

Oui tout juste ! Quelques soucis de passage de grub-legacy à grub2 parfois…

Il me semblait avoir vu que lenny prenait en charge ext4, non ?

Ma suggestion, quand c’est possible, est d’installer un chargeur séparé pour chaque distribution et de les chaîner entre eux, comme on fait avec Windows. L’amorce d’un seul chargeur, le premier actif, peut éventuellement être installée dans le MBR du disque de démarrage. Les autres sont installées dans les partitions racine ou /boot de leurs distributions respectives. Ainsi on évite les problèmes d’incompatibilité entre le chargeur d’une distribution et les autres distributions.

Re,

C’est vrai que je raisonne en partant de sid :blush:

je veux absolument rester en 100% stable sous lenny!

Il me semblait avoir vu que lenny prenait en charge ext4, non ?[/quote]
a priori non, je vais re-vérifier ce soir mais j’ai déjà tenté un mount en vain…

Ma suggestion, quand c’est possible, est d’installer un chargeur séparé pour chaque distribution et de les chaîner entre eux, comme on fait avec Windows. L’amorce d’un seul chargeur, le premier actif, peut éventuellement être installée dans le MBR du disque de démarrage. Les autres sont installées dans les partitions racine ou /boot de leurs distributions respectives. Ainsi on évite les problèmes d’incompatibilité entre le chargeur d’une distribution et les autres distributions.[/quote]
Je pense que ta solution est la meilleure effectivement mais j’ai peur de faire une fausse manip… Est-ce qu’il y aurait un tuto pour réaliser cette opération de chainage?

D’après ce que je comprend du manuel, il faut que je modifie sous debian le menu.lst du grub en mbr pour qu’il ressemble à ça dans mon cas précis (cf partitions du premier message):

[code]# Debian lenny
title debian
root (sd0,2)
chainloader +1
boot

Ubuntu karmic koala

title ubuntu
root (sd0,6)
chainloader +1
boot

Windows xp

title windows
root (sd0,0)
chainloader +1
boot[/code]

puis que je place grub en mbr

#grub grub>root (sd0,2) grub>setup (sd0) grub>quit

Est-ce que c’est bien ça?

Pas exactement. Il doit y avoir un chargeur “primaire” qui est lancé en premier. Ce chargeur doit permette de lancer les noyaux de sa distribution comme d’habitude et les autres chargeurs par chaînage. Si le chargeur primaire est le grub de l’installation de Debian lenny, alors il faut laisser les noyaux de lenny et juste ajouter les chaînages en dessous de la section gérée automatiquement par update-grub. Pas besoin de chaînage vers lenny (qui ne ferait que relancer le même chargeur), il faut juste ajouter ceux vers Ubuntu et Windows. Pas besoin non plus de réinstaller le grub de lenny s’il est déjà fonctionnel et se lance en premier.

Par contre concernant le grub d’Ubuntu, comme sa racine est dans une partition étendue, l’amorce de son grub2 devait être dans le MBR du disque et a été écrasée par l’installation de l’amorce du grub de lenny. (Si l’amorce du grub de lenny avait été installée dans le secteur d’amorce de /dev/sda3 (hd2), les choses auraient été plus simples.) Pour l’instant le grub2 d’Ubuntu n’est plus opérationnel tant que son amorce n’est pas réinstallée, mais dans le secteur d’amorce de /dev/sda7 (hd6) cette fois.

Donc il faut réinstaller le grub2 d’Ubuntu. J’ai cherché des informations sur la prise en charge d’ext4 par lenny. Apparemment dans le noyau 2.6.26 c’est une version de développement d’ext4 appelée “ext4dev”. J’en conclus qu’il faut essayer de monter /dev/sda7 avec “-t ext4dev” puis chrooter dessus. Sans garantie, je n’ai pas d’installation de lenny sous la main pour tester.

Sinon, démarrer avec un CD live ou d’installation d’Ubuntu, monter /dev/sda7 et chrooter dessus.

ok donc si j’ai bien compris actuellement il y a l’amorce du grub de lenny dans la MBR et le grub d’ubuntu n’a plus d’amorce donc même si je fais un chaînage à partir du grub de lenny vers celui d’ubuntu ça ne va pas marcher. Le plus simple c’est donc de réparer le grub d’ubuntu puis de chaîner le grub d’ubuntu à partir de celui de lenny.

Par contre tu proposais auparavant d’installer un chargeur séparé dans le MBR, est-ce que c’est encore possible?
comment définir le menu de ce chargeur du coup?
sinon comment savoir ce qu’il y a dans la MBR et comment savoir si les grub ont leur amorce sur la même partition ou dans la MBR?

J’ai essayé:

sebastien-desktop:/home/sebastien# mount /dev/sda7 /media/ubuntu/
mount: unknown filesystem type 'ext4'

sebastien-desktop:/home/sebastien# mount -t ext4dev /dev/sda7 /media/ubuntu/
mount: wrong fs type, bad option, bad superblock on /dev/sda7,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

sebastien-desktop:/home/sebastien# dmesg | tail
[   12.241921] lo: Disabled Privacy Extensions
[   12.475536] lp: driver loaded but no devices found
[   12.499049] ppdev: user-space parallel port driver
[   18.681958] nvidia: module license 'NVIDIA' taints kernel.
[   18.938385] ACPI: PCI Interrupt 0000:01:00.0[A] -> GSI 16 (level, low) -> IRQ 16
[   18.938395] PCI: Setting latency timer of device 0000:01:00.0 to 64
[   18.939168] NVRM: loading NVIDIA UNIX x86 Kernel Module  173.14.09  Wed Jun  4 23:43:17 PDT 2008
[   32.918781] eth0: no IPv6 routers present
[  148.360382] FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
[  259.659245] EXT4-fs: sda7: not marked OK to use with test code.

je vais essayer à parti du live-cd d’ubuntu mais je ne sais pas comment réparer le grub car il faut que je fasse attention de mettre l’amorce sur /dev/sda7 cette fois pour ne pas perdre lenny, je vais me renseigner sur ce point.

Voilà.

Non, je proposais que le chargeur d’un des systèmes, que j’appelle le chargeur primaire, soit amorcé en premier et permette d’amorcer les autres chargeurs en plus de ses propres noyaux. Cependant il est possible d’installer un chargeur primaire indépendant dans le MBR, par exemple GAG, permettant d’amorcer chacun des chargeurs des différents systèmes. Dans ce cas les amorces des chargeurs de chaque système devront être installées dans leurs partitions respectives et non dans le MBR. Avantage : le chargeur primaire ne dépend pas d’un des systèmes.

Par déduction.

Je suppose que tu n’as rien fait de particulier avec le chargeur de Windows, et que c’est le grub2 d’Ubuntu qui était lancé en premier. Comme Ubuntu est dans une partition logique donc non amorçable par le code amorce standard (MS-DOS) du MBR, on peut penser que l’amorce de grub2 était dans le MBR à la place du code amorce standard pour pouvoir démarrer.

Ensuite, si Debian avait installé l’amorce de son grub dans sa partition principale, c’est toujours le grub2 d’Ubuntu, installé dans le MBR, qui aurait démarré en premier. Or ce n’est pas ce qui se passe, donc on peut penser que l’amorce du grub de Debian a écrasé celle d’Ubuntu dans le MBR.

Pour finir, aucune partition principale n’est marquée comme amorçable dans la table de partition, ce qui accrédite la thèse de l’amorce de grub dans le MBR.

Pour vérifier, tu peux extraire les chaînes de caractères contenues dans les trois secteurs d’amorce :

dd if=/dev/sda  bs=512 count=1 | strings # MBR
dd if=/dev/sda3 bs=512 count=1 | strings # sda3 (Debian)
dd if=/dev/sda7 bs=512 count=1 | strings # sda7 (Ubuntu)

L’amorce de grub contient la chaîne “GRUB”.

C’est ce que je craignais après avoir lu les pages de manuel de mke2fs et tune2fs (cf. le flag “test_fs”). Si tu peux faire autrement, je ne recommande pas d’activer ce flag sur sda7 pour y accéder avec le pilote ext4dev de Debian, on ne sait jamais.

En effet. (Tu pourrais aussi réinstaller l’amorce du grub de lenny dans sda3 et celle du grub2 d’Ubuntu dans le MBR, tout est possible).
Tu démarres sur le CD live, tu ouvres un shell dans une console, tu montes sda7, tu chrootes dessus et tu exécutes grub.

# mount -t ext4 /dev/sda7 <pointdemontage>
# chroot <pointdemontage>
# grub
grub>root (sd0,6)
grub>setup (sd0,6)
grub>quit
# exit
# umount <pointdemontage>

Salut Pascal,
Connais-tu d’autres chargeurs d’amorçage dans le style de GAG ?
Je viens de le télécharger, le zip pèse 1,4 Mo ! Bien envie de tester…
L’avantage semble évident, et puis cela évite les grub à rallonge avec 36 noyaux…
Seul bémol pour moi, le rallongement du temps de boot !
De un chargeur on passe à deux…

Salut,

Et SuperGrub ne peut rien pour toi ?

J’ai vu sbm (Smart Boot Manager) dans les paquets Debian, mais je n’ai utilisé aucun des deux.

J’ai démarré avec le livecd d’ubuntu 9.04 (jaunty car je ne trouvais plus le cd du 9.10)
J’ai executé sans problèmes les premières commandes mais ensuite ça bloque:

[code]grub> root (sd0,6)

Error 23: Error while parsing number

grub> root (hd0,6)

Error 21: Selected disk does not exist

grub> root (sd1,6)

Error 23: Error while parsing number

grub> root (sd (<- meme la completion avec TAB bug)
Error 23: Error while parsing number

grub> root (sd0 (<- meme la completion avec TAB bug)
Error 23: Error while parsing number[/code]

Salut,
Tu es sur de la version de Grub dans ton Ubuntu ?

$ sudo apt-cache policy grub
grub:
  Installed: (none)
  Candidate: 0.97-47lenny2
  Version table:
     0.97-47lenny2 0
        500 http://192.168.0.1 lenny/main Packages

$ sudo apt-cache policy grub2
grub2:
  Installed: (none)
  Candidate: 1.96+20080724-16
  Version table:
     1.96+20080724-16 0
        500 http://192.168.0.1 lenny/main Packages

Je ne voudrais pas affirmer une bêtise, mais il y a un décalage dans le numérotage des partition entre grub-legacy et grub2 (ça j’en suis sur)

hd0,0 dans grub-legacy donne hd0,1 dans grub2 !
Donc si c’est grub2 comme je le pense, ce sera (hd0,7) !

[quote=“lol”]Tu es sur de la version de Grub dans ton Ubuntu ?
[/quote]
Non, je ne sais pas quelle version c’est :neutral_face: j’ai laissé la version installé par defaut avec karmic koala…
je suis en train de re-télécharger le livecd de karmic ensuite je reboot dessus et je test tes commandes pour voir.

J’étais au courant du décalage, j’ai essayé plusieurs numéros sd1, sd0, hd0, hd1, (sd0,0), (sd0,7), etc… rien ne marche, même l’autocomplétion renvoie un message d’erreur oO

Voici le r2sultqt depuis le live-cd ubuntu karmic koala.

ubuntu@ubuntu:~$ sudo apt-cache policy grub grub: Installed: (none) Candidate: 0.97-29ubuntu59 Version table: 0.97-29ubuntu59 0 500 http://archive.ubuntu.com karmic/main Packages ubuntu@ubuntu:~$ sudo apt-cache policy grub2 grub2: Installed: (none) Candidate: (none) Version table:
Sinon pour grub ca change rien.

[code]grub> root (sd0,6)

Error 23: Error while parsing number

grub> root (hd0,6)

Error 21: Selected disk does not exist

grub> root (sd0,7)

Error 23: Error while parsing number

grub> root (hd0,7)

Error 21: Selected disk does not exist[/code]

sinon quand je suis chroot je ne peux pas faire de fdisk -l.

root@ubuntu:/# fdisk -l cannot open /proc/partitions