Grub2 : MBR vs PBR ?

Bonjour,
Ce titre (merveilleusement romantique) explique en partie le problème.
Sur mon disque n°1, 3 partitions bootables. (Lenny, Sid, Sidux).
Les Grub (1 ou 2) ont toujours été dans le MBR. Ils se sont gentiment cédés la place au fil des installations.
Je souhaite maintenant revenir en arrière et mettre grub dans les PBR (en début des partitions).
Pour la Lenny (Grub-legacy) c’est passé comme une lettre à la poste (avec un chroot en plus :smiley: )

[code]root@siduxbox:~# chroot /media/disk1part1/
siduxbox:/# grub-install /dev/sda1
Searching for GRUB installation directory … found: /boot/grub
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install’.

(hd0) /dev/sda
(hd1) /dev/sdb
(hd2) /dev/sdc
(hd3) /dev/sdd
(hd4) /dev/sde
[/code]
Pour la Sid et Sidux… Galères :confused: Impossible de parvenir à mes fins…
Le message le plus fréquent que je rencontre est celui-ci :

grub-install --recheck /dev/sda6 /usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR. This is a BAD idea. /usr/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and its use is discouraged. /usr/sbin/grub-setup: error: If you really want blocklists, use --force. siduxbox:/# grub-install --recheck /dev/sda6 --force /usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR. This is a BAD idea. /usr/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and its use is discouraged. Installation finished. No error reported.
Bien sur vous l’aurez remarqué, les développeurs ne sont pas trop d’accord pour qu’on déplace GRU2 ailleurs que dans le MBR. :mrgreen:
L’option --force, bien quelle retoune un message encourageant, ne fonctionne pas, je me retrouve avec un système inutilisable…
J’ai du réinstaller Grub2 dans le MBR.
Donc, bien que théoriquement ce soit possible… En réalité ça ne fonctionne pas. D’ailleurs à l’installation, je ne me souviens pas qu’il propose autre chose que le MBR ?
Pourquoi ? J’aimerais tester GAG programme d’amorçage indépendant (des OS dans machine), et ne plus être entièrement dépendant d’un seul grub pour tous mes OS…

Possible ou impossible avec grub2 ?

Merci d’avoir pris la peine de lire jusqu’ici…

Salut,

[quote=“lol”]
Possible ou impossible avec grub2 ?
.[/quote]
Ca m’a fait tiqué au premier coup d’oeil, je suis un peu dans la même situation que toi, j’utilise lilo en mbr qui chainloade vers les autres partitions. Et ça marche.

Le bash_history du changement, qui montre un peu la démarche à tatons :laughing: :

install-grub /dev/sda2
grub-install /dev/sda2
# ce fameux message...
grub-install --force /dev/sda2
reboot
# ca a partiellement loupé, il me manquait des entrées.
update-grub
reboot
# bingo :)

Ma configuration chaotique niveau bootloaders:

 /dev/sda (MBR) LILO (configuré pour booter sur /dev/sda3)
|_
| `_________,-> RIEN  /dev/sda3 = i386/stable <------.
|_                                                   | Le Vaudou de Grub
| `_________,-> GRUB2 /dev/sda2 = amd64/sid   -------'
|_                                                  
  `_________,-> GRUB2 /dev/sda1 = kfreebsd-i386 (inconnu du grub en /dev/sda2)

Et tout ce joli monde boote :smt005

J’ai justement un update-grub à faire sur sda2, je vais le foirer et repartir à 0, et te donnerais le grub.cfg pour savoir où ça ne va pas dans ton /etc/grub/ :smiling_imp:

Salut,

C’est très encourageant tout ça, merci.

Avec GAG j’ai un message d’erreur à le c… du genre : partition infecté :mrgreen:
Je vais peut-être essayer avec lilo après tout… J’ai vu air-boot aussi qui fait la même chose que GAG.

J’attends de tes nouvelles ! :smt006

Voila l’engin, ATTENTION l’insmod ext2 est particulier à mon installation !

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set default=0
insmod ext2
set root=(hd0,2)
search --no-floppy --fs-uuid --set d9006e55-711b-4749-91bc-a723b9ce31c3
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
set locale_dir=/boot/grub/locale
set lang=fr
insmod gettext
set timeout=5
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Debian GNU/Linux, avec Linux 2.6.32-trunk-amd64" {
        insmod ext2
        set root=(hd0,2)
        search --no-floppy --fs-uuid --set d9006e55-711b-4749-91bc-a723b9ce31c3
        linux   /boot/vmlinuz-2.6.32-trunk-amd64 root=UUID=d9006e55-711b-4749-91bc-a723b9ce31c3 ro  quiet
        initrd  /boot/initrd.img-2.6.32-trunk-amd64
}
menuentry "Debian GNU/Linux, avec Linux 2.6.32-trunk-amd64 (mode de dépannage)" {
        insmod ext2
        set root=(hd0,2)
        search --no-floppy --fs-uuid --set d9006e55-711b-4749-91bc-a723b9ce31c3
        linux   /boot/vmlinuz-2.6.32-trunk-amd64 root=UUID=d9006e55-711b-4749-91bc-a723b9ce31c3 ro single 
        initrd  /boot/initrd.img-2.6.32-trunk-amd64
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Debian GNU/Linux (5.0.3) (on /dev/sda3)" {
        insmod ext2
        set root=(hd0,3)
        search --no-floppy --fs-uuid --set 30a5b920-a31d-49e7-9730-9b024048dcfa
        linux /boot/vmlinuz-2.6.30-bpo.2-686 root=/dev/sda3
        initrd /boot/initrd.img-2.6.30-bpo.2-686
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_otheros ###

### END /etc/grub.d/30_otheros ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

J’ai fait un grub pipot, l’ai installé. Puis refait un grub “d’origine” à la main, parce dpkg-reconfigure veut pas non plus me le mettre sur sda2:

# apt-get install os-prober                  # il était pas installé...
# rm /boot/grub/grub.cfg                     # faire une sauvegarde au cas ou ?
# grub-mkconfig -o /boot/grub/grub.cfg
# grub-install --force /dev/sda2

Après reboot, ce grub sur /dev/sda2 boote en amd64 et boote aussi ma stable sur /dev/sda3 :smt029 A mon avis ca vient de la config…

J’allais oublier: on peut l’indiquer à l’install - du moins ma dernière install remonte à 3 semaines avec le tout dernier d-i.

Re,
Bien joué, et merci pour les indications.
Je n’ai pas fait d’install (CD) depuis une éternité… J’utilise debootstrap en général, et c’est pas génial pour Grub faut dire ! :mrgreen:
Je suis en train de faire une grosse MAJ (ça rame…) sur ma SID, je teste tout ça après !
Content que ça passe en tout cas ! :smiley:

Salut,

Moi ce qui me choque c’est que tu parles de partition “bootable” sda6 :slightly_smiling:

[code]Essayes de faire #fdisk /dev/sda
a
6

et tu vas voir ce qu’il te répond
[/code]

Salut,

Bon, c’est un peu plus galère que prévu…
Je chainload bien de grub2 vers grub1 (qui se trouve sur le PBR de sda1)
Impossible de faire un chainload vers le grub2 (qui devrait (?) se trouver sur la PBR de sda6)

[quote]error invalid signature[/quote] Kesako ? J’ai testé toutes les possibilité, j’ai réinstaller plusieurs fois grub2.

Par contre les noyaux des trois OS sont directement accessibles :smiley: (déjà ça :mrgreen: )

@Gérard :

[code]root@siduxbox:~# fdisk /dev/sda

The number of cylinders for this disk is set to 91201.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:

  1. software that runs at boot time (e.g., old versions of LILO)
  2. booting and partitioning software from other OSs
    (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): a
Partition number (1-10): 6

Command (m for help):
[/code]
Je n’ai pas écrit les changements…
Je ne vois pas ou est le soucis ?
Effectivement une seule partition peut-être active.
D’ailleurs je viens de vérifier les drapeaux de sda, et aucune partition n’est marquée “boot”… :question:
Mais je ne pense pas qu’il soit impossible d’installer grub sur une partition en milieu ou fin de disque

Re,

Tu n’as pas essayé par “a” et 6 de rendre bootable sda6 (il t’aurait dit que seul les partitions primaires peuvent être bootable (active) :smiley:

[quote=“ggoodluck47”]Re,

Tu n’as pas essayé par “a” et 6 de rendre bootable sda6 (il t’aurait dit que seul les partitions primaires peuvent être bootable (active) :smiley:[/quote]

Re,
[attachment=0]capture d’écran111.jpeg[/attachment]

Je dois être très persuasif :laughing:
Sans broncher il m’a mis /dev/sda6 (partition à l’intérieur d’une “extended”) “active” (fait avec fdisk et pas gparted)
J’avoue être dubitatif… :question:

Re,

J’aurais préféré un copié-collé du résultat de fdisk, moi ces trucs graphiques je n’y crois pas tellement. :smiley: :smiley:

Re,
Tu serais pas en train de dire que je trafique mes images… :mrgreen:
Remarque que c’est encore plus facile d’ajouter un *…

[code]Command (m for help): p

Disk /dev/sda: 750.2 GB, 750155292160 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x744bc8e4

Device Boot Start End Blocks Id System
/dev/sda1 * 1 8924 71681998+ 83 Linux
/dev/sda2 8925 91201 660890002+ 5 Extended
/dev/sda5 9945 11104 9317700 83 Linux
/dev/sda6 * 11105 20665 76798701 83 Linux
/dev/sda7 20666 59330 310576581 83 Linux
/dev/sda8 59331 68891 76798701 83 Linux
/dev/sda9 8925 9944 8193087 82 Linux swap / Solaris
/dev/sda10 68892 78452 76798701 83 Linux[/code]

Je n’ai pas d’explication… Un reboot peut-être ?

[quote]error invalid signature Kesako ? J’ai testé toutes les possibilité, j’ai réinstaller plusieurs fois grub2.
[/quote]
La cause la plus fréquente : mauvais numéro dans le

set root=(hd0,X)

Ne pas oublier:

GRUB 0.97 => hd(0,0) = sda1
GRUB 1.97(?)+ => hd(0,1) = sda1

De même, mais c’est censé faire partie des “best practices” de mettre un flag bootable sur une des partitions primaires - juste au cas ou.

Re,

[quote]Re,
Tu serais pas en train de dire que je trafique mes images… :mrgreen:
Remarque que c’est encore plus facile d’ajouter un *…
[/quote]

Ce n’est pas de toi que je me méfie mais de gparted :smiley:

Conclusion : Je suis bon pour un dist-upgrade de mes connaissances :blush:

[quote=“Knucky”][quote]error invalid signature Kesako ? J’ai testé toutes les possibilité, j’ai réinstaller plusieurs fois grub2.
[/quote]
La cause la plus fréquente : mauvais numéro dans le

set root=(hd0,X)

Ne pas oublier:

GRUB 0.97 => hd(0,0) = sda1
GRUB 1.97(?)+ => hd(0,1) = sda1

[/quote]
J’ai testé toutes les possibilités (hd0,0) à (hd0,10). J’ai même testé /dev/sda1 à 10 :frowning:
Je vais laisser passer la nuit là-dessus…

[quote=“Knucky”][quote]
D’ailleurs je viens de vérifier les drapeaux de sda, et aucune partition n’est marquée “boot”… :question:
[/quote]
De même, mais c’est censé faire partie des “best practices” de mettre un flag bootable sur une des partitions primaires - juste au cas ou.[/quote]
Pour ça aussi… Je penses que ça ne sert vraiment qu’a Windows… Pour les clef USB aussi peut-être ?

@Gérard. Je suis aussi surpris que toi !

Le flag “boot” n’est utilisé que par les codes amorce “standard” du MBR (de type MS-DOS) pour déterminer la partition à amorcer. En général ils ne savent amorcer qu’une partition principale, mais certaines variantes plus perfectionnées peuvent amorcer une partition logique. Si un autre chargeur tel que lilo ou grub est installé dans le MBR, ce flag ne sert à rien.

Salut,

Merci pour la précision. C’est un peu ce que je pensais…

Pascal, puis-je abuser ?
Comment se fait-il que je n’arrive pas à réinstaller proprement Grub2 dans le PBR de /dev/sda6 ? Ou en tout cas, s’il y est (je ne suis pas certain…) pourquoi je n’arrive pas à faire un “chainload” depuis un autre grub2 ?

Je ne connais pas du tout grub2, désolé. Je commence à peine à m’habituer à grub1, avant j’utilisais plutôt lilo.
Pour savoir si le stage1 de grub est dans le PBR de sda6, tu peux essayer ceci :

[quote=“PascalHambourg”]Je ne connais pas du tout grub2, désolé. Je commence à peine à m’habituer à grub1, avant j’utilisais plutôt lilo.
Pour savoir si le stage1 de grub est dans le PBR de sda6, tu peux essayer ceci :

# dd if=/dev/sda6 bs=512 count=1 | strings 1+0 enregistrements lus 1+0 enregistrements écrits 512 octets (512 B) copiés, 2,4444e-05 s, 20,9 MB/s

:question: Hum :blush:
Incapable de déchiffrer… Il va bien falloir que je m’y mette quand même !

Si strings ne trouve aucune chaîne de caractères dans les 512 premiers octets de sda6, alors l’amorce de grub n’y est pas. En tout cas c’est valable pour grub1, mais je ne sais pas pour grub2 peut-être que son amorce est compressée et qu’on ne peut la lire de cette façon. Exemple avec un MBR contenant une amorce de grub1 :

ZRrI
D|f1
GRUB
Geom
Hard Disk
Read
 Error

EDIT : Les lignes que tu as, ce sont des messages que dd envoie sur stderr. Tu peux les supprimer en ajoutant “2>/dev/null” avant le “|”.

Tu peux reproduire la même commande avec un emplacement que tu sais à coup sûr contenir une amorce de grub2, sda pour le MBR ou sdaX pour les différents PBR.

Merci,

dd if=/dev/sda1 bs=512 count=1 | strings 1+0 enregistrements lus 1+0 enregistrements écrits 512 octets (512 B) copiés, 0,0237615 s, 21,5 kB/s ZRrI D|f1 GRUB Geom Hard Disk Read Error
Donc ici, c’est bon ! Une idée du pourquoi de “Error” ?

Je crois que c’est un peu le foutoir dans mes partitions “Partition table entries are not in disk order”… Pas dramatique, mais ça ne facilite pas les choses !
Je vais remettre ça en ordre avec un LiveCD, et ensuite retenter les installations de Grub !