Como recriar a partição de inicialização EFI?

8

Instalei o Fedora na minha máquina com a partição / , a partição swap e a partição ESP para a inicialização EFI.

Agora, eu estava instalando o Elementary OS em vez do Fedora.

  1. Eu formatei a partição / (/ dev / sda3)
  2. Formatou a partição de troca (/ dev / sda4)
  3. Mas não formatou a partição de inicialização EFI (/ dev / sda1)

Agora, quando eu inicializo, recebo meu menu grub antigo que foi instalado pelo Fedora. Eu só posso inicializar no Elementary OS por:

  1. Entrando no menu de inicialização.
  2. Selecionando a inicialização a partir do arquivo EFI
  3. Navegue por /dev/sda1/ para obter o diretório elementary que contém o arquivo grubx64.efi . Qual é /boot/efi/EFI/elementary/grubx64.efi .

Como posso consertar isso? Pensei em formatar a partição de inicialização /dev/sda1/ com fat16 ou algo assim, reinstalando o grub nela.

Meu /dev/sda1 agora contém isto:

root@rafael:/home/rafael# ls /boot/efi/
EFI  mach_kernel  System

root@rafael:/home/rafael# ls /boot/efi/EFI/
BOOT/       elementary/ fedora/     

root@rafael:/home/rafael# ls /boot/efi/EFI/fedora/
BOOT.CSV  fonts  gcdx64.efi  grub.cfg  grubx64.efi  MokManager.efi  shim.efi  shim-fedora.efi

root@rafael:/home/rafael# ls /boot/efi/EFI/elementary/
grubx64.efi

Aqui está minha efibootmgr output:

BootCurrent: 003D
Timeout: 0 seconds
BootOrder: 2001,2002,2003
Boot0000* Notebook Hard Drive
Boot0010* Internal CD/DVD ROM Drive
Boot0011* Internal CD/DVD ROM Drive (UEFI)
Boot0012* Fedora
Boot0013* Fedora
Boot0014* Fedora
Boot0015* Fedora
Boot0016* Fedora
Boot0017* Fedora
Boot0018* Fedora
Boot0019* Fedora
Boot001A* Fedora
Boot001B* Fedora
Boot001C* Fedora
Boot001D* Fedora
Boot001E* Fedora
Boot001F* elementary
Boot2001* USB Drive (UEFI)
Boot2002* Internal CD/DVD ROM Drive (UEFI)

Qualquer ajuda seria apreciada.

    
por Rafael Adel 19.07.2013 / 18:41

2 respostas

2

Eu fiz isso!

Primeiro, removi todas as entradas de inicialização desnecessárias:

efibootmgr -b <entry_hex_number> -B

Em seguida, Reformatando a partição ESP com o sistema de arquivos FAT32 .

mkfs.vfat -F32 /dev/sda1

Em seguida, instalei o grub em /dev/sda NOT /dev/sda1

grub-install /dev/sda
    
por 21.07.2013 / 03:35
5

Eu não sei porque você está usando o grub em primeiro lugar. UEFI age como uma inicialização carregador e permite selecionar diferentes sistemas operacionais ou individuais kernels de um menu de inicialização. Embora haja algumas exceções, geralmente é não é necessário para encadear um segundo carregador de inicialização, grub neste caso.

Você mencionou, você instalou o elementary OS em vez do Fedora, o que significa que você só precisa carregar um sistema operacional. Aqui eu apresento uma maneira de fazer isso sem usando o grub. O kernel precisa ser compilado com EFI_STUB, se esse for o caso, você pode verificar com

grep EFI_STUB /boot/config-<version>

Copie o kernel e o initramfs para o ESP (partição do sistema EFI)

cp /boot/vmlinuz-<version> /boot/efi/EFI/elementary/vmlinuz-<version>.efi
cp /boot/initrd.img-<version> /boot/efi/EFI/elementary/initrd.img-<version>

Registre o kernel como opção de inicialização no UEFI

echo "root=UUID=<disk_uuid> ro quiet rootfstype=ext4 add_efi_memmap initrd=\EFI\elementary\initrd.img-<version>" |
  iconv -f ascii -t ucs2 |
  efibootmgr \
    --create --gpt \
    --disk /dev/<disk> --part <partition_number> \
    --label "Elementary OS" \
    --loader "\EFI\elementary\vmlinuz-<version>.efi" \
    --write-signature --append-binary-args -

O argumento --disk usa o nome do dispositivo do disco, por ex. --disk /dev/sda , o argumento --part recebe o número da partição do ESP, e. 4. Você pode encontrar o número da partição ESP com o comando a seguir:

gdisk -l /dev/sda | awk '$6=="EF00" {print $1}'

Certifique-se de repetir as etapas após cada atualização do kernel

Ou você esta manualmente (apenas repita os passos acima) ou você escreve um pequeno script que faz o trabalho. Para automatizá-lo totalmente, o O script pode ser ligado ao procedimento de pós-instalação do kernel, o procedimento de pós-atualização do initramfs e no kernel postrm procedimento (para remover a entrada de inicialização da UEFI). Na verdade eu não sei por que isso não é feito por padrão nas distribuições, é apenas alguns linhas de código.

    
por 19.07.2013 / 21:41