Como a EFI encontra os bootloaders?

3

Isso pode parecer uma questão bastante básica, mas estou tendo muito trabalho para encontrar uma resposta ...

Como a EFI encontra coisas para inicializar?

No esquema antigo do BIOS, se o MBR tiver um marcador especial, o conteúdo é carregado na RAM e executado. O que acontece a seguir depende do que esse código faz. Em suma, para tornar um SO inicializável, você precisa instalar o carregador de inicialização de sua escolha no MBR e, em seguida, fazer o que seu carregador de boot escolhido espera para configurá-lo. Normalmente, o BIOS tem algum menu para permitir que você configure a ordem que procura por um MBR inicializável, mas é isso.

Sob o EFI ... Eu literalmente não tenho ideia de como isso funciona. Tanto quanto eu posso dizer, não envolve blocos de inicialização, e envolve apenas a partição do sistema EFI. Mas não consigo encontrar nenhum detalhe além disso. Os arquivos nesta partição devem estar em uma determinada pasta ou nomeados de uma maneira específica? Porque meu laptop de teste está ignorando totalmente qualquer coisa que eu coloquei lá.

O Secure Boot adiciona uma segunda camada de diversão a isso. Para funcionar, um binário deve ser assinado. Mas não consigo descobrir se a assinatura está dentro do próprio arquivo ou se deve haver um arquivo de assinatura separado ao lado dele ...

    
por MathematicalOrchid 20.03.2014 / 13:30

2 respostas

5

Primeiro, o firmware procura as variáveis EFI Boot#### (por exemplo, Boot0000 , Boot0001 e assim por diante). Eles descrevem as entradas do menu de inicialização EFI e contêm a localização completa do executável correspondente. Por exemplo:

$ sudo efibootmgr -v
BootCurrent: 0000
Timeout: 2 seconds
BootOrder: 0000,0001,0006,0007
Boot0000* Linux Boot Manager    HD(1,800,32000,785c8ca2-bb16-48fd-917b-19d69543338f)File(\EFI\gummiboot\gummibootx64.efi)
Boot0001* EFI Shell HD(1,800,32000,785c8ca2-bb16-48fd-917b-19d69543338f)File(\shellx64.efi)
Boot0006  Hard Drive    BIOS(2,0,00)P0: ST9640320AS               .
Boot0007  CD/DVD Drive  BIOS(3,0,00)P1: SlimtypeDVD A  DS8A5SH    .

Isto descreve a localização de um disco rígido SATA; um UUID da partição GPT; e um caminho dentro dessa partição.

( Geralmente , todas as entradas de inicialização apontarão para a partição do sistema EFI (código de tipo EF para MBR e C12A7328-F81F-11D2-BA4B-00A0C93EC93B para GPT - mostrado como EF00 em gdisk ), mas isso não é necessário.

Se o firmware não tiver entradas de inicialização armazenadas ou se você estiver inicializando a partir de mídia removível, ele usará o local de fallback - ele procurará por todas as partições do sistema EFI (com o tipo de partição correspondente e sistema de arquivos FAT32) e dentro dessas partições, ele espera encontrar um executável EFI em \EFI\BOOT\BOOTX64.EFI . (Esse caminho é para sistemas Intel x86_64; outras arquiteturas usam nomes de arquivos diferentes no mesmo diretório).

EFI não tenta inicializar automaticamente qualquer arquivo *.EFI aleatório, mesmo que esteja na partição do sistema EFI.

Veja também:

por 20.03.2014 / 16:53
0

Por melhor que eu saiba, parece que você deve inicializar o EFI criando um ESP (uma partição MBR com o tipo de código 0xEF, formatado como uma variante do FAT) e copie um arquivo *.efi nele .

No meu teste, todo e qualquer arquivo é completamente ignorado , a menos que o nome do arquivo seja exatamente

/EFI/BOOT/bootx64.efi

Portanto, parece que esse é o nome mágico que você deve usar.

Neste ponto, não tenho idéia se isso é parte da especificação oficial da EFI, ou apenas uma peculiaridade da minha placa-mãe em particular. Estou postando esta informação aqui caso ajude alguém ...

Usando esse conhecimento, consegui copiar os arquivos rEFInd em um disco USB, renomear o executável principal e observar o lamento do laptop que o binário não está assinado. (O que não é.) Então agora ele vê que há algo potencialmente inicializável lá. Parece que se eu puder desativar o Secure Boot, o laptop inicializaria nesse ponto.

(Infelizmente, atualmente não consigo fazer o Shim funcionar - mas essa é uma pergunta diferente ...)

    
por 20.03.2014 / 16:12

Tags