As configurações de EFI definidas via efibootmgr são ignoradas após a reinicialização

0

Eu tenho 2 discos (/ dev / sda e / dev / sdb) no laptop UEFI. Ambos GPT.

sda1 - NTFS  - Windows,
sda2 - FAT32 - EFI partition where is Windows Boot Manager and GRUB

sdb1 - NTFS  - another windows 
sdb2 - NTFS  - My data
sdb3 - FAT32 - EFI partition
sdb4 - EXT4  - Debian

na ordem EFI, posso ver o Gerenciador de Inicialização do Windows e o GRUB. Eu posso mudar entre então e isso está funcionando. Eu considero usar o syslinux para inicializar no debian. Eu quero ter syslinux em sdb3, eu montei isso e copie esses arquivos para esta partição no local:

/EFI/SYSLINUX/initrd.img
/EFI/SYSLINUX/ldlinux.e64
/EFI/SYSLINUX/syslinux.cfg
/EFI/SYSLINUX/syslinux.efi
/EFI/SYSLINUX/vmlinuz

vmlinuz e initrd eu copiei de sdb4 \ boot e renomeie. syslinux.efi e ldlinux.e64 eu copiei do syslinux-6.03.tar.gz baixado do link . syslinux.cfg eu escrevi e o conteúdo é

PROMPT 0
TIMEOUT 300
DEFAULT deb

LABEL deb
    LINUX vmlinuz
    APPEND ROOT=/dev/sdb4
    INITRD initrd.img

então eu adicionei o registro ao EFI via comando

efibootmgr -c -d /dev/sdb3 -p 1 -l \EFI\SYSLINUX\syslinux.efi -L "SYSLINUX2"

O gerenciador efiboot respondeu com sucesso e mostra o SYSLINUX2 como opções de inicialização, mas quando eu reinicializo o computador (pelo comando reboot) e vou para as configurações do UEFI, não há nenhuma opção SYSLINUX2 adicionada. Existem apenas o GRUB e o Gerenciador de Inicialização do Windows. Após a próxima inicialização no debian, o efibootmgr também responde apenas ao Gerenciador de Inicialização do Windows e ao GRUB.

Eu li que algumas pessoas tiveram problemas com inicialização segura. Eu o desabilitei e o GRUB não tem problema com isso.

O que está errado? Como tornar a configuração do efibootmgr persistente? Onde eu errei (se houver)?

    
por Misaz 12.01.2017 / 14:02

3 respostas

1

Você está vendo um bug e quase certamente não está relacionado à inicialização segura. Tenho várias sugestões, mas nenhuma delas garante a correção do problema:

  • Atualize seu firmware - Se o bug estiver no firmware, atualizá-lo poderá corrigir o problema. Verifique com o fabricante do computador (ou placa-mãe) para encontrar atualizações. (Eles provavelmente são chamados de "atualizações do BIOS", embora tecnicamente seu firmware não seja um BIOS.) Após a atualização, reinicialize no Linux e tente novamente.
  • Redefinir seu firmware para as configurações padrão - Às vezes, as listas de gerenciadores de inicialização EFI ficam corrompidas, causando sintomas como aqueles que você descreve. Redefinir todas as configurações de firmware para seus padrões no utilitário de configuração pode corrigir esse problema. Infelizmente, esta etapa removerá todas as entradas do gerenciador de inicialização de trabalho, portanto, talvez seja necessário usar uma ferramenta de emergência (como o meu gerenciador de inicialização do rEFInd em uma unidade USB ou CD-R) para inicializar até recriar suas entradas de trabalho.
  • Exclua entradas não usadas do gerenciador de inicialização - A exclusão de entradas não utilizadas do gerenciador de inicialização (com a opção -B para efibootmgr ) também pode contornar as entradas corrompidas. Tente efibootmgr sozinho ou efibootmgr -v para uma saída mais detalhada, para localizar entradas duplicadas ou indesejadas. (Observe que o firmware pode recriar alguns automaticamente quando você reinicia. Isso pode acontecer com opções de inicialização de rede ou opções para inicializar mídia externa, por exemplo).
  • Use outra ferramenta para criar a entrada de inicialização - Às vezes, efibootmgr não funciona, mas uma ferramenta em outro sistema operacional (como bcdedit ou EasyUEFI no Windows) ou a ferramenta bcfg em um shell EFI fará o trabalho. Assim, você pode tentar essas ferramentas em vez de efibootmgr .
  • Usar um nome de arquivo de fallback - O nome do arquivo de fallback ( EFI/BOOT/bootx64.efi em sistemas x86-64) pode ser usado se nada mais estiver funcionando; no entanto, esse nome de arquivo normalmente será o último que um computador tenta inicializar. Portanto, se já estiver sendo inicializado por algum outro nome (como o carregador de inicialização do Windows, EFI/Microsoft/Boot/bootmgfw.efi ), talvez seja necessário fazer o backup, renomear o gerenciador / gerenciador de inicialização desejado para o padrão atualmente inicializado e reconfigurar o novo gerenciador de inicialização. oferecer para inicializar o que está se disfarçando usando seu novo nome. Isso é um pouco um malabarismo, e nem todos os carregadores de inicialização EFI para Linux podem encadear para outro programa EFI, portanto, pode não funcionar corretamente. (Eu não me lembro de improviso se o SYSLINUX pode encadear outro programa EFI).
  • Alternar para inicialização via BIOS / CSM / herdado - A maioria das EFIs fornece um Módulo de Suporte à Compatibilidade (CSM), que permite inicializar carregadores de inicialização no modo BIOS. Assim, você pode instalar um carregador de inicialização no modo BIOS para o Linux, ativar o CSM e inicializar dessa maneira. Se você estiver com um sistema operacional dual-boot, você precisará instalar o seu carregador de inicialização no modo BIOS, e isso pode exigir a mudança do particionamento GPT para o MBR. No geral, essa abordagem provavelmente será um pouco dolorosa; mas em algumas EFIs (principalmente as antigas de 2011 ou por aí), pode ser a melhor abordagem.
  • Devolva o computador para receber um reembolso - Se tudo isso falhar, e se o computador estiver no período de devolução da loja, você poderá devolvê-lo para um que funcione. Na verdade, eu recomendo essa abordagem antes de qualquer uma das duas opções anteriores, se possível. Se você fizer isso, não deixe de entrar em contato com o fabricante para informar por que você devolveu o computador. As EFIs tiveram sérios problemas desde o primeiro dia, e alguns fabricantes demoraram para consertá-los, em parte porque seus clientes nunca reclamam, então os fabricantes não percebem a gravidade dos erros.
por 12.01.2017 / 18:16
1

ATUALIZAÇÃO:

Olá, eu de novo,

começou a trabalhar nele novamente, agora corrigido com a renomeação do arquivo .efi para o windows equivalente (bootmgfw.efi), então remontou o efivarfs do sistema de arquivos efivar como na descrição acima, em seguida, defina a entrada de inicialização do uefi no VRAM digitando

efibootmgr -c -d / dev / sda -p 4 -L "linuxmint_grub" -l "\ EFI \ linuxmint_grub \ bootmgfw.efi"

com o ESP em / dev / sda, partição 4.

Nenhuma inicialização funciona perfeitamente, a entrada efibootmgr permanece persistente, apenas uma desvantagem: o GRUB é inicializado automaticamente na inicialização, apesar de ter sido desativado. Parece ser um problema do GRUB, vai resolver isso mais tarde.

Felicidades e espero que eu possa ajudar;)

    
por 19.03.2018 / 10:50
-1

Estou tendo o mesmo problema, tentando criar entrada de inicialização efi sob Intel NUC7I5BBNK e LinuxMint 18.3 com ESP montado em / boot. O Efibootmgr cria entradas com sucesso e persistência, mas não é acessível, não é mostrado no menu de inicialização visual EFI e a entrada de inicialização automaticamente mostrada no Intel BIOS mostra apenas que "nenhuma partição de inicialização válida foi detectada". Também achei a ordem de inicialização, não importa quantas vezes eu corrija, não é persistente, vou tentar remontar com

mount -o remontar, rw -t efivarfs efivarfs / sys / firmware / efi / efivars

embora esteja alreade montado "rw" como mostrado por

monte | grep efivars

e tente novamente. (Para mais informações, consulte link ).

A escolha de variáveis efi diretamente do menu de visores visuais da UEFI não foi possível, eu posso vê-lo visualmente a partir do arquivo construído explore, mas não consigo selecioná-lo.

Outra opção seria instalar o .efi-Variables no modo Secure Boot, que não é o meu favorito. Talvez seja o melhor ajuste para a implementação do UEFI. Todas as instalações precisam de ajustes personalizados!

Em segundo lugar tentou instalar a entrada EFI com efibootmgr no laptop ASUS V3-371-KT51, não funcionou em tudo - > realmente mostra como isso depende da máquina e da implementação do UEFI. Trabalhou (meio que) com a seleção do arquivo .efi do menu UEFI manualmente, mas apenas no modo de inicialização segura.

O método bcfg como sugerido por outro post é apenas para inicialização direta, o que significa negligenciar o gerenciador de inicialização (EFISTUB, até onde eu sei, não tome isso como garantido, por favor, verifique isso por si mesmo, como aqui: < href="https://wiki.archlinux.org/index.php/EFISTUB"> link )

BTW: 3 erros aparentes para mim: (1) -d significa "disco", diferente de "partição", o que significa que você deve alterá-lo para "/ dev / sdb" se o seu ESP estiver em / dev / sdb (2) -p representa o número da partição, no seu caso "3" (ou "2", dependendo de como o efibootmgr resp. O UEFI implementa. Está contando)

Então, tente mudar isso.

(3) Por último, mas não menos importante, inicializei com êxito uma unidade flash UEFI com todos os arquivos kernel, initrd e o que não é / boot, diferente do diretório / boot / EFI / syslinux sugerido. Este é o caminho usual para ir.

Espero que tenha ajudado, boa sorte para você e tenha cuidado;)

    
por 18.03.2018 / 17:00