Seu problema é causado por peculiaridades do Btrfs. Como ele suporta subvolumes, geralmente é necessário especificar opções incomuns para obter o rEFInd para verificar o subdiretório correto e fazer com que o kernel reconheça o local correto como raiz.
Para obter o rEFInd para verificar os kernels, você deve adicionar a seguinte linha a refind.conf
:
also_scan_dirs +,@/boot
Isso pressupõe que você não tenha uma partição /boot
separada. (Meu palpite é que seria +,@
se você tivesse essa partição, mas eu nunca tentei isso.) Se isso não funcionar, você poderia abrir um shell EFI e usá-lo para tentar encontrar seus kernels, então adicione qualquer que seja a localização deles de maneira semelhante. Isso pode não ser necessário no Arch porque o Arch e o Ubuntu podem configurar seus volumes do Btrfs de maneiras diferentes.
Com essa mudança, o rEFInd deve detectar seus kernels, mas a tentativa de inicializá-los falhará. Esse problema pode ser superado fazendo alterações em seu arquivo /boot/refind_linux.conf
. Em particular, você deve adicionar o seguinte às opções de inicialização:
rootflags=subvol=@
Lembre-se de adicionar ao normal root={whatever}
e qualquer outra opção do kernel que você usar.
Além disso, verifique se o driver EFI para o Btrfs está presente no subdiretório rEFInd drivers
ou drivers_x64
. Eu percebi que você mencionou que os drivers estão instalados, mas não ficou 100% claro que você quis dizer o driver EFI, então eu quero deixar isso explícito.