'install-grub' afirma que tenho vários rótulos de partições e que a incorporação é impossível

14

Estou tentando instalar o GRUB no computador desktop que não inicializa, mas estou encontrando vários erros. Outras fontes que discutem esses erros os atribuíram à falta de espaço livre em disco antes da primeira partição (eu tenho o espaço livre necessário) ou a um problema com /boot/grub/grub.cfg (o problema persiste mesmo depois de regenerar esse arquivo corretamente).

Eu iniciei com um USB ativo e tentei reinstalar o GRUB usando os seguintes comandos, mas encontro um erro que o impede de funcionar:

$ sudo mount /dev/sda1 /mnt
$ sudo grub-install --root-directory=/mnt /dev/sda
Installing for i386-pc platform.
grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels.  This is not supported yet..
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.

No entanto, /dev/sda parece estar formatado corretamente para instalar o grub:

$ sudo fdisk -l /dev/sda

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8d91017b

Device     Boot Start       End   Sectors   Size Id Type
/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"

Ele tem o espaço livre padrão de 1 MiB no início e /dev/sda1 está formatado corretamente. Eu tentei usar grub-mkconfig para reconstruir o arquivo de configuração:

$ for f in proc sys dev dev/pts ; do sudo mount --bind /$f /mnt/$f ; done
$ sudo chroot /mnt
# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.19.0-26-generic
Found initrd image: /boot/initrd.img-3.19.0-26-generic
Found linux image: /boot/vmlinuz-3.19.0-23-generic
Found initrd image: /boot/initrd.img-3.19.0-23-generic
Adding boot menu entry for EFI firmware configuration
done

No entanto, ainda recebo a mesma mensagem de erro ao executar grub-install , seja dentro ou fora do ambiente chroot .

Iniciando o USB ao vivo no modo herdado, recebo o mesmo erro; a única diferença é a saída de executar grub-mkconfig no ambiente chroot :

# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.19.0-26-generic
Found initrd image: /boot/initrd.img-3.19.0-26-generic
Found linux image: /boot/vmlinuz-3.19.0-23-generic
Found initrd image: /boot/initrd.img-3.19.0-23-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sdc1
done

Como posso instalar o grub corretamente?

    
por AJMansfield 27.08.2015 / 19:18

4 respostas

17

Nuke a lacuna entre o setor de inicialização e a primeira partição.

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

Isso é para se a primeira partição começar no setor 2048. Algumas começam antes, especialmente em unidades que foram particionadas pelo Windows. Para ter certeza, corra

# fdisk -l /dev/sdX

antes de iniciar e verifique para ver onde a primeira partição é iniciada. Use count=S-1 , onde S é o começo da primeira partição.

    
por enigmaticPhysicist 25.10.2016 / 23:16
3

Pode-se criar uma nova partição onde o registro da GPT é, então limpe-a usando dd . Dessa forma, apenas o registro MBR permanecerá.

Supondo que o dispositivo com problema é /dev/sda :

Crie uma nova partição no primeiro 1 MiB

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

Em seguida, zere a partição recém-criada

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

Em seguida, exclua a partição

$ parted /dev/sda
$ rm 2
$ quit

grub-install deve funcionar como esperado.

    
por swaroop 20.10.2015 / 22:49
2

Tive um problema semelhante com os vários marcadores de partição, embora eu tenha certeza de que não é esse o caso.

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

é o que eu usei para contornar isso. Tacking em um --force não é uma solução "recomendada", mas eu não tive problemas até agora = P

    
por krum85 19.04.2016 / 00:49
1

Aqui está o que eu fiz para que funcionasse de novo:

Usado gdisk para converter a partição MBR para GPT, inserir uma partição no espaço vazio (tipo EF02 "BIOS Boot partition"), transposta sua entrada com minha partição original e marcada como inicializável BIOS inicializável.

Em seguida, correu

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

A instalação foi bem-sucedida e eu consegui inicializar na minha unidade principal.

    
por AJMansfield 27.08.2015 / 20:12

Tags