grub2

Bonjour tout le monde!

J’ai voulu essayer grub2 dans le cadre de mon passage en ext4. Mais bon, j’ai eu un peu de mal à le configurer correctement. Vous auriez pas un tuto dans le coin par hasard?

Sur ce, bon week end!

Pas de tuto sous la main, mais j’utilise grub2 depuis un moment (je suis en train d’en écrire un pour www.linuxpedia.fr , il sera prêt à la fin du w-e normalement…).

Quel est ton problème de configuration précisément ?

précisément, je ne pourrais pas te dire là, ça remonte à quelque semaine, et je l’ai finalement retiré.
J’avais surtout du mal à me faire avec la nouvelle syntaxe. Est-on obligé d’utiliser l’UUID des partitions? Puis comment remplacer grub par grub2 pour de bon?
Enfin, si tu fais un tuto je ferais partie de tes lecteurs! :wink:

Lorsque tu installes grub2 il n’est pas activé par défaut, une entrée est ajoutée à ton menu.lst “chainload into…” pour tester que tout fonctionne, si ça plante tu retombes sur grub “vieux”. Pour effectuer la bascule définitivement c’est “upgrade-from-grub-legacy” en root.

Les fichiers de conf sont dans /etc/default/grub et /etc/grub.d/* (ainsi que des modèles de personnalisation “templates”) , le remplaçant du menu.lst s’appelle /boot/grub/grub.cfg.
La numérotation des disques change: grub “vieux” (hd0,0) = grub2 (hd0,1) ; donc les disques toujours numérotés à partir de zéro, les partitions à partir de 1.

Pour le reste, grub2 sait charger des modules (raid, lvm…) et rendre disponibles les volumes correspondant dès le menu, et un tas d’autres choses assez pratiques…

Tu n’es pas obligé d’utiliser les UUID, d’ailleurs tu peux désactiver leur usage dans /etc/default/grub :

GRUB_DISABLE_LINUX_UUID=true

Tu peux utiliser des labels dans le grub.cfg, mais la version de grub2 dispo chez Debian ne les supporte pas par défaut lors de la génération du grub.cfg (il faut que je vérifie ça après la dernière mise à jour de ce matin).
Pour régénérer le grub.cfg après modification c’est “update-grub2” ou “grub-mkconfig” avec les versions de Squeeze et au-dessus. Tu peux utiliser la notation “udev”, par exemple chez moi “root=/dev/md0” (volume raid).

Enfin le paquet “os-prober” détecte tout seul comme un grand les autres systèmes d’exploitation installés.

Pour la suite, il faudra lire le tuto… (et contribuer après tes tests !)

Eh bien merci, c’est un très bon début déja! je crois que je vais refaire le test de grub2 dans un avenir très proche!
Merci encore pour les précisions!

j’ai refais les manips. je n’ai pas de soucis cette fois ci. j’ai réédité à la main, et je n’avais pas le message d’erreur de la dernière fois.
Ensuite, j’ai installé le paquet os-prober, et il suffit d’un update-grub2 et tout va tout seul! :smiley:
Me reste plus qu’à peaufiner pour préciser le système de fichier et ainsi que la résolution de boot à la main (parce que j’aime bien savoir ce que je fais!)!
Merci encore pour ton mini-tuto :wink:

La présentation est déjà pas mal avancée ici :

linuxpedia.fr/doku.php/expert/grub2

Commentaires, critiques et contributions bienvenus. :wink:

magnifique :exclamation: ça c’est un tuto :smt041
il est allé directement dans mes marque-pages
merci :smt048

Salut,

En 1er lieu merci pour cet article.

Stage 1 pour Grub-legacy correspond au boot.img de Grub2, soit les 448 octets installés sur le MBR ou le BS d’une partition. C’est évidemment trop peu pour intégrer un shell lequel se trouve donc forcément ailleurs (/boot/grub/ ?).

woah, super complet! peut-être à mettre ici? :

wiki.debian.org/

[quote="…"]Salut,

En 1er lieu merci pour cet article.

Stage 1 pour Grub-legacy correspond au boot.img de Grub2, soit les 448 octets installés sur le MBR ou le BS d’une partition. C’est évidemment trop peu pour intégrer un shell lequel se trouve donc forcément ailleurs (/boot/grub/ ?).[/quote]

Tu as parfaitement raison, en fait ça concerne le core.img qui peut être situé dans /boot/grub, ou implanté ailleurs comme entre le secteur d’amorçage et le début de la première partition. Je vais parler de tout ça plus tard. Grub2 a supprimé le stage 1.5 de grub, je vais reformuler ça autrement.

Merci pour la lecture attentive !

Donc core.img correspondrait en quelque sorte à stage 2 qui sur la majorité des systèmes¹ s’installe en partie sur les 63 secteurs suivant le MBR et l’autre partie dans /boot/grub/ ? Une des différences serai que core.img peut lui tenir entièrement dans cet espace libre ?

¹ Ceux dont le partitionnement du disque a été fait en arrondissant la limite des partitions aux limites de cylindre et ayant donc un espace libre après le MBR.

Tout bien réfléchit, et après avoir testé sur un système, le “rescue shell” se trouve forcément dans le stage 1, car même si l’adressage de la partition racine (qui contient /boot/grub dans le cas testé) n’est pas détecté (et même si le volume raid qui la porte n’est pas assemblé, y compris si j’efface /boot/grub !), et avec core.img et boot.img dans /boot/grub, le “rescue shell” est disponible.

Concernant le core.img, sur mes systèmes il fait 28K, je n’ai pas encore essayé de le mettre entre le mbr et la première partition sur un système déjà installé, mais ça ne va pas tarder… J’attends de pouvoir faire des tests plus complets pour ajouter une partie sur ces fantaisies au tuto.

Le problème c’est que Grub2 est horriblement mal documenté (surtout en Français), et même lorsque la documentation existe elle est parfois déjà périmée… J’ai découvert la trace de certaines options en parcourant les journaux des changements sur les dépôts de développement, et dans des rapports de bogues… c’est en partie ce qui a motivé la présentation.

Pour approfondir un peu, et illustrer ce que dit le wiki de Grub2, (à savoir que grub2 a rendu non nécessaire le stage 1.5 de grub), voici un dump du mbr, et de la zone de compatibilité dos, sur un disque avec grub “legacy” installé, puis sur un disque avec Grub2 (avec core.img implanté dans /boot/grub):

Disque grub “legacy”, MBR:

[code]# dd bs=512 count=1 if=/dev/sdc | od -Ax -tx1z -v

1+0 enregistrements lus
1+0 enregistrements écrits
512 bytes (512 B) copied, 0,0164256 s, 31,2 kB/s
000000 eb 48 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 >.H…<
000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 >…|…!..<
000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 >…8.u…u<
000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 03 02 >…|…t…<
000040 ff 00 00 20 01 00 00 00 00 02 fa 90 90 f6 c2 80 >… …<
000050 75 02 b2 80 ea 59 7c 00 00 31 c0 8e d8 8e d0 bc >u…Y|…1…<
000060 00 20 fb a0 40 7c 3c ff 74 02 88 c2 52 be 7f 7d >. …@|<.t…R…}<
000070 e8 34 01 f6 c2 80 74 54 b4 41 bb aa 55 cd 13 5a >.4…tT.A…U…Z<
000080 52 72 49 81 fb 55 aa 75 43 a0 41 7c 84 c0 75 05 >RrI…U.uC.A|…u.<
000090 83 e1 01 74 37 66 8b 4c 10 be 05 7c c6 44 ff 01 >…t7f.L…|.D…<
0000a0 66 8b 1e 44 7c c7 04 10 00 c7 44 02 01 00 66 89 >f…D|…D…f.<
0000b0 5c 08 c7 44 06 00 70 66 31 c0 89 44 04 66 89 44 >…D…pf1…D.f.D<
0000c0 0c b4 42 cd 13 72 05 bb 00 70 eb 7d b4 08 cd 13 >…B…r…p.}…<
0000d0 73 0a f6 c2 80 0f 84 ea 00 e9 8d 00 be 05 7c c6 >s…|.<
0000e0 44 ff 00 66 31 c0 88 f0 40 66 89 44 04 31 d2 88 >D…f1…@f.D.1…<
0000f0 ca c1 e2 02 88 e8 88 f4 40 89 44 08 31 c0 88 d0 >…@.D.1…<
000100 c0 e8 02 66 89 04 66 a1 44 7c 66 31 d2 66 f7 34 >…f…f.D|f1.f.4<
000110 88 54 0a 66 31 d2 66 f7 74 04 88 54 0b 89 44 0c >.T.f1.f.t…T…D.<
000120 3b 44 08 7d 3c 8a 54 0d c0 e2 06 8a 4c 0a fe c1 >;D.}<.T…L…<
000130 08 d1 8a 6c 0c 5a 8a 74 0b bb 00 70 8e c3 31 db >…l.Z.t…p…1.<
000140 b8 01 02 cd 13 72 2a 8c c3 8e 06 48 7c 60 1e b9 >…r*…H|`…<
000150 00 01 8e db 31 f6 31 ff fc f3 a5 1f 61 ff 26 42 >…1.1…a.&B<
000160 7c be 85 7d e8 40 00 eb 0e be 8a 7d e8 38 00 eb >|…}.@…}.8…<
000170 06 be 94 7d e8 30 00 be 99 7d e8 2a 00 eb fe 47 >…}.0…}.*…G<
000180 52 55 42 20 00 47 65 6f 6d 00 48 61 72 64 20 44 >RUB .Geom.Hard D<
000190 69 73 6b 00 52 65 61 64 00 20 45 72 72 6f 72 00 >isk.Read. Error.<
0001a0 bb 01 00 b4 0e cd 10 ac 3c 00 75 f4 c3 00 00 00 >…<.u…<
0001b0 00 00 00 00 00 00 00 00 c8 10 0c 00 00 00 80 01 >…<
0001c0 01 00 83 fe ff ff 3f 00 00 00 f7 e3 e3 01 00 fe >…?..<
0001d0 ff ff 83 fe ff ff 36 e4 e3 01 cd de 38 1b 00 fe >…6…8…<
0001e0 ff ff 82 fe ff ff b1 68 c1 24 10 6e 81 00 00 00 >…h.$.n…<
0001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa >…U.<
000200
[/code]

Secteur de compatibilité dos (utilisé par le stage 1.5):

[code]# dd bs=512 skip=63 count=1 if=/dev/sdc | od -Ax -tx1z -v

1+0 enregistrements lus
1+0 enregistrements écrits
512 bytes (512 B) copied, 0,0196897 s, 26,0 kB/s
000000 eb 48 90 00 00 00 00 00 00 00 00 00 00 00 00 00 >.H…<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 02 >…<
000040 ff 00 00 80 3f 7f 42 00 00 08 fa 90 90 f6 c2 80 >…?.B…<
000050 75 02 b2 80 ea 59 7c 00 00 31 c0 8e d8 8e d0 bc >u…Y|…1…<
000060 00 20 fb a0 40 7c 3c ff 74 02 88 c2 52 be 7f 7d >. …@|<.t…R…}<
000070 e8 34 01 f6 c2 80 74 54 b4 41 bb aa 55 cd 13 5a >.4…tT.A…U…Z<
000080 52 72 49 81 fb 55 aa 75 43 a0 41 7c 84 c0 75 05 >RrI…U.uC.A|…u.<
000090 83 e1 01 74 37 66 8b 4c 10 be 05 7c c6 44 ff 01 >…t7f.L…|.D…<
0000a0 66 8b 1e 44 7c c7 04 10 00 c7 44 02 01 00 66 89 >f…D|…D…f.<
0000b0 5c 08 c7 44 06 00 70 66 31 c0 89 44 04 66 89 44 >…D…pf1…D.f.D<
0000c0 0c b4 42 cd 13 72 05 bb 00 70 eb 7d b4 08 cd 13 >…B…r…p.}…<
0000d0 73 0a f6 c2 80 0f 84 ea 00 e9 8d 00 be 05 7c c6 >s…|.<
0000e0 44 ff 00 66 31 c0 88 f0 40 66 89 44 04 31 d2 88 >D…f1…@f.D.1…<
0000f0 ca c1 e2 02 88 e8 88 f4 40 89 44 08 31 c0 88 d0 >…@.D.1…<
000100 c0 e8 02 66 89 04 66 a1 44 7c 66 31 d2 66 f7 34 >…f…f.D|f1.f.4<
000110 88 54 0a 66 31 d2 66 f7 74 04 88 54 0b 89 44 0c >.T.f1.f.t…T…D.<
000120 3b 44 08 7d 3c 8a 54 0d c0 e2 06 8a 4c 0a fe c1 >;D.}<.T…L…<
000130 08 d1 8a 6c 0c 5a 8a 74 0b bb 00 70 8e c3 31 db >…l.Z.t…p…1.<
000140 b8 01 02 cd 13 72 2a 8c c3 8e 06 48 7c 60 1e b9 >…r*…H|`…<
000150 00 01 8e db 31 f6 31 ff fc f3 a5 1f 61 ff 26 42 >…1.1…a.&B<
000160 7c be 85 7d e8 40 00 eb 0e be 8a 7d e8 38 00 eb >|…}.@…}.8…<
000170 06 be 94 7d e8 30 00 be 99 7d e8 2a 00 eb fe 47 >…}.0…}.*…G<
000180 52 55 42 20 00 47 65 6f 6d 00 48 61 72 64 20 44 >RUB .Geom.Hard D<
000190 69 73 6b 00 52 65 61 64 00 20 45 72 72 6f 72 00 >isk.Read. Error.<
0001a0 bb 01 00 b4 0e cd 10 ac 3c 00 75 f4 c3 00 00 00 >…<.u…<
0001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0001c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa >…U.<
000200
[/code]

Disque avec Grub2, MBR:

[code]# dd bs=512 count=1 if=/dev/sda | od -Ax -tx1z -v

1+0 enregistrements lus
1+0 enregistrements écrits
512 bytes (512 B) copied, 0,0084863 s, 60,3 kB/s
000000 eb 4c 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 >.L…<
000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 >…|…!..<
000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 >…8.u…u<
000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 04 00 >…|…t…<
000040 00 80 00 08 01 00 00 00 00 00 00 00 ff ff fa eb >…<
000050 07 f6 c2 80 75 02 b2 80 ea 5d 7c 00 00 31 c0 8e >…u…]|…1…<
000060 d8 8e d0 bc 00 20 fb a1 4c 7c 88 e6 3c ff 74 02 >… …L|…<.t.<
000070 88 c2 52 be 76 7d e8 25 01 be 05 7c f6 c2 80 74 >…R.v}.%…|…t<
000080 48 b4 41 bb aa 55 cd 13 5a 52 72 3d 81 fb 55 aa >H.A…U…ZRr=…U.<
000090 75 37 83 e1 01 74 32 31 c0 89 44 04 40 88 44 ff >u7…t21…D.@.D.<
0000a0 89 44 02 c7 04 10 00 66 8b 1e 44 7c 66 89 5c 08 >.D…f…D|f…<
0000b0 66 8b 1e 48 7c 66 89 5c 0c c7 44 06 00 70 b4 42 >f…H|f…D…p.B<
0000c0 cd 13 72 05 bb 00 70 eb 74 b4 08 cd 13 73 0a f6 >…r…p.t…s…<
0000d0 c2 80 0f 84 ed 00 e9 85 00 66 0f b6 c6 88 64 ff >…f…d.<
0000e0 40 66 89 44 04 0f b6 d1 c1 e2 02 88 e8 88 f4 40 >@f.D…@<
0000f0 89 44 08 0f b6 c2 c0 e8 02 66 89 04 66 a1 48 7c >.D…f…f.H|<
000100 66 09 c0 75 51 66 a1 44 7c 66 31 d2 66 f7 34 88 >f…uQf.D|f1.f.4.<
000110 d1 31 d2 66 f7 74 04 3b 44 08 7d 3a fe c1 88 c5 >.1.f.t.;D.}:…<
000120 30 c0 c1 e8 02 08 c1 88 d0 5a 52 88 c6 bb 00 70 >0…ZR…p<
000130 8e c3 31 db b8 01 02 cd 13 72 2b 8c c3 8e 06 42 >…1…r+…B<
000140 7c 60 1e b9 00 01 8e db 31 f6 31 ff fc f3 a5 1f >|`…1.1…<
000150 61 5a ff 26 40 7c be 7c 7d e8 42 00 eb 0e be 81 >aZ.&@|.|}.B…<
000160 7d e8 3a 00 eb 06 be 8b 7d e8 32 00 be 90 7d e8 >}.:…}.2…}.<
000170 2c 00 cd 18 eb fe 47 52 55 42 20 00 47 65 6f 6d >,…GRUB .Geom<
000180 00 48 61 72 64 20 44 69 73 6b 00 52 65 61 64 00 >.Hard Disk.Read.<
000190 20 45 72 72 6f 72 00 bb 01 00 b4 0e cd 10 ac 3c > Error…<<
0001a0 00 75 f4 c3 00 00 00 00 00 00 00 00 00 00 00 00 >.u…<
0001b0 00 00 00 00 00 00 00 00 79 7c 09 00 00 00 00 01 >…y|…<
0001c0 01 00 fd fe ff ff 3f 00 00 00 46 56 21 03 00 00 >…?..FV!..<
0001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe >…<
0001e0 ff ff fd fe ff ff 85 56 21 03 bc f5 16 37 00 00 >…V!..7…<
0001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa >…U.<
000200
[/code]

Zone de compatibilité DOS:

[code]# dd bs=512 skip=63 count=1 if=/dev/sda | od -Ax -tx1z -v

1+0 enregistrements lus
1+0 enregistrements écrits
512 bytes (512 B) copied, 0,00794351 s, 64,5 kB/s
000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0001a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0001c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
0001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >…<
000200
[/code]

La zone de compatibilité DOS est entièrement libre, c’est là que peut être implanté le core.img. Si on fait ce choix le fonctionnement de Grub2 ressemble alors à celui de grub “legacy”, avec une sorte de stage 1.5 en dehors du système de fichiers, mais ça n’est pas obligatoire. Le boot.img (situé sur le MBR) contient déjà suffisamment d’informations pour aller chercher le core.img sur le système de fichiers (même dans le cas d’une racine “/” sur un raid.).

Salut,

[quote=“idiotein”](à savoir que grub2 a rendu non nécessaire le stage 1.5 de grub)
[/quote]
Il ne l’était déjà pas avec Grub-Legacy.

[quote=“idiotein”]Secteur de compatibilité dos (utilisé par le stage 1.5):

[/quote]
Là tu as fait une erreur dans la commande : tu as affiché le 64ème secteur du disque, donc le BS de sdc1 (sur lequel un stage 1 a été installé :wink: ).
La commande dd bs=512 count=1 if=/dev/sdc1 | od -Ax -tx1z -v te donnera le même résultat.

Pour voir stage1.5 il faut utiliser cette commande (à adapter bien sûr) :

(count=17 est normalement suffisant mais il vaut mieux garder count=62 pour la suite…)

Ce qui donne (je n’ai gardé que les parties intéressantes) :

000000 52 56 be 03 21 e8 2a 01 5e bf f8 21 66 8b 2d 83  >RV..!.*.^..!f.-.<
000010 7d 04 00 0f 84 ca 00 80 7c ff 00 74 3e 66 8b 1d  >}.......|..t>f..<
000020 66 31 c0 b0 7f 39 45 04 7f 03 8b 45 04 29 45 04  >f1...9E....E.)E.<
000030 66 01 05 c7 04 10 00 89 44 02 66 89 5c 08 c7 44  >f.......D.f.\..D<
000040 06 00 70 50 66 31 c0 89 44 04 66 89 44 0c b4 42  >..pPf1..D.f.D..B<
000050 cd 13 0f 82 9f 00 bb 00 70 eb 56 66 8b 05 66 31  >........p.Vf..f1<
000060 d2 66 f7 34 88 54 0a 66 31 d2 66 f7 74 04 88 54  >.f.4.T.f1.f.t..T<
000070 0b 89 44 0c 3b 44 08 7d 74 8b 04 2a 44 0a 39 45  >..D.;D.}t..*D.9E<
000080 04 7f 03 8b 45 04 29 45 04 66 01 05 8a 54 0d c0  >....E.)E.f...T..<
000090 e2 06 8a 4c 0a fe c1 08 d1 8a 6c 0c 5a 52 8a 74  >...L......l.ZR.t<
0000a0 0b 50 bb 00 70 8e c3 31 db b4 02 cd 13 72 46 8c  >.P..p..1.....rF.<
0000b0 c3 8e 45 06 58 c1 e0 05 01 45 06 60 1e c1 e0 04  >..E.X....E.`....<
0000c0 89 c1 31 ff 31 f6 8e db fc f3 a4 1f be 14 21 e8  >..1.1.........!.<
0000d0 60 00 61 83 7d 04 00 0f 85 3c ff 83 ef 08 e9 2e  >`.a.}....<......<
0000e0 ff be 16 21 e8 4b 00 5a ea 00 22 00 00 be 19 21  >...!.K.Z.."....!<
0000f0 e8 3f 00 eb 06 be 1e 21 e8 37 00 be 23 21 e8 31  >.?.....!.7..#!.1<
000100 00 eb fe 4c 6f 61 64 69 6e 67 20 73 74 61 67 65  >...Loading stage<
000110 31 2e 35 00 2e 00 0d 0a 00 47 65 6f 6d 00 52 65  >1.5......Geom.Re<
000120 61 64 00 20 45 72 72 6f 72 00 bb 01 00 b4 0e cd  >ad. Error.......<
000130 10 46 8a 04 3c 00 75 f2 c3 00 00 00 00 00 00 00  >.F..<.u.........<
000140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
...
000200 ea 70 22 00 00 00 03 02 ff ff ff 00 00 00 00 00  >.p".............<
000210 02 00 30 2e 39 37 00 ff ff 00 ff 2f 62 6f 6f 74  >..0.97...../boot<
000220 2f 67 72 75 62 2f 73 74 61 67 65 32 20 2f 62 6f  >/grub/stage2 /bo<
000230 6f 74 2f 67 72 75 62 2f 6d 65 6e 75 2e 6c 73 74  >ot/grub/menu.lst<
000240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
...
002120 89 44 24 04 89 14 24 e8 fe fe ff ff e9 5f ff ff  >.D$...$......_..<
002130 ff 00 00 00 45 72 72 6f 72 20 25 75 0a 00 65 78  >....Error %u..ex<
002140 74 32 66 73 00 00 00 00 0a 0a 47 52 55 42 20 6c  >t2fs......GRUB l<
002150 6f 61 64 69 6e 67 2c 20 70 6c 65 61 73 65 20 77  >oading, please w<
002160 61 69 74 2e 2e 2e 0a 00 69 6e 74 65 72 6e 61 6c  >ait.....internal<
002170 20 65 72 72 6f 72 3a 20 74 68 65 20 73 65 63 6f  > error: the seco<
002180 6e 64 20 73 65 63 74 6f 72 20 6f 66 20 53 74 61  >nd sector of Sta<
002190 67 65 20 32 20 69 73 20 75 6e 6b 6e 6f 77 6e 2e  >ge 2 is unknown.<
0021a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<

Il serait intéressant de voir ce que donne cette commande pour Grub2, je soupçonne fortement que core.img y ait été installé sans préavis…

Au vue de tout cela :

Je le répète, c’est impossible de par la taille du MBR, j’ai d’ailleurs parcouru les sources de Grub2, et en particulier /boot/i386/pc/boot.S (aka boot.img avant compilation) sans trouver trace d’un quelconque shell. Mais on va le trouver :wink:

Voici comment je vois la procédure :

  1. Une machine virtuelle avec un système + Grub2 installé + vérification du fonctionnement et de la zone située entre le MBR et le BS de la 1er partition.
  2. Suppression complète des fichiers relatifs à Grub2 (avec shred pour qu’il n’y ai plus de trace de ceux-ci). Il serait très intéressant ici de supprimer les fichiers un à un (en particulier concernant les fichiers importants comme core.img et de faire un essai de démarrage du système entre).
  3. Suppression avec dd des 62 secteurs suivant le MBR.

À ce stade s’il on tombe encore sur le shell de Grub au démarrage c’est qu’il se trouve sur le stage1 (aka boot.img) du MBR, et s’il l’on tombait dessus avant 3) mais pas après c’est qu’il se trouvait dans le core.img de la zone de compatibilité DOS (1ère fois que je vois ce terme mais c’est de loin celui qui me parai le plus sensé) :slightly_smiling:

À l’occase je ferai cette expérience.

Ça c’est clair…

PS. Je viens de voir que tu avais modifié la partie de l’article en question, cela me parai beaucoup plus juste ainsi. :wink:

[quote="…"]Salut,

[quote=“idiotein”](à savoir que grub2 a rendu non nécessaire le stage 1.5 de grub)
[/quote]
Il ne l’était déjà pas avec Grub-Legacy.[/quote]

Donc c’est juste du marketing de Grub2 ! Ou disons que ça reflète plus une différence de fonctionnement qu’une différence d’implantation du code

[quote][quote=“idiotein”]Secteur de compatibilité dos (utilisé par le stage 1.5):

[/quote]
Là tu as fait une erreur dans la commande : tu as affiché le 64ème secteur du disque, donc le BS de sdc1 (sur lequel un stage 1 a été installé :wink: ).
Pour voir stage1.5 il faut utiliser cette commande (à adapter bien sûr) :

[…]
Il serait intéressant de voir ce que donne cette commande pour Grub2, je soupçonne fortement que core.img y ait été installé sans préavis…[/quote]

Merci de la correction, je découvre la vivisection de disque à coup de “dd” à l’occasion de ce sujet. :wink:

En utilisant la bonne commande on constate que Grub2 implante par défaut (en tout cas pour la version des paquets Debian) plus de code que grub “legacy”, et répartis différemment.

Pour grub “legacy” j’ai du code sur les 320 premiers octets, puis du 496 au 7536 ème, et enfin du 31’789 au 32’160 ème.

Pour grub2, c’est pareil sur les 320 premiers (code différent), puis du 496 au 28’048 éme.

Ce que je ne saisie pas encore, c’est si le core.img est implanté de manière monolithique d’office sur le secteur de compatibilité DOS (vue l’espace occupé c’est probable), et s’il contient le module spécifique au type de boot (exp: diskboot.img, lnxboot.img), ou si seul diskboot.img (ou pxeboot.img ou autre en fonction du système) est implanté d’office, et appel core.img sur /boot/grub (ou ailleurs).
Ce qui est certain c’est qu’en plus du “rescue shell” un certain nombre de modules sont déjà chargé dès le première partie du boot (mais cette première partie excède le MBR). Un “lsmod” dans le “rescue shell” donne "_chain, biosdisk, raid (système sur raid), pc, ext2, fshelp (plus de 24’000 octets à eux tous), alors qu’à ce stade /boot/grub est encore inaccessible (variables “prefix” et “root” fausses).

Ce qu’il faudrait c’est pouvoir décompacter ou monter les images (core.img, boot.img, diskboot.img…) pour en examiner le contenu. Le problème c’est que lors de mes (brefs) tests je n’ai pas trouvé leur format, les habituels gunzip et cpio ne donnent rien, pourtant grub-common a une dépendance sur zlib avec Debian et liblzo avec Ubuntu. (montés en ramfs peut-être…).

[quote]Voici comment je vois la procédure :

  1. Une machine virtuelle avec un système + Grub2 installé + vérification du fonctionnement et de la zone située entre le MBR et le BS de la 1er partition.
  2. Suppression complète des fichiers relatifs à Grub2 (avec shred pour qu’il n’y ai plus de trace de ceux-ci). Il serait très intéressant ici de supprimer les fichiers un à un (en particulier concernant les fichiers importants comme core.img et de faire un essai de démarrage du système entre).
  3. Suppression avec dd des 62 secteurs suivant le MBR.

À ce stade s’il on tombe encore sur le shell de Grub au démarrage c’est qu’il se trouve sur le stage1 (aka boot.img) du MBR, et s’il l’on tombait dessus avant 3) mais pas après c’est qu’il se trouvait dans le core.img de la zone de compatibilité DOS (1ère fois que je vois ce terme mais c’est de loin celui qui me parai le plus sensé) :slightly_smiling:[/quote]

Paraît intéressant, et assez long ! J’ai une machine virtuelle dispo où grub2 est installé, reste à trouver le temps…

Pour Thuban, je fais des tutos sur LinuxPedia parce que j’en avais un peu marre de jongler entre plusieurs forums destinés à différentes distributions (ou à la même !), et que je “connais” (virtuellement) certains des membres fondateurs. Si quelqu’un veut le mettre ailleurs ça n’est pas un problème, il faut juste voir quelle est la licence adoptée par LinuxPedia.
À l’inverse il y a plusieurs wiki propres à une distribution particulière qui “fusionnent” leurs wiki avec linuxpedia (je ne sais pas comment ça se passe en pratique).
J’aime bien l’idée d’une ressource francophone centralisée, type wikipediafr (pas spécifique) et QuebecOS, sur gnu-linux. Pas forcément une encyclopédie exhaustive, mais un “portail” avec des liens vers des wiki plus spécifiques si besoin.

À la vue des résultats je le crois aussi.
Cela dit stage1.5 à quand même l’avantage d’accélérer le démarrage de Grub, de ce que j’ai pu constater, sans lui, il y a un délai de plusieurs secondes entre le chargement de Grub et l’apparition de la liste des noyaux/OS. Maintenant je n’ai fait l’expérience que sur une machine alors je ne sais pas si l’on peut généraliser cette affirmation…

OK, je serai quand même curieux de voir le résultat :wink:

Je me demande aussi. Par contre, à mon avis, s’il y a une zone de compatibilité DOS sur le disque et de la même façon que pour stage1.5 il sera installé d’office.

Dans un 1er temps le point 2) peut se faire en une seule fois, du coup cela peut être assez rapide.

Je voudrais bien mettre le résultat ici, mais je n’ai pas trouvé de “codebox” sur le forum, ni aucune “boîte” avec des barres de défilement… Quand à joindre un fichier j’ai des erreurs “extension .txt non autorisée”, ou “extension non autorisée”…

Si vous connaissez un service gratuit où je puisse coller 2000 lignes… J’ai le résultat sur une Debian Squeeze “en dur” sur raid (pas en vm), et une Ubuntu Hardy en vm sur raid également.

Il y a bien un service qui permet de partager du texte mais j’ai oublié le nom… :stuck_out_tongue:
Sinon tu peux mettre seulement ce qui est humainement compréhensible.

Celui de la Debian Squeeze : rafb.net/p/Zg66sv67.html

Celui de Ubuntu Hardy : rafb.net/p/y3smv890.html

C’est valable 24 heures sur “nopaste”.

J’ai tout mis car la variable “humainement compréhensible” n’était pas définie dans ton message précédent: $HUMAIN=’[ma grand mère-linus torvald]’, ça fait un large intervalle ! :wink: