O BLFS não tem os pacotes essenciais para suportar a Inicialização Segura. Para configurar o processo de inicialização com GRUB e UEFI no BLFS, a Inicialização Segura precisa ser desligada a partir interface de configuração do firmware. Leia a documentação fornecida pelo(a) fabricante do seu sistema para descobrir como.
Habilite as seguintes opções na configuração do núcleo e recompile o núcleo se necessário:
Processor type and features ---> [*] EFI runtime service support [EFI] [*] EFI stub support [EFI_STUB] -*- Enable the block layer ---> [BLOCK] Partition Types ---> [ /*] Advanced partition selection [PARTITION_ADVANCED] [*] EFI GUID Partition support [EFI_PARTITION] File systems ---> DOS/FAT/EXFAT/NT Filesystems ---> <*/M> VFAT (Windows-95) fs support [VFAT_FS] Pseudo filesystems ---> <*/M> EFI Variable filesystem [EFIVAR_FS] -*- Native language support ---> [NLS] <*/M> Codepage 437 (United States, Canada) [NLS_CODEPAGE_437] <*/M> NLS ISO 8859-1 (Latin 1; Western European Languages) [NLS_ISO8859_1]
O significado das opções de configuração:
CONFIG_PARTITION_ADVANCED
            
                Se não estiver habilitado, CONFIG_EFI_PARTITION será
                habilitado automaticamente. Mas quando estiver habilitado,
                você precisa configurar CONFIG_EFI_PARTITION como
                habilitado também.
              
          Garanta que um disco de inicialização de emergência esteja pronto
          para “resgatar” o sistema no caso do sistema se
          tornar não inicializável. Para produzir um disco de inicialização
          de emergência com o GRUB para um sistema baseado em EFI, encontre
          uma unidade flash USB sobressalente e crie um sistema de arquivos
          vfat nela. Instale o dosfstools-4.2 primeiro, então, como o(a)
          usuário(a) root:
        
          
            O comando a seguir apagará todos os diretórios e arquivos na
            partição. Certifique-se de que sua unidade flash USB não contém
            dados que serão necessários e mude sdx1 para o nó de dispositivo
            correspondente à primeira partição da unidade flash USB. Seja
            cuidado(a) para não sobrescrever sua unidade rígida com um erro
            de digitação!
          
mkfs.vfat /dev/sdx1
          Ainda como o(a) usuário(a) root,
          use o utilitário fdisk para configurar a primeira
          partição da unidade flash USB para ser uma partição do “sistema EFI” (mude
          sdx para o nó de
          dispositivo correspondente à sua unidade flash USB):
        
fdisk /dev/sdxWelcome to fdisk (util-linux 2.39.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help):tPartition number (1-9, default 9):1Partition type or alias (type L to list all):uefiChanged type of partition 'Linux filesystem' to 'EFI System'. Command (m for help):wThe partition table has been altered. Syncing disks.
          Ainda como o(a) usuário(a) root,
          crie um ponto de montagem para a partição EFI na unidade flash USB
          e monte-o:
        
mount --mkdir -v -t vfat /dev/sdx1 -o codepage=437,iocharset=iso8859-1 \
      /mnt/rescue
        Instale o GRUB para EFI na partição:
grub-install --target=x86_64-efi --removable \
             --efi-directory=/mnt/rescue --boot-directory=/mnt/rescue
        Desmonte a partição:
umount /mnt/rescue
Agora a unidade flash USB pode ser usada como um disco de inicialização de emergência em qualquer plataforma UEFI x86-64. Para saber como selecionar essa unidade flash como o dispositivo de inicialização, leia o manual da tua placa-mãe ou laptop. Ele inicializará o sistema e mostrará o shell do GRUB. Em seguida, você pode digitar comandos para inicializar teu sistema operacional a partir da unidade rígida.
          Em sistemas baseados em EFI, os carregadores de inicialização são
          instalados em uma partição especial FAT32 chamada EFI System Partition (ESP). Se o seu
          sistema suportar EFI e uma versão recente de alguma distribuição
          Linux ou Windows estiver pré-instalada, [então] é provável que o
          ESP já tenha sido criada. Como o(a) usuário(a) root, liste todas as partições em sua unidade
          rígida (substitua sda pelo dispositivo
          correspondente à unidade rígida apropriada):
        
fdisk -l /dev/sda
          A coluna “Type” da ESP deveria ser EFI System.
        
          Se o sistema ou a unidade rígida for novo(a) ou essa for a primeira
          instalação de um Sistema Operacional inicializado por UEFI no
          sistema, a ESP possivelmente não exista. Nesse caso, instale
          dosfstools-4.2 primeiro. Em seguida, crie uma
          nova partição, produza um sistema de arquivos vfat nela e configure o tipo de partição como
          “EFI system”.
          Vejam-se as instruções para o dispositivo de inicialização de
          emergência acima como uma referência.
        
          Algumas (antigas) implementações UEFI possivelmente exijam que a ESP seja a primeira partição no disco.
          Agora, como o(a) usuário(a) root,
          crie o ponto de montagem para a ESP e monte-a (substitua
          sda1 pelo nó de
          dispositivo correspondente à ESP):
        
mount --mkdir -v -t vfat /dev/sda1 -o codepage=437,iocharset=iso8859-1 \
      /boot/efi
        
          Se você quiser montar a ESP automaticamente durante a inicialização
          do sistema, como o(a) usuário(a) root, adicione uma entrada para a ESP em
          /etc/fstab:
        
cat >> /etc/fstab << EOF
/dev/sda1 /boot/efi vfat codepage=437,iocharset=iso8859-1 0 1
EOF
      
          Em sistemas baseados em UEFI, o GRUB funciona instalando um
          aplicativo EFI (um tipo especial de executável) na ESP. O firmware
          EFI pesquisará carregadores de inicialização em aplicativos EFI a
          partir de entradas de inicialização registradas em variáveis EFI e,
          adicionalmente, um caminho rigidamente codificado, EFI/BOOT/BOOTX64.EFI. Normalmente, um carregador
          de inicialização deveria ser instalado em um caminho personalizado
          e o caminho deveria ser registrado nas variáveis EFI. O uso do
          caminho codificado rigidamente deveria ser evitado, se possível. No
          entanto, em alguns casos, temos que usar o caminho codificado
          rigidamente:
        
O sistema não foi inicializado com EFI ainda, tornando as variáveis EFI inacessíveis.
O firmware EFI é de 64 bits, mas o sistema LFS é de 32 bits, tornando as variáveis EFI inacessíveis porque o núcleo não consegue invocar serviços de tempo de execução EFI com um comprimento diferente de endereço virtual.
O LFS é construído para um Live USB, de forma que não podemos confiar nas variáveis EFI, as quais são armazenadas em NVRAM ou em EEPROM na máquina local.
Você não consegue ou não quer instalar o efibootmgr para manipular entradas de inicialização em variáveis EFI.
Nesses casos, siga estas instruções para instalar o aplicativo EFI do GRUB no caminho codificado rigidamente e faça uma configuração mínima de inicialização. Caso contrário, é melhor pular à frente e definir a configuração de inicialização normalmente.
          Para instalar o GRUB com o aplicativo EFI no caminho rigidamente
          codificado EFI/BOOT/BOOTX64.EFI,
          primeiro certifique-se de que a partição de inicialização esteja
          montada em /boot e de que a ESP
          esteja montada em /boot/efi. Então,
          como o(a) usuário(a) root, execute
          o comando:
        
          
            Este comando sobrescreverá /boot/efi/EFI/BOOT/BOOTX64.EFI. Ele
            possivelmente quebre um carregador de inicialização já instalado
            lá. Produza uma cópia de segurança dele se não tiver certeza.
          
grub-install --target=x86_64-efi --removable
          Esse comando instalará o aplicativo EFI do GRUB no caminho
          rigidamente codificado /boot/efi/EFI/BOOT/BOOTX64.EFI, de forma que o
          firmware EFI consiga achá-lo e carregá-lo. Os arquivos restantes do
          GRUB são instalados no diretório /boot/grub e serão carregados pelo BOOTX64.EFI durante a inicialização do sistema.
        
          O firmware EFI geralmente prefere os aplicativos EFI com um caminho armazenado em variáveis EFI ao aplicativo EFI no caminho codificado rigidamente. Portanto, você possivelmente precise invocar o menu de seleção de inicialização ou a interface de configuração de firmware para selecionar manualmente o GRUB recém-instalado na próxima inicialização. Leia-se o manual da sua placa-mãe ou laptop para aprender como.
Se você tiver seguido as instruções nesta seção e configurou uma configuração mínima de inicialização, agora pule à frente para “Criando o Arquivo de Configuração do GRUB”.
          A instalação do GRUB em uma plataforma UEFI exige que o sistema de
          arquivos de Variáveis EFI, efivarfs, esteja montado. Como o(a) usuário(a)
          root, monte-o se já não estiver
          montado:
        
mountpoint /sys/firmware/efi/efivars || mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars
          
            Se o sistema for inicializado com UEFI e systemd, [então] o
            efivarfs será montado
            automaticamente. No entanto, no ambiente chroot do LFS ele ainda
            precisa ser montado manualmente.
          
          
            Se o sistema não for inicializado com UEFI, [então] o diretório
            /sys/firmware/efi estará ausente.
            Nesse caso, você deveria inicializar o sistema no modo UEFI com o
            disco de inicialização de emergência ou usando uma configuração
            mínima de inicialização criada como acima, então montar o
            efivarfs e continuar.
          
          Em sistemas baseados em UEFI, o GRUB funciona instalando um
          aplicativo EFI (um tipo especial de executável) em /boot/efi/EFI/[id]/grubx64.efi, onde /boot/efi é o ponto de montagem da ESP e
          [id] é substituído por um
          identificador especificado na linha de comando do grub-install. O GRUB criará uma
          entrada nas variáveis EFI contendo o caminho EFI/[id]/grubx64.efi, de forma que o firmware EFI
          consiga encontrar o grubx64.efi e
          carregá-lo.
        
          O grubx64.efi é muito leve (136 KB
          com o GRUB-2.06), de forma que não usará muito espaço na ESP. Um
          tamanho típico da ESP é de 100 MB (para o gerenciador de
          inicialização do Windows, que usa cerca de 50 MB na ESP). Assim que
          o grubx64.efi tenha sido carregado
          pelo firmware, ele carregará os módulos do GRUB a partir da
          partição de inicialização. O local padrão é /boot/grub.
        
          Como o(a) usuário(a) root, instale
          os arquivos do GRUB em /boot/efi/EFI/LFS/grubx64.efi e em /boot/grub. Em seguida, configure a entrada de
          inicialização nas variáveis EFI:
        
grub-install --bootloader-id=LFS --recheck
Se a instalação for bem-sucedida, [então a saída gerada deveria ser:
Installing for x86_64-efi platform.
Installation finished. No error reported.
        Emita o comando efibootmgr | cut -f 1 para verificar novamente a configuração de inicialização EFI. Um exemplo da saída gerada é:
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0005,0000,0002,0001,0003,0004
Boot0000* ARCH
Boot0001* UEFI:CD/DVD Drive
Boot0002* Windows Boot Manager
Boot0003* UEFI:Removable Device
Boot0004* UEFI:Network Device
Boot0005* LFS
        
          Observe que 0005 é o primeiro no
          BootOrder e Boot0005 é LFS. Isso
          significa que, na próxima inicialização, a versão do GRUB instalada
          pelo LFS será usada para inicializar o sistema.
        
          Gere o /boot/grub/grub.cfg para
          configurar o menu de inicialização do GRUB:
        
cat > /boot/grub/grub.cfg << EOF
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5
insmod part_gpt
insmod ext2
set root=(hd0,2)
insmod efi_gop
insmod efi_uga
if loadfont /boot/grub/fonts/unicode.pf2; then
  terminal_output gfxterm
fi
menuentry "GNU/Linux, Linux 6.16.1-lfs-12.4" {
  linux   /boot/vmlinuz-6.16.1-lfs-12.4 root=/dev/sda2 ro
}
menuentry "Firmware Setup" {
  fwsetup
}
EOF
        
          Consulte-se o livro
          LFS para o conhecimento básico acerca do arquivo grub.cfg. (hd0,2),
          sda2 e 6.16.1-lfs-12.4 precisam corresponderem à tua
          configuração.
        
          As diretivas insmod
          efi_gop e insmod
          efi_uga carregam dois módulos para suporte de vídeo
          baseado em EFI. Na maioria dos sistemas, o módulo efi_gop é suficiente. O módulo efi_uga é útil somente para sistemas legados, mas
          é inofensivo carregá-lo de qualquer maneira. O suporte de vídeo é
          necessário para a diretiva terminal_output gfxterm realmente
          funcionar.
        
          A diretiva terminal_output
          gfxterm muda a resolução da tela do menu do GRUB
          para corresponder ao teu dispositivo de exibição. Isso quebrará a
          renderização se o arquivo de dados da fonte unicode.pf2 não estiver carregado, de forma que
          ele é protegido por uma diretiva if.
        
          
            Da perspectiva do GRUB, os arquivos são relativos às partições
            usadas. Se você usou uma partição /boot separada, [então] remova
            /boot dos caminhos acima (para o núcleo e para unicode.pf2). Você também precisará mudar a
            linha "set root" para apontar para a partição de inicialização.
          
          A entrada Firmware Setup pode ser
          usada para entrar na interface de configuração fornecida pelo
          firmware (às vezes chamada de “Configuração do BIOS”).
        
          Adicione uma entrada de menu para o Windows no grub.cfg:
        
cat >> /boot/grub/grub.cfg << EOF
# Início da adição do Windows
menuentry "Windows 11" {
  insmod fat
  insmod chain
  set root=(hd0,1)
  chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
EOF
        
          (hd0,1) deveria ser substituído pelo
          nome designado pelo GRUB para a ESP. A diretiva chainloader pode ser usada para dizer ao GRUB para
          executar outro executável EFI, nesse caso o Windows Boot Manager.
          Você pode colocar mais ferramentas utilizáveis no formato de
          executável EFI (por exemplo, um shell EFI) na ESP e, também, criar
          entradas do GRUB para elas.