
Como iniciar o vmlinuz-linux a partir do shell efi? Eu pulo para o ESP e digito vmlinuz-linux
(vmlinuz-linux está no ESP), mas ele diz vmlinuz-linux isn't recognized as an internal or external command, operable program, or batch file
: por que preciso iniciar um gerenciador de inicialização primeiro, não entendi.
Responder1
Só tive que digitar /vmlinuz-linux root=PARTUUID=3518bb68-d01e-45c9-b973-0b5d918aae96 initrd=/initramfs-linux.img
issohttps://wiki.archlinux.org/index.php/EFISTUB#Booting_EFISTUBmas tive que remover a barra /
antes vmlinuz-linux
para que funcionasse.
Responder2
Se você precisa ou não de um carregador de boot, depende se sua versão específica do kernel Linux suporta EFI BOOT STUB.
Consulte o seguinte para obter mais informações:https://www.kernel.org/doc/Documentation/efi-stub.txt
Responder3
IIRC, o shell EFI não iniciará arquivos como programas se seus nomes não terminarem em .efi
. Portanto, você deve primeiro renomear o arquivo do kernel para que seu nome termine em .efi
.
Se não for possível renomear o arquivo do kernel, você ainda poderá iniciar um kernel usando o carregador de stub EFI por meio de outro programa gerenciador de inicialização, como gummiboot/systemd-boot ou rEFInd. Essas ferramentas não se importam com a extensão do nome do arquivo – pelo menos não tanto quanto o shell. (O recurso de verificação automática do rEFInd corresponde a *.efi
, vmlinuz*
, bzImage*
e kernel*
, mas a configuração de inicialização manual para ambos os programas funcionará com qualquer nome de arquivo.)
Além disso, como diz fpmurphy1, o kernel deve ser compilado com suporte a stub EFI. A maioria das distribuições incluiu esse suporte em seus kernels 3.3.0 e posteriores, mas isso pode não ser 100% universal, especialmente se você mesmo compilar seu kernel. (A última vez que verifiquei, o suporte ao stub EFI não fazia parte da configuração padrão do kernel para a fonte do kernel obtida em kernel.org
.)
Responder4
A melhor descrição está Documentation/efi-stub.txt
neste exemplo:
fs0:> bzImage.efi console=ttyS0 root=/dev/sda4
Ele não detalha esse fs0:>
prompt, nem menciona o (U)EFI Shell para substituir um gerenciador de inicialização "convencional". No meu caso, após inicializar no Uefi Shell, recebo Shell>
um aviso e primeiro preciso escolher um sistema de arquivos ESP/FAT. (Você pode ter mais de um ESP mesmo por unidade)
O segundo ponto é adicionar a extensão ".efi" ao bzImage. Não preciso fazer isso (AMI 2.7). Portanto, pode ser reduzido para:
fsX:> bzImage root=/dev/sda4 [initrd=...] [...]
Outra confusão pode ser as barras no estilo DOS e a necessidade de caminhos absolutos nos .nsh
scripts. Com as imagens em uma pasta própria “distro”, a linha fica assim:
distro\bzImage initrd=distro\initrd root=/dev/sdaX
Observe que o parâmetro root possui barras; ele é usado pelo kernel, não pelo Uefi Shell.