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?

Pro Backup
fonte
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.

Pro Backup
fonte
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".

WallyZ
fonte
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.

Daniel Jean
fonte
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'