Arch Linux UEFI não inicializa

1

Minha placa-mãe é o modelo a seguir com as últimas novidades: link

Eu segui as instruções padrão do Arch Linux para configurar o EFI para inicializar usando o kernel como um EFISTUB. Isso é algo que funcionou bem para mim por mais de um ano no mesmo hardware, mas quando eu tentei mudar meus parâmetros do kernel eu parecia ter quebrado alguma coisa. Nenhuma das abordagens usuais funcionou.

Primeiro, tentei usar o efibootmgr com o seguinte comando:

efibootmgr -d /dev/sda -p 1 -b 0000 -g -c -l \vmlinuz-linux -L "Linux" -u "root=/dev/mapper/default-root rw initrd=initramfs-linux.img"

isto adicionou a seguinte entrada revelada usando efibootmgr -v

Boot0000* Linux HD(1,GPT,76dd039b-764a-4b07-81ed-61921dfdab62,0x800,0x800)/File(\vmlinuz-linux)r.o.o.t.=./.d.e.v./.m.a.p.p.e.r./.d.e.f.a.u.l.t.-.r.o.o.t. .r.w. .i.n.i.t.r.d.=./.i.n.i.t.r.a.m.f.s.-.l.i.n.u.x...i.m.g.

Quando tento inicializar essa entrada, recebo um erro no nível do BIOS, que nenhum dispositivo inicializável pode ser encontrado.

Em seguida, tentei usar a ferramenta bcfg no shell UEFI v2 do live CD.

Para isso eu tive que criar um arquivo de texto do kernel-opts em /boot , portanto eu executei o seguinte.

echo "boot=/dev/mapper/default-root rw initrd=initramfs-linux.img > /boot/kernel-opts

Eu então inicializei o UEFI Shell v2 do live CD e no shell eu executei o seguinte.

bcfg boot add 0 fs1:\vmlinuz-linux "Arch Linux"
bcfg boot -opt 0 fs1:\kernel-opts

Usando efibootmgr -v I novamente inspecionei a nova entrada.

Boot0000* Arch Linux    PciRoot(0x0)/Pci(0x4,0x0)/Pci(0x0,0x0)/Sata(0,65535,0)/HD(2,GPT,5cec78ae-39af-4434-9b57-9c08b8032147,0x1000,0x200000)/File(\vmlinuz-linux)root=/dev/mapper/default-root rw initrd=\initramfs-linux.img

Desta vez, quando a inicialização do dispositivo de inicialização é detectada, mas ocorre um pânico no kernel quando ele não consegue encontrar a raiz fs.

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.11.3-1-ARCH #1

Eu tinha concluído que o bcfg estava obtendo a primeira parte correta, a localização do kernel, mas os argumentos estavam incorretos, especificamente porque eles não estavam codificados no unicode. Eu tentei várias variações de argumentos para cada ferramenta, mas não consegui usar a ferramenta Ether para funcionar como está.

    
por Jeffrey Phillips Freeman 11.06.2017 / 19:38

1 resposta

0

Por fim, encontrei uma solução, mas parece um hack. Eu só queria postar aqui para os outros até que chegue uma solução melhor.

Convertendo o arquivo kernel-opts da questão em UTF-16 (unicode) e usando-o em vez disso, consegui resolver o problema. Eu também tive que soltar os dois primeiros bytes do arquivo convertido; Não tenho certeza porque iconv adiciona esses bytes. Eu usei o seguinte comando para converter para UTF-16.

iconv -f ASCII -t UTF-16 kernel-opts | dd bs=1 skip=2 > kernel-opts-unicode

Em seguida, apaguei as entradas de inicialização antigas, inicializei novamente no UEFI Shell v2 do Live CD e executei os seguintes comandos.

bcfg boot add 0 fs1:\vmlinuz-linux "Arch Linux"
bcfg boot -opt 0 fs1:\kernel-opts-unicode

Isso produziu a seguinte entrada de acordo com efibootmgr -v

Boot0000* Arch Linux    PciRoot(0x0)/Pci(0x4,0x0)/Pci(0x0,0x0)/Sata(1,65535,0)/HD(2,GPT,e5f7abe4-75bf-4c63-a76b-504c17eb5460,0x1000,0x200000)/File(\vmlinuz-linux)r.o.o.t.=./.d.e.v./.m.a.p.p.e.r./.d.e.f.a.u.l.t.-.r.o.o.t. .r.w. .i.n.i.t.r.d.=.\.i.n.i.t.r.a.m.f.s.-.l.i.n.u.x...i.m.g.

O sistema foi capaz de inicializar sem nenhum aviso ou erro.

    
por 11.06.2017 / 19:45