Quando o kernel do Linux inicializa, ele recupera as tabelas ACPI do firmware do sistema. Após a inicialização do sistema, posso recuperar as tabelas da memória do kernel em execução com utilitários comoacpidump
Talvez essa questão não seja realmente específica do Linux, porque outros sistemas operacionais precisam seguir algum procedimento comparável, mas ainda estou interessado em como o kernel do Linux os recupera do firmware do sistema inicialmente. Eu examinei alguns códigos-fonte do kernel, mas não consigo obter uma resposta direta sobre como isso funciona.
Consulte: http://wiki.osdev.org/RSDP
A primeira etapa na recuperação das tabelas ACPI é encontrar o Root System Description Pointer, ou RSDP.
Em sistemas UEFI, é fornecido convenientemente dentro do EFI_SYSTEM_TABLE.
Em sistemas BIOS tradicionais, duas áreas de memória precisam ser pesquisadas. Primeiro, no endereço de modo real de 16 bits 0x40E, haverá um ponteiro de segmento de 2 bytes indicando onde a área de dados do BIOS estendida (EBDA) está localizada. O RSDP pode estar dentro do primeiro 1 KiB de EBDA, identificado pela string "RSD PTR", que com certeza está localizada em um limite de 16 bytes.
A outra área possível é a área principal do BIOS abaixo de 1 MiB, ou endereços de modo real 0x000E0000 a 0x000FFFFF.
Como todos os conteúdos de firmware (flash EEP)ROM, estes já são copiados para a RAM ("sombra") pelo próprio firmware por motivos de desempenho: o acesso ao armazenamento de firmware não volátil é geralmente bastante complicado e não muito rápido.