Como incluir novas entradas de boot no Systemd do Arch Linux?

Instalei o Arch seguindo o vídeo do canal DioLinux e foi muito massa conseguir isso, mas agora estou com um problema no Systemd-boot: meu pc tem 3 hds diferentes, um deles com windows 11. A instalação do Arch não localizou o windows e dá opção de entrada só para o linux. É possível conseguir adicionar a entrada para o windows configurando o Systemd? Na internet tem muito material sobre o grub mas pouco sobre o systemd.

Abri o disks e ele localiza as partições e o endereço, ou seja, o sistema é localizável, mas como fazer?

Sei que muita gente prefere fazer a mudança de sistem na BIOS, mas é um pc doméstico que meus filhos usam e não quero que eles fiquem fuçando na bios, por isso prefiro o dual boot.

Com todo o respeito ao Diolinux, mas acredito que esse tipo de video seja problemático justamente por isso: Os usuários iniciantes instalam e se frustam. É claro que os novatos têm que aprender a usar o linux de forma mais avançada, porém esses videos passam a imagem de que o Arch Linux é uma distro de entrada.

1 curtida

Acho que pode te ajudar

2 curtidas

O grub e o systemd-boot são inicializadores do sistema operacional (bootloaders). Já o systemd é o sistema de inicialização (init system), que engloba também outros serviços como gerenciador de log e montagem de unidades.

Provavelmente terá mais sucesso pesquisando exatamente por “systemd-boot” ou “bootclt”. O que você quer é boot chainloading (carregamento em cadeia), ou achar a função chainloader do systemd-boot.

Chainloading é o processo de um gerenciador de inicialização (como o systemd-boot) inicializar um segundo gerenciador de inicialização (como o grub ou o Windows Boot Loader).

3 curtidas

Sim, o vídeo tem uma chamada cata-clique. Mas é fato que o script de instalação facilita bastante e como alguém que esta há uns 6 meses no mint e vem testando e quebrando a cara com distros desde o Kurumin eu achei uma boa tentar aprofundar o aprendizado com a oportunidade aberta pelo vídeo. Entendo que pode ser bem frustrante tentar ajudar alguém que formulou o problema como eu fiz, mas faz parte.

1 curtida

Parece que sim! Vou testar aqui e marco a caixa de solução se tiver dado certo
Obrigado!

Lendo agora e procurando configuração de chainloading, no item 4.2.2 mostra a limitação do systemd-boot: ele não carrega inicializadores de outras partições ou discos.

É mostrado como fazer, mas através de um ‘armengue’ fazendo chainloading do shell uefi, que daí sim vai carregar em cadeia o inicializador de outro disco.

Nesse ponto o systemd-boot fica muito a desejar, uma vez que no grub é questão de duas linhas.

1 curtida

Segui o link que me passou e contei com uma ajuda do gemini. No fim das contas, quando faço a confirmação do arquivo de boot do windows dá tudo certo, mas quando vou rodar o diagnósitco do bootctl, ele retorna o seguinte: “type: Boot Loader Specification Type #1 (.conf)
title: Windows (not reported/new)
id: windows.conf
source: /
boot//loader/entries/windows.conf (on the EFI System Partition)
efi: /boot//EFI/Microsoft/Boot/bootmgfw.efi
(No such file or directory)”

Acha que a Bios pode estar travando o acesso? Pq quando faço o comando "sudo find /mnt/win_efi_check -name “bootmgfw.efi”, ele encontra oa rquivo exatamente neste endereço.

Ou seja, talvez valha a pena eu tentar trocá-lo pelo GRUB? Super obrigado!

Oi
Boa noite

Aonde está este arquivo

shellx64.efi

Você abriu o shell no menu systemd-boot e pegou o endereço certo?

Para colocar o Windows no menu.

Primeiro vamos ver o PARTUUID  da partição esp do Windows

	NAME <string>          nome do dispositivo
	FSTYPE <string>        tipo do sistema de arquivos
	SIZE <string|number>   size of the device, use <number> if --bytes is given
    PARTUUID <string>      UUID da partição

lsblk -o NAME,FSTYPE,SIZE,PARTUUID

exemplo

sda 931,5G
├─sda1 vfat 100M 41ebc589-902c-76ob-a36b-b362lb7ffb63

Tire um foto ou anote o ** PARTUUID 41ebc589-902c-76ob-a36b-b362lb7ffb63**

Instale o pacote edk2-shell.

Copie o Shell.efi para o /boot. Isso adicionará a entrada Shell no menu do boot.

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

E execute

bootctl update

Reinicie o pc e entre na opçào do menu shellx64.efi para executar o comando map.

Pesquise pelo PARTUUID 41ebc589-902c-76ob-a36b-b362lb7ffb63 e anote FS alias (ex: HD0a66666a2, HD0b, FS1, OU BLK7).

Exemplo correspondente HD0a66666a2

Crie a entrada
Substitua HD0a66666a2 com o seu FS alias da partição esp do Windows.

    A opção -nointerrupt  impede a interrupção do programa EFI de destino com Ctrl+C.
    As opções -nomap -noversion oculam a saudação de shell UEFI padrão
    Para que o shell da UEFI retorne automaticamente ao carregador de inicialização se o programa EFI de destino sair (por exemplo, devido a um erro), adicione a opção -exit.
    Você também pode adicionar a opção -noconsoleout se ainda houver saída desnecessária no shell UEFI.

esp/loader/entries/windows.conf

title Windows 11
efi /shellx64.efi
options -nointerrupt -nomap -noversion HD0a66666a2:EFI\Microsoft\Boot\Bootmgfw.efi

Exemplo:

o meu aqui é
FS0:EFI\Microsoft\Boot\Bootmgfw.efi

Acabou que removi o systemd-boot e instalei o Grub com a ajuda do Gemini, mas foi o caos, pq quando fui mudar a ordem das entradas pra deixar windows em primeiro, ele deu uma solução super complexa que resultou em um monte de erros. Mas depois de bater cabeça, refiz o GRUB e consegui deixar do jeito que queria. Agora estou apanhando para configurar impressora.. Realmente, a vida no Arch é dura…

Obrigado pela ajuda!!!

1 curtida