Получение lsinitramfs для начальной загрузки в систему зашифрованного файла

Я следовал за направлениями здесь. Я использовал LiveCD, и я не могу ни за что в жизни убедить Ubuntu создать initramfs файл, который был бы готов дешифровать мою файловую систему LUKS. У меня нет проблем при заканчивании GRUB.

Помощь? У меня есть чувство, что мы можем сделать эту работу все же.

Когда я дохожу до initramfs стадии, я могу выполнить cryptsetup, но я получаю это сообщение об ошибке:

device-mapper: table: 252:0 crypt error allocating tfm

Я также получил сообщение, говоря "Проверку, что ядро поддерживает aes-xts-plain64 шифр"

0
задан 4 October 2016 в 15:47

1 ответ

Хорошо, я понял это!

я адаптировал это руководство, главным образом просто добавив материал, пока он не работал:

https://help.ubuntu.com/community/EncryptedFilesystemOnIntrepid

я изменил файлы немного от того руководства, но иначе следовал за ним.

На всякий случай, я добавил эти modprobe строки к/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

, Который дает:

    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

Для файла выше (локальной вершины), строка CRYPTROOT должна быть изменена.

я использовал файл ключей, таким образом, моя строка была похожа на это:

/sbin/cryptsetup luksOpen /dev/disk/by-uuid/xxxx --key-file /my_keyfile.bin cryptoroot

файл ключей не необходим. luksHeader может быть открыт паролем (просто удаляют опцию файла ключей). Тем не менее при включении файла не используйте/dev/sdXy.

/etc/initramfs-tools/hooks/cryptoroot я просто добавил эти строки:

# 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

, Который дает:

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

Также все эти файлы должны быть отмечены исполняемый файл.

chmod +x /etc/initramfs-tools/hooks/cryptoroot
chmod +x /etc/initramfs-tools/scripts/local-top/cryptoroot

Добавляют их к/etc/initramfs-tools/modules:

dm_mod
dm_crypt
sha256_generic
sha256_ssse3
aes_generic
cbc
aes_x86_64
xts

Это было относительно легко!

обновление-initramfs Выполнения-u-k весь

Затем мы должны создать пользовательскую запись GRUB в моем случае, потому что тестер OS не обнаружит файловую систему на BTRFS. Запись дуги поможет там.

Это - то, на что мой похож:

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

Это официально: Ubuntu может загрузиться в систему зашифрованного файла Arch! Я сделал много поиска с помощью Google, и я не уверен, что кто-либо еще взломал этого, по крайней мере, не за несколько лет.

0
ответ дан 28 September 2019 в 14:44

Другие вопросы по тегам:

Похожие вопросы: