Estou executando o Ubuntu 18.04 no ZFS 0.8.4 e estou brincando com a criptografia. Eu gostaria de ter uma entrada de menu no grub que me permitisse inicializar na raiz criptografada.
Configuração do sistema
Uma marca de seleção indica que há uma entrada de menu correspondente no grub.
aquarium/ds1/u18
✓
contém meu Ubuntu 18.04 e tem seu ponto de montagem definido como/
tank/ds1/u18
é copiadoaquarium
com a única diferença de queds1
é criptografado eu18
herda essa propriedade.- Windows 10 ✓
Espero que não tenha nada a ver com meus problemas. /dev/nvme0n1p8
✓
Um sistema formatado em EXT4 que ainda está lá desde quando mudei para o ZFSaquarium
Eu tenho uma partição EXT2 para /boot
e outra partição para /boot/efi
.
Soluções Manuais
Quando seleciono e edito a aquarium
entrada substituindo root=ZFS=aquarium/ds1/u18
por root=ZFS=tank/ds1/u18
posso inicializar bem no initramfs, onde sou solicitada a senha. Depois de inserir a senha, recebo meu sistema conforme o esperado.
Dentro desse sistema (ou qualquer outro sistema Ubuntu), posso criar uma entrada personalizada em /etc/grub/40_custom
.
menuentry "Encryptioned Magic 18.04" {
linux /vmlinuz-5.3.0-51-generic root=ZFS=tank/ds1/u18 ro acpi_backlight=video resume=UUID-OF-SWAP-PARTITION
initrd /initrd.img-5.3.0-51-generic
}
Gostaria de evitar isso, porque uma entrada manual significa que preciso modificá-la quando o UUID do meu sistema de arquivos de troca for alterado ou qualquer outra coisa. Quero dizer, todas as razões pelas quais não criamos entradas personalizadas para cada sistema operacional basicamente também se aplicam aqui.
Tentativa de Solução
Idealmente, isso usaria sudo update-grub
, mas mesmo com a chave de criptografia carregada ou mesmo quando estou dentro do sistema criptografado, parece não encontrá-la. Este log é de executá-lo em aquarium
.
$ sudo update-grub
Sourcing file `/etc/default/grub`
Generating grub configuration file ...
Found theme: /boot/grub/themes/poly-dark/theme.txt
Found linux image: /boot/vmlinuz-5.3.0-51-generic
Found initrd image: /boot/initrd.img-5.3.0-51-generic
Found linux image: /boot/vmlinuz-5.3.0-28-generic
Found initrd image: /boot/initrd.img-5.3.0-28-generic
Found Windows Boot Manager on /dev/nvme0n1p2@/EFI/Microsoft/Boot/bootmgfw.efi
Found Ubuntu 18.04.4 LTS (18.04) on /dev/nvme0n1p8
Adding boot menu entry for EFI firmware configuration
done
Quando executo este mesmo comando no tank
sistema criptografado, recebo adicionalmente uma mensagem entre o segundo Found initrd image
e as Found Windows Boot Manager
linhas:
device-mapper: reload ioctl on osprober-linux-nvme0n1p10 failed: Device or resource busy
Command failed
A partição mencionada nvme0n1p10
é a partição única na qual o pool tank
com o conjunto de dados criptografado tank/ds1/u18
está configurado.
Essa mesma mensagem de erro parece acontecer sempre que zfs
está usando uma partição quando executo update-grub
, pois ela a abre para acesso exclusivo , não importa em qual sistema estou logado. Este comportamento é um bug confirmado no os-prober, mas eles o chamam
não realmente falhando, apenas vomitando erros durante o os-prober. Queremos limpá-lo (é cosmético).
Como posso gerar automaticamente uma entrada grub para meu conjunto de dados zfs criptografado?
No momento, isso ainda é um problema em aberto no zfsonlinux/grub, mas postei uma solução alternativa lá (e aqui) graças ao usuário do github tterpelle :
O que vamos fazer é pegar os scripts grub do Ubuntu 19.04 para o nosso Ubuntu 18.04.
Tire o
/etc/grub.d/10_linux_zfs
arquivo dissodata.tar.xz
. Eu não sabia a maneira correta, então apenas fizvim data.tar.xz
, abri o arquivo e fiz:w 10_linux_zfs
.Mova-o para
/etc/grub.d
Torne-o executável, pois pode não ser executado de outra forma.
sudo chmod +x /etc/grub.d/10_linux_zfs
sudo update-grub
Isso é suficiente para gerar uma entrada correta. Mas também queremos não ter nenhuma entrada incorreta, então temos que substituir
10_linux
da mesma maneira porque eles adicionaram algumas linhas que pulam a geração de entradas zfs lá.10_linux
em vez de10_linux_zfs
.