O objetivo é instalar o Debian usando o debootstrap. Primeiro quero instalar todo o sistema em um pequeno disco flash de 32GB.
E os conceitos de tabelas de partição GPT e GRUB são bastante claros: existe uma tabela de partições. Cada partição possui um ID exclusivo. Mais adiante em cada partição, um sistema de arquivos é criado. O próprio FileSystem é a forma de armazenar arquivos, diário, diretórios e assim por diante, é um DataSturture.
OK. Claro.
Agora existe um ESP. Uma partição onde o BOOTLoader está armazenado. E deve ser FAT32 não é?
Agora preciso obter o kernel, ramdisk. Crie um ESP em um FlashStick. E instale o GRUB para que fique no ESP e selecione o Kernel e o Ramdisk apropriados. E aqui estou preso.
- Como criar ESP? É uma partição simples formatada posteriormente para FAT32?
- Como informar ao GRUB onde ser instalado? Como configurá-lo? Eu sei
grub-mkconfig
- e sei que é necessário configurar o Linux e o initrd, mas ainda é um pouco confuso.
Então aqui começa um problema.
Como conectar o ESP ao restante do FileSystem? Como o kernel sabe onde procurar todos os arquivos e configurações?
Esse salto de iniciar o GRUB e iniciar o kernel passando parâmetros e montando o ESP no FileSystm parece estranho e estranho.
Preciso de ajuda.
Obrigado.
Sim, é uma partição simples, formatada para FAT32 (versões UEFI mais recentes também podem aceitar outras formas de FAT) e o tipo de partição UUID de uma tabela de partição estilo GPT definida para indicar que é uma partição de sistema EFI (ou ESP, para abreviar) . Se você estiver inicializando no estilo UEFI a partir de um disco particionado por MBR, o código do tipo de partição do ESP deverá ser definido como
0xef
em vez de um código de tipo de partição FAT32 normal.Para instalar o GRUB, o
grub-install
comando é usado. Toma como parâmetro o nome do dispositivo do disco ou partição onde o GRUB deve ser instalado.Se houver apenas um ESP no disco (como geralmente é recomendado), você pode simplesmente especificar o dispositivo de todo o disco, por exemplo ,
/dev/sda
ou/dev/nvme0n1
, assim como faria ao instalar um GRUB estilo BIOS legado. Ele encontrará automaticamente o ESP e escreverágrubx64.efi
nele, além de registrá-lo nas variáveis de firmware UEFI NVRAM (que você pode visualizar comefibootmgr -v
).Se estiver instalando em um disco flash removível, você também deverá especificar a
--removable
opçãogrub-install
. Se o disco não for removível como tal, mas você planeja movê-lo ou cloná-lo para outro sistema, provavelmente deverá usar a--force-extra-removable
opção.Uma vez instalado o GRUB
grub-mkconfig
- ou um wrapper específico do Debianupdate-grub
para ele - pode ser usado para criar um arquivo de configuração do GRUB.No Debian, o ponto de montagem padrão para o ESP é
/boot/efi
. Outras distribuições podem fazer as coisas de maneira diferente.Quando o sistema está inicializando no estilo UEFI, o firmware primeiro verificará suas variáveis de inicialização NVRAM para obter uma ordem de inicialização. Uma variável de inicialização no estilo UEFI especificará um dispositivo, a partição ESP nele (identificada principalmente pelo PARTUUID exclusivo do ESP) e um arquivo de inicialização para usar nesse ESP. No caso de uma distribuição Debian instalada permanentemente, o nome do caminho do arquivo de inicialização será (estilo Windows, como o firmware normalmente o representa)
\EFI\debian\grubx64.efi
, ou\EFI\debian\shimx64.efi
se uma compatibilidade de inicialização segura também for desejada e os pacotesshim-signed
egrub-efi-amd64-signed
tiverem sido instalados.Se não houver nenhuma variável de inicialização (por exemplo, porque uma mídia removível foi selecionada para inicialização), um sistema UEFI x86 de 64 bits procurará um nome de caminho (no estilo Windows)
\EFI\BOOT\BOOTx64.efi
. Se o GRUB foi instalado usando as opções--removable
ou--force-extra-removable
, na verdade será uma cópia dogrubx64.efi
.Portanto, o firmware iniciará o GRUB e o GRUB fará a leitura
\EFI\debian\grub.cfg
do ESP. Normalmente conterá apenas umsearch
comando que dirá ao GRUB para encontrar qualquer partição que contenha/boot/grub
usando seu UUID e, em seguida, os comandos necessários para ler/boot/grub/grub.cfg
a partir daí. (Dependendo de como o sistema está configurado, isso pode se referir ao sistema de arquivos raiz ou a um/boot
sistema de arquivos separado - de qualquer forma, tudo bem.)Depois de ler a configuração real do
/boot/grub/grub.cfg
, o GRUB saberá onde encontrar os arquivos do kernel e initramfs e quais itens de menu apresentar ao usuário. O GRUB irá então carregar o kernel selecionado e os arquivos initramfs, passar as opções de inicialização do kernel especificadas para a linha de comando do kernel e então iniciar o kernel. Neste ponto, os trabalhos de inicialização do GRUB, do ESP e do/boot
diretório estão todos concluídos - deste ponto em diante, a inicialização pode prosseguir sem eles.O kernel encontrará o sistema de arquivos raiz com base na
root=
opção de inicialização do kernel e em quaisquer scripts dentro do initramfs, e assim que o sistema de arquivos raiz for localizado, verificado (se necessário) e montado, o processo de inicialização será capaz de acessar o real/etc
e prosseguir de acordo com as informações ali encontradas.No momento da inicialização, o kernel nunca precisará acessar nem
/boot
o ESP - quando o kernel for inicializado, o bootloader e o firmware já terão lido tudo o que precisam a partir daí. O ESP é montado/boot/efi
apenas para permitir atualizações fáceis do bootloader e sua configuração. Se você planeja nunca fazer isso (por exemplo, em um sistema de dispositivo incorporado que receberá atualizações por meio de uma recriação total da imagem), poderá deixar o ESP completamente desmontado.