seguí las instruccionesaquí. He estado usando el LiveCD y por mi vida no puedo persuadir a Ubuntu para que cree un archivo initramfs que esté dispuesto a descifrar mi sistema de archivos LUKS. No tengo problemas para pasar GRUB.
¿Ayuda? Pero tengo la sensación de que podemos hacer que esto funcione.
Cuando llego a la etapa initramfs, puedo ejecutar cryptsetup pero aparece este mensaje de error:
device-mapper: table: 252:0 crypt error allocating tfm
También recibí un mensaje que decía "Compruebe que el kernel admita el cifrado aes-xts-plain64".
Respuesta1
¡Bien, lo descubrí!
Adapté esta guía, principalmente agregando cosas hasta que funcionó:
https://help.ubuntu.com/community/EncryptedFilesystemOnIntrepid
Modifiqué un poco los archivos de esa guía, pero por lo demás la seguí.
Por si acaso, agregué estas líneas modprobe a /etc/initramfs-tools/scripts/local-top/cryptoroot:
modprobe -q dm_crypt
modprobe -q sha256_generic
modprobe -q sha256
modprobe -q aes_generic
modprobe -q aes
modprobe -q cbc
modprobe -q xts
modprobe -q aes
modprobe -q aes_x86_64
Lo que da:
PREREQ="udev"
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
#This line from the Encrypted Entrepid tutorial didn't work for me
#/bin/loadkeys -q /etc/console-setup/boottime.kmap.gz
modprobe -q dm_crypt
modprobe -q sha256
modprobe -q sha256_generic
modprobe -q aes_generic
modprobe -q aes
modprobe -q cbc
modprobe -q xts
modprobe -q aes
modprobe -q aes_x86_64
# The following command will ensure that the kernel is aware of
# the partition before we attempt to open it with cryptsetup.
/sbin/udevadm settle
if grep -q splash /proc/cmdline; then
/bin/chvt 1
fi
/sbin/cryptsetup luksOpen CRYPTOROOT cryptoroot
if grep -q splash /proc/cmdline; then
/sbin/usplash -c &
sleep 1
fi
Para el archivo anterior (local-top), es necesario cambiar la línea CRYPTROOT.
Usé un archivo de claves, por lo que mi línea se veía así:
/sbin/cryptsetup luksOpen /dev/disk/by-uuid/xxxx --key-file /my_keyfile.bin cryptoroot
El archivo de claves no es necesario. El luksHeader se puede abrir con una contraseña (simplemente elimine la opción de archivo de claves). Dicho esto, si incluye el archivo, no use /dev/sdXy.
A /etc/initramfs-tools/hooks/cryptoroot acabo de agregar estas líneas:
# Comment out this line
# cp /etc/console-setup/boottime.kmap.gz ${DESTDIR}/etc/console
# If you add a key-file
# cp /my_keyfile.bin ${DESTDIR}/
copy_exec /bin/loadkeys /bin
copy_exec /bin/chvt /bin
copy_exec /sbin/cryptsetup /sbin
copy_exec /sbin/blkid /sbin
copy_exec /sbin/lsmod /sbin
copy_exec /sbin/cat /sbin
copy_exec /sbin/dmsetup /sbin
Lo que da:
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
if [ ! -x /sbin/cryptsetup ]; then
exit 0
fi
. /usr/share/initramfs-tools/hook-functions
# Comment out this line
# cp /etc/console-setup/boottime.kmap.gz ${DESTDIR}/etc/console
# If you add a key-file
# cp /my_keyfile.bin ${DESTDIR}/
copy_exec /bin/loadkeys /bin
copy_exec /bin/chvt /bin
copy_exec /sbin/cryptsetup /sbin
copy_exec /sbin/blkid /sbin
copy_exec /sbin/lsmod /sbin
copy_exec /sbin/cat /sbin
copy_exec /sbin/dmsetup /sbin
Además, todos estos archivos deben marcarse como ejecutables.
chmod +x /etc/initramfs-tools/hooks/cryptoroot
chmod +x /etc/initramfs-tools/scripts/local-top/cryptoroot
Agregue estos a /etc/initramfs-tools/modules:
dm_mod
dm_crypt
sha256_generic
sha256_ssse3
aes_generic
cbc
aes_x86_64
xts
¡Fue relativamente fácil!
Ejecute update-initramfs -u -k all
Luego necesitamos crear una entrada GRUB personalizada en mi caso porque os-prober no detectará un sistema de archivos en BTRFS. La entrada del arco ayudará allí.
Así es como se ve el mío:
menuentry "System shutdown" {
echo "System shutting down..."
halt
}
menuentry "System restart" {
echo "System rebooting..."
reboot
}
menuentry 'Ubuntu Linux try 1' --class arch --class gnu-linux --class gnu --class os {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_sha256
insmod btrfs
insmod ext2
cryptomount -u [UUID of sdXY]
set root='cryptouuid/[UUID of sdXY]'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/[UUID of sdXY]' [UUID of /dev/mapper/cryptoroot]
else
search --no-floppy --fs-uuid --set=root [UUID of /dev/mapper/cryptoroot]
fi
echo 'Loading Linux linux-lts ...'
#I use btrfs so...
linux btrfs path root=UUID=[UUID of /dev/mapper/cryptoroot] rw rootflags=subvol=/btrfs/path/to/root cryptdevice=/dev/disk/by-uuid/[UUID of sdXY]':cryptroot quiet modprobe.blacklist=pcspkr profile
echo 'Loading initial ramdisk ...'
initrd path/initrd.img
}
##I was able to boot without this kernel option but some guides suggested it: ##cryptopts=target=cryptrootname,source=/dev/sdXY
Es oficial: ¡Ubuntu puede iniciarse en el sistema de archivos cifrados de Arch! Busqué mucho en Google y no estoy seguro de que alguien más haya descifrado este, al menos no en algunos años.