O que é vmlinuz.efi?

5

Sim, eu sei que é um kernel;)

Eu vi esse arquivo quando eu estava olhando as ISO's de 64 bits de 13.04. Estou trabalhando em remixá-los no meu pen drive. No entanto, eu quero que meu remix tenha um kernel atualizado comparado ao do CD. Isso significa que eu terei que fazer um vmlinux.efi.

Claro, para poder fazer um significa que eu tenho que saber o que é.

É simplesmente um kernel antigo de 64 bits? É, talvez, um esboço de inicialização EFI?

O aspecto do stub de inicialização não faz sentido porque é carregado a partir do GRUB no EFI e nem está localizado em EFI / BOOT. Talvez seja apenas à prova do futuro se é um esboço de inicialização da EFI? Um artigo que encontrei no wiki da comunidade dizia algo como "é chamado vmlinuz.efi" porque é de 64 bits. Isso também parece um pouco estranho. Quero dizer, isso ajuda a diferenciar, mas um nome melhor poderia ter sido escolhido se não fosse inicializável pela EFI.

Uma coisa que acho estranho é que o Isolinux e o GRUB carregam da mesma forma como se fosse apenas um kernel ... então seu propósito atual é um pouco misterioso. Os stubs de inicialização do EFI também podem ser carregados como kernels normais?

Bem, o fato é que não consigo encontrar nenhuma discussão sobre por que esse nome de arquivo foi escolhido e o que exatamente ele é. Então, esperamos que alguém aqui saiba o que é isso e como funciona.

EDITAR:

Info / MD5 de todos os kernels dos CDs do Ubuntu, Kubuntu, Xubuntu e Lubuntu:

DISTRO: lubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: kubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: xubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: ubuntu
vmlinuz.efi: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
1919b5acd184538ecb978f6361f98bf1  vmlinuz.efi

O do Ubuntu ISO é claramente diferente. Eu estou começando a pensar que deve ser um kernel de stub de inicialização EFI ... mas ainda não encontrei nada para confirmar ou negar isso.

    
por Chuck R 09.08.2013 / 12:58

1 resposta

5

O stub stub loader é um componente do kernel, não um programa separado. Quando o carregador stub EFI é incluído no kernel, esse arquivo de kernel parece um programa EFI normal para a EFI, mas ainda é um kernel normal que pode ser carregado pelos carregadores de inicialização usuais do Linux - GRUB, LILO, ELILO, SYSLINUX, etc. O stub EFI está disponível desde o kernel 3.3.0 e o AFAIK, todos os kernels do Ubuntu construídos desde então incluíram esse recurso.

Não existe uma lei que diga que os kernels com carregadores stub da EFI precisam ter nomes de arquivos que terminem em .efi . De fato, os kernels instalados no disco rígido não possuem a extensão de arquivo .efi ; isso parece ser exclusivo para o kernel no disco de instalação, pelo menos no Ubuntu. O shell EFI não executará um programa, a menos que tenha uma extensão .efi . Assim, dar ao kernel esse nome de arquivo fornece um meio de recuperação e teste para usuários avançados que, de outra forma, poderiam estar indisponíveis para eles - ou seja, lançar manualmente o kernel a partir de um shell EFI. Eu não posso ter certeza, mas eu suspeito que os desenvolvedores do Ubuntu estão agora nomeando seus kernels desta forma para fornecer este meio de backup de lançar o kernel, ou talvez apenas para significar que ele contém suporte stub EFI. OTOH, o kernel do disco de instalação do Ubuntu de 32 bits não possui a extensão .efi , mas inclui o suporte stub EFI. Minha suspeita é que os desenvolvedores do Ubuntu simplesmente não estão nomeando seus kernels consistentemente.

É possível iniciar um aplicativo EFI (como um kernel Linux com suporte stub EFI) de qualquer local no disco. O subdiretório "casper" não é um local onde os carregadores de boot normalmente residem, mas é possível iniciar os programas EFI de lá.

Qualquer fonte que você leia que diga que o kernel de 64 bits tem uma extensão .efi porque é um kernel de 64 bits errado. Na prática, a versão de 32 bits do Ubuntu tem um kernel que não possui essa extensão, então existe uma correlação no mundo do Ubuntu, mas não há nenhuma causa envolvida. No Linux em geral, uma extensão .efi não indica um kernel de 64 bits - existem muitos kernels de 64 bits que não possuem essa extensão e podem ser desejável nomear um kernel de 32 bits com essa extensão em um computador baseado em UEFI de 32 bits (embora o Ubuntu não o faça). Essa extensão de nome de arquivo simplesmente identifica um aplicativo EFI, que pode ser de 32 bits (x86 / IA-32), 64 bits (x86-64 / AMD64) ou alguma outra arquitetura (ARM ou Itanium).

    
por Rod Smith 09.08.2013 / 17:17