`install-grub` affirme que j'ai plusieurs étiquettes de partition et que l'incorporation est impossible

19

J'essaie d'installer GRUB sur mon ordinateur de bureau qui ne démarre pas, mais je rencontre plusieurs erreurs. D'autres sources discutant de ces erreurs les ont attribuées soit à un manque d'espace disque libre avant la première partition (j'ai l'espace libre requis), soit à un problème avec /boot/grub/grub.cfg(le problème persiste même après la régénération correcte de ce fichier).

J'ai démarré avec une clé USB en direct et j'ai tenté de réinstaller GRUB à l'aide des commandes suivantes, mais je rencontre une erreur qui l'empêche de fonctionner:

$ sudo mount / dev / sda1 / mnt
$ sudo grub-install --root-directory = / mnt / dev / sda
Installation pour la plate-forme i386-pc.
grub-install: avertissement: tentative d'installation de GRUB sur un disque avec plusieurs étiquettes de partition. Ce n'est pas encore supporté ..
grub-install: avertissement: l'incorporation n'est pas possible. GRUB ne peut être installé dans cette configuration qu'en utilisant des listes de blocage. Cependant, les listes de blocage ne sont pas fiables et leur utilisation est déconseillée.
grub-install: erreur: ne procédera pas aux listes de blocage.

Cependant, /dev/sdasemble être formaté correctement pour l'installation de grub:

$ sudo fdisk -l / dev / sda

Disque / dev / sda: 111,8 Gio, 120034123776 octets, 234441648 secteurs
Unités: secteurs de 1 * 512 = 512 octets
Taille du secteur (logique / physique): 512 octets / 512 octets
Taille des E / S (minimum / optimal): 512 octets / 512 octets
Type d'étiquette de disque: dos
Identificateur de disque: 0x8d91017b

Secteurs de début de démarrage de périphérique Taille Type d'ID
/ dev / sda1 * 2048 234440703 234438656 111.8G 83 Linux

$ blkid / dev / sda1
/ dev / sda1: UUID = "84e9ff65-c4ba-42eb-8a6d-ebc703fae1f7" TYPE = "ext4" PARTUUID = "8d91017b-01"

Il dispose de l'espace libre standard de 1 Mio au début et /dev/sda1est correctement formaté. J'ai essayé d'utiliser grub-mkconfigpour reconstruire le fichier de configuration:

$ for f dans proc sys dev dev / pts; faire le montage sudo --bind / $ f / mnt / $ f; terminé
$ sudo chroot / mnt
# grub-mkconfig -o /boot/grub/grub.cfg
Génération du fichier de configuration grub ...
Image Linux trouvée: /boot/vmlinuz-3.19.0-26-generic
Image initrd trouvée: /boot/initrd.img-3.19.0-26-generic
Image Linux trouvée: /boot/vmlinuz-3.19.0-23-generic
Image initrd trouvée: /boot/initrd.img-3.19.0-23-generic
Ajout d'une entrée de menu de démarrage pour la configuration du firmware EFI
terminé

Cependant, je reçois toujours le même message d'erreur lors de l'exécution grub-install, que ce soit dans ou hors de l' chrootenvironnement.

En démarrant l'USB en direct en mode hérité, j'obtiens la même erreur; la seule différence est la sortie de l'exécution grub-mkconfigdans l' chrootenvironnement:

# grub-mkconfig -o /boot/grub/grub.cfg
Génération du fichier de configuration grub ...
Image Linux trouvée: /boot/vmlinuz-3.19.0-26-generic
Image initrd trouvée: /boot/initrd.img-3.19.0-26-generic
Image Linux trouvée: /boot/vmlinuz-3.19.0-23-generic
Image initrd trouvée: /boot/initrd.img-3.19.0-23-generic
Image memtest86 + trouvée: /boot/memtest86+.elf
Image memtest86 + trouvée: /boot/memtest86+.bin
Windows 7 (chargeur) trouvé sur / dev / sdc1
terminé

Comment installer correctement grub?

AJMansfield
la source

Réponses:

25

Nuke l'écart entre le secteur de démarrage et la première partition.

# dd if=/dev/zero of=/dev/sdX seek=1 count=2047

C'est pour si la première partition commence au secteur 2048. Certains démarrent plus tôt, en particulier sur les disques qui ont été partitionnés par Windows. Pour être sûr, exécutez

# fdisk -l /dev/sdX

avant de démarrer et vérifiez où commence la première partition. Utilisez count=S-1, où S est le début de la première partition.

énigmatiquePhysicien
la source
Cela a fonctionné pour moi. J'essaie d'utiliser BTRFS le long d'une partition ext4 / boot distincte. Merci.
Thales Ceolin
Notez que cela supprimera une disposition GPT. Il est cependant possible de récupérer à partir de sa sauvegarde.
CR.
si vous utilisez GPT, vous devez effacer la partition de démarrage du BIOS. Son emplacement dépend de la façon dont vous avez disposé votre disque. Je mets le mien après le GPT, entre le bloc 34 et 2047, en supposant que la première "vraie" partition commence au bloc 2048. La modification de la ligne de commande donnée pour utiliser seek=34 count=2014fonctionne pour moi.
Starfry du
marche parfaitement!!!! grub devrait cependant le faire automatiquement
brauliobo
1
Oui, on pourrait le penser, @brauliobo, mais GRUB est une ordure totale. Je ne l'utilise même plus. Ces jours-ci, j'utilise syslinux pour mbr et systemd-boot pour gpt.
enigmaticPhysicist
3

On peut créer une nouvelle partition où se trouve l'enregistrement GPT, puis l'effacer à l'aide dd. De cette façon, seul le record MBR restera.

En supposant que l'appareil à problème est /dev/sda:

Créer une nouvelle partition dans le 1 Mo initial

$ parted /dev/sda
$ mkpart primary ext4 0MiB 1MiB
$ quit

Ensuite, mettez à zéro la partition nouvellement créée

$ dd if=/dev/zero of=/dev/sda2

Ensuite, supprimez la partition

$ parted /dev/sda
$ rm 2
$ quit

grub-install devrait maintenant fonctionner comme prévu.

Swaroop
la source
Veuillez modifier votre réponse pour justifier ce que fait ce code et pourquoi vous pensez qu'il s'agit d'une solution.
Martin Thornton du
A travaillé pour moi. Modifié pour plus de clarté
Nitz
3

J'ai eu un problème similaire avec les étiquettes de partition multiples, même si je suis sûr que ce n'est pas le cas.

sudo grub-install target=i386-pc /dev/sda --force

c'est ce que j'avais l'habitude de contourner. S'attaquer à un --forcen'est pas une solution "recommandée", mais je n'ai eu aucun problème jusqu'à présent = P

krum85
la source
1

Voici ce que j'ai fait pour le faire fonctionner à nouveau:

Utilisé gdiskpour convertir la partition MBR en GPT, insérer une partition dans l'espace vide (type EF02 "BIOS Boot partition"), transposer son entrée avec ma partition d'origine et la signaler comme BIOS bootable hérité.

Puis couru

$ sudo mount / dev / sda1 / mnt
$ sudo grub-install --root-directory = / mnt / dev / sda

Il s'est ensuite installé avec succès et j'ai pu démarrer sur mon lecteur principal.

AJMansfield
la source