Quais comandos para converter um BIOS do Ubuntu são instalados no EFI / UEFI sem reparo de inicialização no hardware de inicialização única?


35

Instalação acidental no modo BIOS

Eu tenho hardware Intel de 64 bits com o utilitário de configuração UEFI. O Ubuntu 14.04.1 LTS foi instalado como o único sistema operacional na única unidade conectada. Acidentalmente, o Ubuntu foi instalado no modo BIOS / CSM / legado.

Converta para UEFI

Mais tarde, aprendendo sobre a UEFI, o objetivo é alterar essa instalação existente do Ubuntu para uma inicialização (mais rápida) via EFI / UEFI. Ainda quero ter algum tipo de menu de inicialização - 2 segundos exibido - que permita que eu entre no utilitário de configuração UEFI. Portanto, acho que preciso usar o Grub (não é possível usar um stub de inicialização EFI) e o suporte ao GOP exige a versão 1.99 ou superior do Grub . Eu já particionei a unidade novamente usando um Live CD e inseri uma partição 200 MiB EFI no início da unidade e marquei essa partição formatada como fat16 como o tipo de identificação 0xEF.

Antes:

# fdisk -l /dev/sda
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   108478463    54238208   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Depois de:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *      411648   108478463    54033408   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda3            2048      411647      204800   ef  EFI (FAT-12/16/32)
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Partition table entries are not in disk order

Nenhum reparo de inicialização, por favor

O wiki da comunidade Ubuntu sugere usar o reparo de inicialização para converter o Ubuntu no modo EFI . Não quero usar uma GUI, nem instalar nenhum pacote extra, e não quero que dados sejam enviados acidentalmente para pastebin.com e porque quero saber exatamente o que será alterado, não quero use o reparo de inicialização .

Sob o capô

Tentando descobrir o que o reparo de inicialização realmente faz, encontrei este trecho:

O Boot-Repair converterá uma instalação do BIOS em UEFI desinstalando o grub-pc e instalando o grub-efi, se o gpt for particionado.

fonte: http://ubuntuforums.org/showthread.php?t=2147295&p=12657352#post12657352

Comparação de instalação no modo UEFI

Uma instalação limpa do Ubuntu 14.04.1 no modo UEFI cria uma partição EFI no formato 512 MiB Fat32. Essa partição contém um diretório /EFI/ubuntu, que contém 4 arquivos: grub.cfg, grubx64.efi, MokManager.efie shimx64.efi. O grub.cfg contém:

search.fs_uuid 7d843e47-3917-4114-8725-55dfa1fbe002 root hd0,gpt2
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

Search.fs_uuid aponta para o UUID da partição de instalação do Linux. Nesta comparação, a instalação UEFI do Linux é a partição instalada / dev / sda2 (versus sda1 na instalação no modo BIOS) .

Não foram encontrados possíveis problemas de firmware da Asrock

Tendo o CSM ainda desativado no firmware e usando a instalação limpa do Ubuntu no modo UEFI. O redimensionamento da partição 512 MiB EFI para 200 MiB usando um Live CD e gpartedresulta na alteração de sua formatação de FAT32 para FAT16. O firmware do Asrock P1.50 (chamado incorretamente de BIOS pela AMI na mensagem de inicialização "data do BIOS") ainda pode inicializar no modo UEFI Ubuntu: UEFI + FAT16 = ok .
A conversão da tabela de partição de GPT para MBR (msdos) usando o mesmo comando de terminal do Live CD gdiske seus comandos r g p wtambém resulta em um Ubuntu inicializável UEFI em uma unidade particionada MBR: UEFI + MBR = ok .

Questão

Isso significa que os únicos comandos que eu preciso executar - a partir da instalação legada do Ubuntu e nesta ordem - são:

# apt-get install grub-efi
# apt-get remove grub-pc

? Ou é mais necessário ser feito?


1
Eu ainda usaria o reparo de inicialização. Você assume que precisa instalar pacotes ... Acredito que esteja errado. Veja: askubuntu.com/questions/226061/…
— Rinzwind 10/08/14

@Rinzwind Não consigo usar o reparo de inicialização porque não há GUI na instalação atual do Ubuntu (somente console) e o ubuntu-14.04.1-desktop-amd64.iso não inicializa quando definido como o primeiro dispositivo de inicialização UEFI USB no Asrock Utilitário de configuração H81 Pro BTC P1.50 UEFI.
— Pro Backup

1
O Boot-Repair não é gui, mas sim um dos suplementos que o tornam mais gui. Com a versão mais recente do Ubuntu, os nomes dos pacotes mudaram um pouco, agora é assinado pelo grub-efi-amd64 ou grub-efi-amd64, eu acho. Pode ser porque eles desejam liberar um carregador de inicialização UEFI de 32 bits com esse nome alterado. Versão Chroot, observe que você também instala o grub e cria o grub.cfg. askubuntu.com/questions/53578/...
— oldfred

O @oldfred Boot-Repair depende da interface do apt-get install boot-repairusuário : a execução nesta instalação do servidor Ubuntu resulta em 245 MB de GTK, como as dependências que o boot-repair deseja instalar. E a execução do boot-repaircomando depois falha. A atualização da nomeação grub-efi mais recente foi realmente útil.
— Pro Backup

Se for um Asrock, verifique se não há nenhuma unidade ou unidade de DVD conectada às portas do Asmedia. Eles não têm drivers. É melhor ter apenas a unidade particionada gpt se inicializar no UEFI. rodsbooks.com/gdisk/hybrid.html
— oldfred

Respostas:


40

Inicie um Live CD do Ubuntu Linux (14.04) no modo UEFI. No caso de um dispositivo de inicialização USB, desative "Inicialização rápida" no UEFI.

Abra uma janela do terminal ( Ctrl+ Alt+ T)

Para verificar se você está realmente executando no modo UEFI, use este comando bash:

$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

A saída resultante deve ser:

UEFI

Caso isso ocorra BIOS, reinicie o firmware e corrija a preferência do dispositivo de inicialização.

Para fazer a conversão do BIOS em EFI / UEFI, digite estes comandos:

$ sudo mount /dev/sda1 /mnt
$ sudo mkdir -p /mnt/boot/efi
$ sudo mount /dev/sda3 /mnt/boot/efi
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo mount --bind /run /mnt/run
$ modprobe efivars
$ sudo chroot /mnt
# apt-get install grub-efi-amd64

The following extra packages will be installed:
  efibootmgr grub-efi-amd64-bin
The following packages will be removed:
  grub-gfxpayload-lists grub-pc
...
After this operation, 2,399 kB of additional disk space will be used.

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Apesar de terminar na mensagem de erro:

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

a próxima reinicialização já mostra " ubuntu " no firmware, seu menu de opções de inicialização e inicializa no console como antes, exceto por agora a inicialização no modo efi:

$ dmesg | grep EFI
efi: EFI v2.31 by American Megatrends
fb0: EFI VGA frame buffer device
EFI Variables Facility v0.08 2004-May-17
fb: switching to inteldrmfb from EFI VGA

Caso algo dê errado, https://superuser.com/questions/376470/how-to-reinstall-grub2-efi pode ajudar.


Isso me ajudou a atualizar meu disco rígido e converter para GPT / UEFI / SecureBoot sem reinstalar. Obrigado. Uma observação: eu precisava do grub-efi-amd64-signedpacote para evitar ter que desabilitar o SecureBoot no meu UEFI BIOS.
— Robie Basak

Agora é 2018 e esse problema com o EFI i ainda é persistente. até o efi boot está instalado, mas eu acabo no grub cli. Eu desisto do Ubuntu.
— Abhishek Dujari

Isso funcionou para mim no Ubuntu 19.10. Inicializei o USB ativo com EFI e adicionei uma partição de 200 MB do tipo FAT32 para EFI ao final do meu disco.
— Joey Adams

1

Isso funcionou para mim também com uma pequena alteração. Embora a rede estivesse funcionando, não consegui o "apt-get install grub-efi-amd64" para encontrar qualquer um dos servidores de pacote.

Eu resolvi isso inicializando o modo BIOS uma última vez e instalando o grub-efi-amd64.

Eu poderia seguir os procedimentos aqui com exceção de omitir "apt-get install grub-efi-amd64".


1

Correção pequena:

sudo apt-get install -y grub-efi-amd64
sudo mount /dev/sda1 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda3 /mnt/boot/efi
for d in dev sys proc usr run; do sudo mount -B /$d /mnt/$d; done
sudo modprobe efivars
sudo chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Feito.


Você pode explicar por que está sugerindo essas mudanças a partir da resposta do OP? ………… Por favor, não responda nos comentários; edite  sua resposta para torná-la mais clara e completa.
— G-Man diz 'Reinstate Monica'
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.