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).