O `install-grub` alega que tenho vários rótulos de partição e que a incorporação é impossível


19

Estou tentando instalar o GRUB no meu computador desktop não inicializando, mas estou com 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 após a regeneração correta do arquivo).

Inicializei com um USB ativo e tentei reinstalar o GRUB usando os seguintes comandos, mas encontro um erro que impede que ele funcione:

$ sudo mount / dev / sda1 / mnt
$ sudo grub-install - diretório-raiz = / mnt / dev / sda
Instalando para a plataforma i386-pc.
grub-install: warning: Tentativa de instalar o GRUB em um disco com vários rótulos de partição. Isso ainda não é suportado.
grub-install: aviso: A incorporação não é possível. O GRUB só pode ser instalado nesta configuração usando listas de bloqueio. No entanto, as listas de bloqueio são INRELÁVEIS e seu uso é desencorajado.
grub-install: error: não continuará com as listas de bloqueio.

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

$ sudo fdisk -l / dev / sda

Disco / dev / sda: 111,8 GiB, 120034123776 bytes, 234441648 setores
Unidades: setores de 1 * 512 = 512 bytes
Tamanho do setor (lógico / físico): 512 bytes / 512 bytes
Tamanho de E / S (mínimo / ideal): 512 bytes / 512 bytes
Tipo de rótulo de disco: dos
Identificador de disco: 0x8d91017b

Setores finais de inicialização do dispositivo Tamanho Tipo de 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"

Ele possui o espaço livre padrão de 1 MiB no início e /dev/sda1está formatado corretamente. Eu tentei usar grub-mkconfigpara reconstruir o arquivo de configuração:

$ for f em proc sys dev dev / pts; faça sudo mount --bind / $ f / mnt / $ f; feito
$ sudo chroot / mnt
# grub-mkconfig -o /boot/grub/grub.cfg
Gerando arquivo de configuração do grub ...
Imagem linux encontrada: /boot/vmlinuz-3.19.0-26-generic
Imagem initrd encontrada: /boot/initrd.img-3.19.0-26-generic
Imagem linux encontrada: /boot/vmlinuz-3.19.0-23-generic
Imagem initrd encontrada: /boot/initrd.img-3.19.0-23-generic
Adicionando entrada do menu de inicialização para a configuração do firmware EFI
feito

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

Ao inicializar o USB ao vivo no modo legado, recebo o mesmo erro; a única diferença é a saída da execução grub-mkconfigno chrootambiente:

# grub-mkconfig -o /boot/grub/grub.cfg
Gerando arquivo de configuração do grub ...
Imagem linux encontrada: /boot/vmlinuz-3.19.0-26-generic
Imagem initrd encontrada: /boot/initrd.img-3.19.0-26-generic
Imagem linux encontrada: /boot/vmlinuz-3.19.0-23-generic
Imagem initrd encontrada: /boot/initrd.img-3.19.0-23-generic
Imagem encontrada do memtest86 +: /boot/memtest86+.elf
Imagem encontrada do memtest86 +: /boot/memtest86+.bin
Encontrado Windows 7 (carregador) em / dev / sdc1
feito

Como posso instalar o grub corretamente?

Respostas:


25

Preencher 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 ocorre se a primeira partição iniciar no setor 2048. Algumas são iniciadas anteriormente, principalmente em unidades que foram particionadas pelo Windows. Para ter certeza, execute

# fdisk -l /dev/sdX

antes de iniciar e verifique onde a primeira partição é iniciada. Use count=S-1, onde S é o início da primeira partição.


Isso funcionou para mim. Estou tentando usar o BTRFS em uma partição ext4 / boot separada. Obrigado.
Thales Ceolin

Observe que isso trará um layout GPT para o lixo. É possível se recuperar de seu backup.
CR.

se você estiver usando GPT, precisará limpar a partição de inicialização do BIOS. Onde isso depende de como você colocou seu disco. Coloquei o meu após a GPT, entre o bloco 34 e 2047, assumindo que a primeira partição "real" comece no bloco 2048. Modificar a linha de comando fornecida para usar seek=34 count=2014funciona para mim.
Starfry # 6/18

funciona perfeitamente!!!! embora o grub deva fazê-lo automaticamente
brauliobo 13/07

11
Sim, você acha que sim, @brauliobo, mas o GRUB é um lixo total. Eu nem uso mais. Hoje em dia, uso o syslinux para mbr e systemd-boot para gpt.
enigmaticPhysicist

3

Pode-se criar uma nova partição onde está o registro GPT e, em seguida, limpe-o usando dd. Dessa forma, apenas o registro MBR permanecerá.

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

Crie uma nova partição no 1 MiB inicial

$ 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 agora deve funcionar como esperado.


Por favor edite sua resposta para justificar o que este código faz, e por que você acredita que ele seja uma solução.
Martin Thornton

Trabalhou para mim. Editado para maior clareza
Nitz

3

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

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

é o que eu costumava contornar isso. Seguir uma --forcenão é uma solução "recomendada", mas até agora não tive problemas = P


1

Aqui está o que eu fiz para que funcionasse novamente:

Usado gdiskpara converter a partição MBR em GPT, inserir uma partição no espaço vazio (tipo EF02 "Partição de inicialização do BIOS"), transpor sua entrada com a minha partição original e sinalizá-la como BIOS herdável inicializável.

Então correu

$ sudo mount / dev / sda1 / mnt
$ sudo grub-install - diretório-raiz = / mnt / dev / sda

Em seguida, ele foi instalado com êxito e eu consegui inicializar na minha unidade principal.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.