systemd-boot (Português)

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.
Artigos relacionados
Processo de inicialização do Arch
Secure Boot
Unified Extensible Firmware Interface
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.
É 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
efivar
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.
/efi
ou
/boot
. 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
bootctl(1)
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
esp
/EFI/BOOT/BOOTX64.EFI
, 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
esp
/EFI/BOOT/BOOTX64.EFI
, e
systemd-boot
será definido como a aplicação EFI padrão.
Nota
Ao executar
bootctl install
,
systemd-boot
tentará localizar a ESP em
/efi
,
/boot
e
/ boot/efi
. Definir
esp
para um local diferente requer passar a opção
--esp-path=
esp
. (Veja
bootctl(1) § OPTIONS
para detalhes.)
Instalar
systemd-boot
sobrescreverá qualquer arquivo existente em
esp
/EFI/BOOT/BOOTX64.EFI
, por exemplo, a versão da Microsoft deste arquivo.
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
bc13c2ff-59e6-4262-a352-b275fd6f7172
[1]
. O tamanho da partição XBOOTLDR deve ser grande o suficiente para acomodar todos os kernels que você vai instalar.
Nota
systemd-boot
não faz verificação de tipo do sistema de arquivos para a ESP. Então, é possível usar qualquer sistema de arquivos que sua implementação UEFI possa ler.
UEFI pode pular o carregamento de outras partições que não são a ESP quando o modo "fast boot" está habilitado. Isto pode levar ao
systemd-boot
falhando em encontrar entradas na partição XBOOTLDR; neste caso, desabilite o modo "fast boot";
A partição XBOOTLDR deve estar no mesmo disco físico que a ESP para que o
systemd-boot
seja reconhecido.
Durante a instalação, monte a ESP em
/mnt/efi
e a partição XBOOTLDR em
/mnt/boot
.
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.
Nota
O gerenciador de boot EFI é um executável EFI e qualquer versão pode ser usada para inicializar o sistema (atualizações parciais não são válidas, considerando que pacman somente instala o instalador do
systemd-boot
, não o
systemd-boot
). No entanto, novas versões podem adicionar novas funcionalidades ou consertar bugs, então é provavelmente uma boa ideia atualizar o
systemd-boot
de qualquer maneira.
Atualização manual
Use
bootctl
para atualizar o
systemd-boot
:
# bootctl update
Nota
Como com
bootctl install
,
systemd-boot
tentará localizar a ESP em
/efi
,
/boot
e
/boot/efi
. Definir
esp
para um local diferente requer passar a opção
--esp-path=
esp
.
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
systemd-boot-pacman-hook
AUR
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
/etc/pacman.d/hooks/
:
/etc/pacman.d/hooks/95-systemd-boot.hook
[Trigger]
Type = Package
Operation = Upgrade
Target = systemd

[Action]
Description = Gracefully upgrading systemd-boot...
When = PostTransaction
Exec = /usr/bin/systemctl restart systemd-boot-update.service
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:
/etc/pacman.d/hooks/99-secureboot.hook
[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = linux
Target = systemd

[Action]
Description = Assinar o Kernel para Secure Boot
When = PostTransaction
Exec = /usr/bin/find /boot -type f ( -name vmlinuz-* -o -name systemd* ) -exec /usr/bin/sh -c 'if ! /usr/bin/sbverify --list {} 2>/dev/null | /usr/bin/grep -q "signature certificates"; then /usr/bin/sbsign
--key
arquivo-de-chave
--cert
arquivo-de-certificado
--output "$1" "$1"; fi' _ {} ;
Depends = sbsigntools
Depends = findutils
Depends = grep
Certifique-se de que os parâmetros
--key
arquivo-de-chave
--cert
arquivo-de-certificado
apontam para sua chave de assinatura e certificado. Para melhor compreensão deste hook, consulte
sbverify(1)
e
sbsign(1)
.
Configuração
Configuração do carregador
A configuração do carregador é armazenada no arquivo
esp
/loader/loader.conf
. Veja
loader.conf(5) § OPTIONS
para detalhes.
Um exemplo de configuração do carregador é mostrado abaixo:
esp
/loader/loader.conf
default  arch.conf
timeout  4
console-mode max
editor   no
Dica
systemd-boot não aceita tabulações como indentação, use espaços.
default
e
timeout
podem ser mudados no menu de inicialização e as mudanças vão ser salvas como variáveis EFI
LoaderEntryDefault
e
LoaderConfigTimeout
, sobrescrevendo estas opções.
bootctl set-default ""
e
bootctl set-timeout ""
pode ser usado para limpar as variáveis EFI sobrescrevendo as opções
default
e
timeout
, respectivamente.
Um arquivo de configuração básico está localizado em
/usr/share/systemd/bootctl/loader.conf
.
Adicionando carregadores
systemd-boot
buscará pelos itens do menu de inicialização em
esp
/loader/entries/*.conf
e adicionalmente em
boot
/loader/entries/*.conf
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:
title
– nome do sistema operacional.
necessário.
version
– versão do kernel, mostrado somente quando múltiplas entradas com o mesmo título existe. Opcional.
machine-id
– identificador da máquina em
/etc/machine-id
, mostrado somente quando múltiplas entradas com o mesmo título e versão existem. Opcional.
efi
– aplicação EFI a iniciar, relativo ao seu ESP (
esp
); ex.
/vmlinuz-linux
. Este parâmetro
ou
linux
(veja abaixo)
é necessário
.
options
– 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
root=
dev
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
systemd
está presente.
Para inicializar o Linux, você pode também usar
linux
ao invês de
efi
. Ou
initrd
em adição a
options
. A sintaxe é:
linux
ou
initrd
seguido por um caminho relativo dos arquivos correspondentes na ESP (p. ex.,
/vmlinuz-linux
); isto vai ser automaticamente traduzido em
efi
caminho
e
options initrd=
caminho
– esta sintaxe é somente suportada por conveniência e não há diferenças em função.
Nota
Se
options
está presente na entrada de boot e
Secure Boot
está desabilitado, o valor de
options
vai sobrescrever qualquer linha
.cmdline
inserida na imagem EFI que está especificada pelo
efi
ou
linux
(veja
Imagem de kernel unificada#Preparando uma imagem de kernel unificada
). Com Secure Boot, no entanto,
options
(e quaisquer modificações feitas a linha de comando do kernel na interface do gerenciador de boot) serão ignoradas, e somente as
.cmdline
serão usadas.
Um exemplo de arquivos de carregador iniciando o Arch a partir de um volume
rotulado
arch_os
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
esp
/loader/entries/arch-fallback.conf
title   Arch Linux (fallback initramfs)
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux-fallback.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
/EFI/Microsoft/Boot/Bootmgfw.efi
,
shell do UEFI
/shellx64.efi
e
EFI Default Loader
(carregador padrão EFI)
/EFI/BOOT/bootx64.efi
, como também arquivos do kernel especialmente preparados em
/EFI/Linux
. Quando detectado, as entradas correspondentes com títulos
auto-windows
,
auto-efi-shell
e
auto-efi-default
, 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
esp
/shellx64.efi
.
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.
Nota
O parâmetro do caminho do arquivo para a linha
efi
é relativo ao ponto de montagem da sua
esp
. Se você montou em
/boot
e seus binários EFI estão em
/boot/EFI/xx.efi
e
/boot/yy.efi
, então você deve especificar os parâmetros como
efi /EFI/xx.efi
e
efi /yy.efi
respectivamente.
esp
/loader/entries/fwupd.conf
title  Firmware updator
efi     /EFI/tools/fwupdx64.efi
esp
/loader/entries/gdisk.conf
title  GPT fdisk (gdisk)
efi     /EFI/tools/gdisk_x64.efi
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:
esp
/windows.nsh
HD0a66666a2:EFI\Microsoft\Boot\Bootmgfw.efi
Uma vez que criamos este arquivo, podemos continuar criando a entrada do carregador para executar o script:
esp
/loader/entries/windows.conf
title  Windows
efi     /shellx64.efi
options -nointerrupt -noconsolein -noconsoleout windows.nsh
É 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
Suspensão e hibernação
.
Editor de parâmetros do kernel protegido por senha
Alternativamente você pode instalar
systemd-boot-password
AUR
que suporta configuração básica da opção
password
. 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
systemd-boot(7) § KEY BINDINGS
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
--boot-loader-entry=help
.
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
esp
/EFI/Linux/
são originadas automaticamente pelo
systemd-boot
e não precisam de uma entrada em
esp
/loader/entries
. (Observe que as imagens de kernel unificadas devem ter uma extensão
.efi
para serem identificadas por
systemd-boot
.)
Dica
Arquivos em
esp
/loader/entries
serão inicializados primeiro se nenhum
default
estiver definido em
esp
/loader/loader.conf
. Remova essas entradas ou defina o padrão com o nome completo do arquivo, ou seja,
default archlinux-linux.efi
Grml na ESP
Nota
As seguintes instruções não são exclusivas para Grml. Com leves ajustes, instalar outro software (p. ex.,
SystemRescueCD
) é possível.
Dica
Um
PKGBUILD
está disponível:
grml-systemd-boot
AUR
.
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
initrd.img
, e a squashed image (Imagem compactada com sistema de arquivos somente leitura)
grml64-small.squashfs
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
mnt
/boot/grml64small/
, e a squashed image reside em
mnt
/live/grml64-small/
.
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
esp
/loader/entries
crie um arquivo
grml.conf
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
[
link inativo
2025-08-16 ⓘ]
.
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
Nota
Isto não é recomendado.
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
.
Nota
A interface do firmware das máquinas Dell da linha Latitude oferece tudo que você precisa para configurar a inicialização EFI mas o Shell EFI não poderá escrever para a ROM do computador.
Entrada manual usando efibootmgr
Se o comando
bootctl install
falhou, você pode criar uma entrada de boot EFI manualmente usando
efibootmgr
:
# efibootmgr --create --disk /dev/sd
X
--part
Y
--loader "\EFI\systemd\systemd-bootx64.efi" --label "Gerenciador de Boot do Linux" --unicode
Onde
/dev/sd
XY
é a
partição de sistema EFI
.
Nota
O caminho para a imagem EFI deve usar a barra invertida (
\
) como o separador
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
guid
para o id retornado pelo primeiro comando. Você pode também defini-lo como a entrada padrão usando
> bcdedit /default {
guid
}
Menu não aparece depois de atualização do Windows
Veja
UEFI#Windows changes boot order
.
Veja também
https://systemd.io/BOOT/
https://github.com/systemd/systemd/tree/master/src/boot/efi
[
link inativo
2024-12-15 ⓘ]
https://bbs.archlinux.org/viewtopic.php?id=254374
https://uapi-group.org/specifications/specs/boot_loader_specification/