systemd-boot (Português)

systemd-boot, antigamente chamado de gummiboot (Alemão para: "bote de borracha"), é um simples gerenciador de boot UEFI que executa imagens EFI configuradas. A entrada padrão é selecionada por um padrão (glob) definido ou um menu navegável na tela por meio das setas. Vêm com o systemd, que é instalado em um sistema Arch por padrão.

Status de tradução: Esse artigo é uma tradução de Systemd-boot. Data da última tradução: 2022-11-15. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

É simples de configurar mas pode somente iniciar executáveis EFI como o EFISTUB do kernel Linux, shell do UEFI, GRUB ou o gerenciador de boot do Windows.

Instalação

Instalando o gerenciador de boot EFI

Para instalar o gerenciador de boot EFI systemd-boot, primeiro tenha certeza que o sistema inicializou no modo UEFI e que as variáveis UEFI são acessíveis. Isto pode ser verificado ao executar o comando efivar --list ou, se não está instalado, ao executar ls /sys/firmware/efi/efivars (se o diretório existe, o sistema foi inicializado no modo UEFI).

Nesta página, esp será usado para indicar o ponto de montagem ESP, ex. ou . Isto assume que você fez um chroot no ponto de montagem do seu sistema.

Com a partição de sistema EFI (ESP) montada em esp, use para instalar systemd-boot na ESP:

# bootctl install

on a x64 architecture system /usr/lib/systemd/boot/efi/systemd-bootx64.efi will be copied to esp/EFI/systemd/systemd-bootx64.efi and , and systemd-boot will be set as the default EFI application.

Isto vai copiar o gerenciador de boot systemd-boot para a ESP: em um sistema com arquitetura x64 /usr/lib/systemd/boot/efi/systemd-bootx64.efi será copiado para esp/EFI/systemd/systemd-bootx64.efi and , e systemd-boot será definido como a aplicação EFI padrão.

Para concluir a instalação, configure o systemd-boot.

Instalação usando XBOOTLDR

Uma partição /boot separada do tipo "Linux extended boot" (XBOOTLDR) pode ser criada para manter o kernel e initramfs separados da ESP. Isso é particularmente útil para fazer dual boot com Windows com uma ESP existente que é muito pequena.

Prepare uma ESP como de costume e crie outra partição para XBOOTLDR na mesma unidade física. A partição XBOOTLDR deve ter um GUID de tipo de partição de . O tamanho da partição XBOOTLDR deve ser grande o suficiente para acomodar todos os kernels que você vai instalar.

Durante a instalação, monte a ESP em e a partição XBOOTLDR em .

Uma vez no ambiente chroot, use o comando:

# bootctl --esp-path=/efi --boot-path=/boot install

Para concluir a instalação, configure o systemd-boot.

Atualizando o gerenciador de boot EFI

Toda vez que tiver uma nova versão do systemd-boot, o gerenciador de boot EFI pode ser opcionalmente reinstalado pelo usuário. Isto pode ser feito manualmente ou automaticamente. As duas abordagens são descritas a seguir.

Atualização manual

Use bootctl para atualizar o systemd-boot:

# bootctl update

Atualização automática

Para atualizar o systemd-boot automaticamente, use um serviço do systemd ou um hook do pacman. Os dois métodos são descritos abaixo.

Serviço do systemd

A partir da versão 250, systemd vem com systemd-boot-update.service. Habilitar este serviço atualizará o bootloader na próxima inicialização.

Atenção: Se você tiver Secure Boot ativado, você precisa assinar seu bootloader após a atualização. Veja #hook do pacman abaixo para um exemplo de como fazer isso.
hook do pacman

O pacote adiciona um hook do pacman que é executado toda vez que o systemd é atualizado.

Em vez de instalar systemd-boot-pacman-hook, você pode preferir colocar manualmente o seguinte arquivo em :

Se você tem Secure Boot habilitado, você pode querer adicionar um hook do pacman para automaticamente reassinar o kernel e o bootloader a cada atualização dos respectivos pacotes:

Certifique-se de que os parâmetros apontam para sua chave de assinatura e certificado. Para melhor compreensão deste hook, consulte e .

Configuração

Configuração do carregador

A configuração do carregador é armazenada no arquivo . Veja loader.conf(5) §OPTIONS para detalhes.

Um exemplo de configuração do carregador é mostrado abaixo:

Adicionando carregadores

systemd-boot buscará pelos itens do menu de inicialização em e adicionalmente em se usar XBOOTLDR. Observe que as entradas em esp só podem usar arquivos (por exemplo, kernels, initramfs, imagens, etc.) dentro de esp. Da mesma forma, entradas em boot só podem usar arquivos em boot.

As opções possíveis são:

  • – nome do sistema operacional. necessário.
  • – versão do kernel, mostrado somente quando múltiplas entradas com o mesmo título existe. Opcional.
  • – identificador da máquina em , mostrado somente quando múltiplas entradas com o mesmo título e versão existem. Opcional.
  • – aplicação EFI a iniciar, relativo ao seu ESP (esp); ex. /vmlinuz-linux. Este parâmetro ou (veja abaixo) é necessário.
  • – opções da linha de comando separadas por vírgula para passar para o programa EFI ou parâmetros do kernel. Opcional, mas você precisará no mínimo se inicializar o Linux. Este parâmetro pode ser omitido se a partição raiz é atribuída ao tipo Root Partition GUID correto como definido na Discoverable Partitions Specification e se o hook do mkinitcpio do está presente.

Para inicializar o Linux, você pode também usar ao invês de . Ou initrd em adição a . A sintaxe é:

  • ou initrd seguido por um caminho relativo dos arquivos correspondentes na ESP (p. ex., /vmlinuz-linux); isto vai ser automaticamente traduzido em e – esta sintaxe é somente suportada por conveniência e não há diferenças em função.

Um exemplo de arquivos de carregador iniciando o Arch a partir de um volume rotulado e carregando o microcódigo da CPU da Intel é:

''esp''/loader/entries/arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options root="LABEL=''arch_os''" rw

systemd-boot vai automaticamente verificar no tempo de inicialização pelo Gerenciador de Boot do Windows na localização , shell do UEFI e EFI Default Loader (carregador padrão EFI) , como também arquivos do kernel especialmente preparados em . Quando detectado, as entradas correspondentes com títulos , e , respectivamente, serão geradas. Estas entradas não precisam de configuração manual. No entanto, outras aplicações EFI não são detectadas automaticamente (diferente do rEFInd), então para inicializar o kernel Linux, entradas de boot devem ser criadas manualmente.

Dica:
  • As entradas de boot disponíveis que foram configuradas podem ser listadas com o comando bootctl list.
  • Um exemplo de arquivo de entrada está localizado em /usr/share/systemd/bootctl/arch.conf.
  • Os parâmetros do kernel para cenários como LVM, LUKS ou dm-crypt pode ser encontrado nas páginas relevantes.

Shells EFI ou outras aplicações EFI

No caso você ter instalado shells EFI com o pacote edk2-shell, systemd-boot vai detectar automaticamente e cirar uma nova entrada se o arquivo EFI for colocado em . Para fazer isso e para exemplo de comando após instalar o pacote seria:

# cp /usr/share/edk2-shell/x64/Shell.efi /boot/shellx64.efi

Por outro lado, caso você tenha instalado outros aplicativos EFI na ESP, você pode usar os seguintes trechos.

Inicializar a partir de outro disco

systemd-boot não pode iniciar binários de partições que não sejam a partição ESP ou XBOOTLDR, mas pode executar um script externo para fazê-lo.

Primeiro precisamos instalar o edk2-shell (será o interpretador a ser usado) e usando o shell EFI (como explicado acima) podemos usar o comando map para anotar o FS alias (ex: HD0a66666a2) e o caminho completo do arquivo EFI de destino (ex: EFI\Microsoft\Boot\Bootmgfw.efi).

Em seguida, usando o comando exit, podemos inicializar novamente no Linux, onde podemos criar a nova entrada. Para isso precisamos primeiro criar na raiz do ponto de montagem esp um nome de arquivo .nsh com o alias FS, dois pontos e o caminho EFI, aqui um exemplo:

Uma vez que criamos este arquivo, podemos continuar criando a entrada do carregador para executar o script:

É importante que o caminho efi corresponda onde o edk2-shell foi copiado na partição esp, e o último argumento das opções corresponda ao nome do arquivo .nsh na raiz da partição esp. Observe também que o arquivo EFI edk2-shell pode ser movido para evitar a criação automática de entrada de systemd-boot.

Inicializando para a configuração de Firmware EFI

systemd-boot adicionará automaticamente uma entrada para inicializar na configuração do firmware UEFI se o firmware do seu dispositivo suportar a reinicialização na configuração do sistema operacional.

Suporte a hibernação

Veja Suspend and hibernate.

Editor de parâmetros do kernel protegido por senha

Alternativamente você pode instalar que suporta configuração básica da opção . Use sbpctl generate para gerar um valor para esta opção.

Instale systemd-boot-password com o seguinte comando:

# sbpctl install esp

Com o editor habilitado, vai ser solicitado sua senha antes que você possa editar os parâmetros do kernel.

Dicas e truques

Teclas dentro do menu de inicialização

Veja para as associações de teclas disponíveis dentro do menu de inicialização.

Escolhendo a próxima inicialização

O gerenciador de boot é integrado com o comando systemctl, permitindo escolher que opção você quer inicializar depois de reiniciar. Por exemplo, suponha que você tenha compilado um kernel customizado e criou um arquivo de entrada esp/loader/entries/arch-custom.conf para inicializar ele, você pode executar

$ systemctl reboot --boot-loader-entry=arch-custom.conf

e seu sistema irá reiniciar nesta entrada mantendo a opção padrão intacta para inicializações subsequentes. Para ver uma lista de entradas possíveis use a opção .

Se você quer inicializar no firmware da sua placa-mãe diretamente, você pode usar esse comando:

$ systemctl reboot --firmware-setup

Imagens de kernel unificadas

Imagens de kernel unificadas em são originadas automaticamente pelo systemd-boot e não precisam de uma entrada em . (Observe que as imagens de kernel unificadas devem ter uma extensão para serem identificadas por systemd-boot.)

Grml na ESP

Grml é um pequeno sistema live com uma coleção de software para administração e recuperação do sistema.

Para instalar Grml na ESP, precisamos somente copiar o kernel vmlinuz, o initramfs , e a squashed image (Imagem compactada com sistema de arquivos somente leitura) do arquivo iso para a ESP. Para fazer isso, primeiro baixe a grml64-small.iso e monte o arquivo (o ponto de montagem desse exemplo é mnt); o kernel e initramfs estão localizados em , e a squashed image reside em .

Depois, crie um diretório para Grml na sua ESP,

# mkdir -p esp/grml

e copie os arquivos mencionados acima para lá:

# cp mnt/boot/grml64small/vmlinuz esp/grml
# cp mnt/boot/grml64small/initrd.img esp/grml
# cp mnt/live/grml64-small/grml64-small.squashfs esp/grml

no último passo, crie uma entrada para o carregador do systemd-boot: em crie um arquivo com o seguinte conteúdo:

''esp''/loader/entries/grml.conf
title   Grml Live Linux
linux   /grml/vmlinuz
initrd  /grml/initrd.img
options apm=power-off boot=live live-media-path=/grml/ nomce net.ifnames=0

Para uma visão geral das opções de boot disponíveis, consulte cheatcode for Grml.

systemd-boot em sistemas BIOS

Se você precisa de um gerenciador de boot para sistemas BIOS que segue a Boot Loader Specification, o systemd-boot pode funcionar. O gerenciador de boot Clover suporta inicializar de sistemas BIOS e oferece um ambiente EFI simulado.

Resolução de problemas

Instalando depois de inicializar no modo BIOS

Se inicializou no modo BIOS, você ainda pode instalar o systemd-boot, no entanto este processo precisa que você fale ao firmware para lançar o arquivo EFI do systemd-boot na inicialização, normalmente por meio de duas maneiras:

  • você tem um Shell EFI funcionando em algum outro lugar.
  • sua interface de firmware oferece uma maneira de apropriadamente definir o arquivo EFI que precisa ser carregado na inicialização.

Se você pode fazer isto, a instalação é mais fácil: vai para seu Shell EFI ou a interface de configuração do firmware e mude o arquivo EFI padrão da sua máquina para esp/EFI/systemd/systemd-bootx64.efi.

Entrada manual usando efibootmgr

Se o comando falhou, você pode criar uma entrada de boot EFI manualmente usando efibootmgr:

# efibootmgr --create --disk /dev/sdX --part Y --loader "\EFI\systemd\systemd-bootx64.efi" --label "Gerenciador de Boot do Linux" --unicode

Onde é a partição de sistema EFI.

Entrada manual usando bcdedit do Windows

Se por alguma razão você precisa criar uma entrada de boot EFI pelo Windows, você pode usar os seguintes comandos em um prompt de administrador:

> bcdedit /copy {bootmgr} /d "Gerenciador de Boot do Linux"
> bcdedit /set {guid} path \EFI\systemd\systemd-bootx64.efi

Mude para o id retornado pelo primeiro comando. Você pode também defini-lo como a entrada padrão usando

> bcdedit /default {guid}

Veja UEFI#Windows changes boot order.

Veja também

gollark: ???
gollark: ++magic py bot.get_guild(733813103891972130).get_channel(826924583466172453)
gollark: I can't see anything in the docs about them either...
gollark: Hmm.
gollark: The commit log shows nothing relevant.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.