Detecção de UEFI (ESPs)

3

O gerenciador de inicialização da UEFI detecta o ESP dentro da GPT em cada dispositivo de armazenamento, com base nas variáveis de escopo global (configuração de inicialização) armazenadas na NVRAM?

Lendo a inicialização da UEFI da Wikipedia:

Unlike BIOS, UEFI does not rely on a boot sector, defining instead a boot manager as part of the UEFI specification. When a computer is powered on, the boot manager checks the boot configuration and, based on its settings, loads and executes the specified operating system loader or operating system kernel. The boot configuration is a set of global-scope variables stored in NVRAM, including the boot variables that indicate the paths to operating system loaders or kernels, which as a component class of UEFI applications are stored as files on the firmware-accessible EFI System partition (ESP).

O UEFI conta com um " gerenciador de inicialização " que verifica a configuração (conjunto de variáveis de escopo global armazenadas na NVRAM), essa configuração inclui variáveis de inicialização que indicam caminhos para Carregadores / kernels do SO, que são componentes de "aplicativos UEFI" (que são armazenados como arquivos em um ESP - também conhecido como GPT Partition (1) usando o formato de arquivo FAT (12 | 16 | 32) )

Olhando para a seção Gerenciador de inicialização da especificação UEFI :

Layout GPT:

GPTcontendoESP:

Figures found on page 117,118 of the specification

    
por Jordan Davis 22.09.2015 / 21:59

1 resposta

0

Os gerenciadores de inicialização da UEFI lêem sua configuração das variáveis EFI (armazenadas na NVRAM). Dependendo das entradas configuradas e da ordem de inicialização configurada, pode muito bem procurar um ESP em cada dispositivo de armazenamento.

Por exemplo, se você tiver - digamos - dois dispositivos de armazenamento e, para cada, uma entrada genérica como

PciRoot(0x0)/Pci(0x5,0x0)    # or
PciRoot(0x0)/Pci(0x1,0x1)/Ata(1,0,0)

e ambos são referenciados na ordem de inicialização, em seguida, o gerenciador de inicialização da UEFI investiga ambos para ESPs .

Além disso, a especificação UEFI não proíbe o firmware de adicionar automaticamente algumas entradas genéricas em cada inicialização para cada dispositivo de armazenamento recém-detectado. Assim, dependendo do seu sistema, você pode acabar detectando automaticamente um ESP em qualquer dispositivo de armazenamento detectado, por padrão.

A especificação UEFI também permite que o firmware detecte um ESP que não usa o GUID de parição do sistema EFI ( C12A7328-F81F-11D2-BA4B-00A0C93EC93B ). Em vez disso, ele pode apenas procurar uma partição GPT com um sistema de arquivos FAT e o arquivo esperado em EFI/BOOT (por exemplo, BOOTX64.EFI em um sistema x86 de 64 bits):

UEFI does not impose a restriction on the number or location of System Partitions that can exist on a system. System Partitions are discovered when required by UEFI firmware by examining the partition GUID and verifying that the contents of the partition conform to the FAT file system as defined in Section 13.3.1.1. Further, UEFI implementations may allow the use of conforming FAT partitions which do not use the ESP GUID. Partition creators may prevent UEFI firmware from examining and using a specific partition by setting bit 1 of the Partition Attributes (see 5.3.3) which will exclude the partition as a potential ESP.

(especificação UEFI versão 2.7 errata A, Seção 13.3.3 Número e localização das partições do sistema, página 516)

Por exemplo, o Supermicro e o firmware UEFI do Qemu fazem isso.

    
por 11.03.2018 / 10:57