O código de modo real não é usado quando o mecanismo EFI stub é usado. O firmware (executado a partir da ROM flash na placa-mãe quando a máquina é inicializada) muda o processador para o modo protegido antes de carregar a imagem do kernel. O cabeçalho da imagem do kernel é construído para se parecer com um executável PE conforme exigido pela especificação UEFI. Para obter mais informações, consulte este artigo da Intel .
Editar : adicionou algumas informações exigidas no comentário abaixo. arch/x86/boot/header.S
contém as definições que fazem o arquivo parecer um binário PE quando compilado com CONFIG_EFI_STUB
. O firmware chama o ponto de entrada colocado no cabeçalho; o ponto de entrada é efi_pe_entry
in arch/x86/boot/compressed/head_64.S
. Essa rotina chama make_boot_params
e efi_main
em arch/x86/boot/compressed/eboot.c
. O primeiro constrói uma estrutura boot_params
e também carrega um initramfs se especificado na linha de comando. A linha de comando do kernel também é tratada de maneira diferente: o UEFI cuida disso também, mas como o UEFI usa cadeias codificadas UCS-2 (um subconjunto do Unicode), elas são convertidas em ASCII. Tanto header.S
quanto head_64.S
contêm muito código comum entre o stub EFI e o modo tradicional de inicialização.
A UEFI pode um dia tornar possível a remoção do Real Mode em processadores x86 para sempre. É usado apenas para inicializar sistemas operacionais modernos.