Initramfs no chroot debootstrap do sistema totalmente criptografado

6

Estou trabalhando em um script para criar um sistema lavável totalmente criptografado a partir do debootstrap . Está indo bem, mas a imagem initramfs que sai não pega o cryptroot corretamente. Depois de inicializar a imagem com o qemu, sou deixado em um shell do busybox e tenho que desbloquear a criptografia luks manualmente com cryptsetup :

cryptsetup luksOpen /dev/sda1 system
/scripts/local-premount/flashback
exit

(flashback faz alguma mágica de snapshots do btrfs para esquecer as alterações feitas em cada inicialização)

Depois disso, o boot no qemu continua normalmente e eu posso gerar uma boa initramfs de imagem. Eu copio isso para o subvolume btrfs @ root.base e tudo está bem a partir de então.

Preciso de ajuda para descobrir por que a parte cryptsetup / cryptroot não está sendo selecionada no ambiente chroot por update-initramfs :

echo "CRYPTSETUP=y" >> /usr/share/initramfs-tools/conf-hooks.d/cryptsetup
echo "export CRYPTSETUP=y" >> /usr/share/initramfs-tools/conf-hooks.d/cryptsetup
update-initramfs -ut

Eu tentei muitas coisas, eu escrevi um bom fstab e crypttab e até tentei definir explicitamente o cryptdevice no grub.cfg. Consulte a versão específica do script .

Veja como eu crio o fstab e o crypttab:

export partuuid=$(blkid $partition | sed -re 's/.*: UUID="([^"]+)".*//')
export decruuid=$(blkid /dev/mapper/$decrypted | sed -re 's/.*: UUID="([^"]+)".*//')
echo "Adding flashback with uuid $partuuid"
echo "system UUID=$partuuid none luks" >> "$rootmount/etc/crypttab"
echo "UUID=$decruuid / btrfs [email protected] 0 0" >> "$rootmount/etc/fstab"
echo "UUID=$decruuid /home btrfs subvol=@home 0 0" >> "$rootmount/etc/fstab"

A questão em princípio é: Como você gera uma imagem initramfs funcional em um chroot criptografado de um debian combootstrapped?

Obrigado um monte

    
por Rbjz 02.03.2016 / 22:29

2 respostas

2

Isso sempre funcionará, mesmo com um crypttab vazio:

echo 'export CRYPTSETUP=y' > /etc/initramfs-tools/conf.d/cryptsetup

Como alternativa, você pode adicionar isso ao / etc / environment:

CRYPTSETUP=y
    
por 01.05.2017 / 12:58
2

Usar /etc/initramfs-tools/conf.d/cryptsetup está obsoleto no trecho.

O novo método preferido é definir "CRYPTSETUP=y" em /etc/cryptsetup-initramfs/conf-hook .

    
por 27.06.2017 / 13:55