Linux LUKS + usb key — почему не работает? Доброе...
Имеем Archlinux.
Зашифровал диск Luks'om, при загрузке справшивает пароль - все как надо. работает.
Добавил ключ для диска, что ключом его открывать:cryptsetup luksAddKey /dev/sda2 /mnt/file.key
Добавил запись в /etc/default/grub указав uuid влешки (blkid - помог найти):GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:main cryptkey=/dev/disk/by-uuid/0018-F528:vfat:/file.key"
Прописал в /etc/mkinitcpio.confMODULES="ata_generic ata_piix nls_cp437 vfat"
HOOKS="base udev autodetect modconf block encrypt lvm2 filesystems keyboard fsck"
После выполнил:grub-mkconfig -o /boot/grub/grub.cfg
mkinitcpio -p linux
После перезагрузки получаю ошибку:Starting version 229
[ 2.712166] sd 4:0:0:0: [sdb] No Caching mode page found
[ 2.712166] sd 4:0:0:0: [sdb] Assuming drive cache: write through
ERROR: device 'UUID=276f2d59-4k5h-4585-dfty-059hjftu657c' not found. Skipping fsck.
ERROR: Unable to find root device 'UUID=276f2d59-4k5h-4585-dfty-059hjftu657c'.
You are being dropped to a recovery shell
Type 'exit' to try and continue booting
sh: can't access tty; job control tured off
Флешка с ключом есть, он ее как раз в начале нашел.
Для теста убирал ключ с флешки - тогда ругается, что нет ключа на флешке.
Открыть контейнер с ключом без проблем могу:cryptsetup open /dev/sda2 lvm --key-file=/tmp/file.key/tmp - сюда смонтировал флешку
Если убираю ключ полность (luksRemoveKey) - то нормально грузится, спрашивает пароль и система загружается нормально дальше.
Как решить проблему?
Не так прописал в /etc/default/grub?
Вот содержимое /etc/default/grubGRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:main cryptkey=/dev/disk/by-uuid/0018-F528:vfat:/file.key""
# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=auto
# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true
Вот содержимое /boot/grub/grub.cfg#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 aefcbefe-5dd9-46ea-b54b-2f240d924219
else
search --no-floppy --fs-uuid --set=root aefcbefe-5dd9-46ea-b54b-2f240d924219
fi
font="/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=ru_RU
insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-276f2d59-4k5h-4585-dfty-059hjftu657c' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 a80c4147-b1af-4192-b9d5-b031b7c6f45b
else
search --no-floppy --fs-uuid --set=root a80c4147-b1af-4192-b9d5-b031b7c6f45b
fi
echo 'Загружается Linux linux …'
linux /vmlinuz-linux root=UUID=276f2d59-4k5h-4585-dfty-059hjftu657c rw cryptdevice=/dev/sda2:main cryptkey=/dev/disk/by-uuid/0018-F528:vfat:/file.key quiet
echo 'Загружается начальный виртуальный диск …'
initrd /initramfs-linux.img
}
submenu 'Дополнительные параметры для Arch Linux' $menuentry_id_option 'gnulinux-advanced-276f2d59-4k5h-4585-dfty-059hjftu657c' {
menuentry 'Arch Linux, с Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-276f2d59-4k5h-4585-dfty-059hjftu657c' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 a80c4147-b1af-4192-b9d5-b031b7c6f45b
else
search --no-floppy --fs-uuid --set=root a80c4147-b1af-4192-b9d5-b031b7c6f45b
fi
echo 'Загружается Linux linux …'
linux /vmlinuz-linux root=UUID=276f2d59-4k5h-4585-dfty-059hjftu657c rw cryptdevice=/dev/sda2:main cryptkey=/dev/disk/by-uuid/0018-F528:vfat:/file.key quiet
echo 'Загружается начальный виртуальный диск …'
initrd /initramfs-linux.img
}
menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-276f2d59-4k5h-4585-dfty-059hjftu657c' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 a80c4147-b1af-4192-b9d5-b031b7c6f45b
else
search --no-floppy --fs-uuid --set=root a80c4147-b1af-4192-b9d5-b031b7c6f45b
fi
echo 'Загружается Linux linux …'
linux /vmlinuz-linux root=UUID=276f2d59-4k5h-4585-dfty-059hjftu657c rw cryptdevice=/dev/sda2:main cryptkey=/dev/disk/by-uuid/0018-F528:vfat:/file.key quiet
echo 'Загружается начальный виртуальный диск …'
initrd /initramfs-linux-fallback.img
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
### BEGIN /etc/grub.d/60_memtest86+ ###
### END /etc/grub.d/60_memtest86+ ###
В /etc/crypttab все закоменчено
А вот /etc/fstab# /dev/mapper/main-root
UUID=276f2d59-4k5h-4585-dfty-059hjftu657c / ext4 rw,relatime,data=ordered 0 1
# /dev/sda1 LABEL=boot
UUID=159f2d60-9f7n-1385-dfty-498sdfgi057k /boot ext2 rw,relatime,block_validity,barrier,user_xattr,acl 0 1
Пробовал uuid в fstab менять на /dev/mapper/main-root - но естественно не помогло.
меня вот какая строка смутила в /boot/grub/grub.cfglinux /vmlinuz-linux root=UUID=276f2d59-4k5h-4585-dfty-059hjftu657c rw cryptdevice=/dev/sda2:main cryptkey=/dev/disk/by-uuid/0018-F528:vfat:/file.key quiet
Kак понимаю. он сначала ищет этот диск. а только потом ключ, но так как он не открыл его , то по этому и ругается .... как -то надо менять их местами видимо...
Подскажите как можно решить вопрос.
Спасибо.

21 Авг 2019 в 07:13
219 +1
0
Ответы
1

Ваш анализ верен - проблема, скорее всего, заключается в том, что GRUB сначала пытается найти корневой раздел по UUID, а затем открывать шифрованный раздел с помощью ключа на USB-накопителе. Вам необходимо изменить порядок этих операций в параметрах загрузки GRUB.

Попробуйте изменить строку в /boot/grub/grub.cfg следующим образом:

linux /vmlinuz-linux cryptdevice=/dev/sda2:main cryptkey=/dev/disk/by-uuid/0018-F528:vfat:/file.key root=/dev/mapper/main-root rw quiet

Таким образом, мы сначала указываем параметры для открытия шифрованного раздела (/dev/sda2:main и cryptkey), а затем указываем root в виде /dev/mapper/main-root.

Перезагрузите систему и посмотрите, помогло ли это решить проблему загрузки. Если это не поможет, также проверьте, что все пути и идентификаторы UUID указаны правильно в файлах конфигурации GRUB.

Надеюсь, это поможет вам успешно загрузить систему с использованием ключа на USB-накопителе. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!

20 Апр в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир