Дано:Чистая установка свежескачанного дистрибутива alt-server-v-10.2-x86_64 на зашифрованный средствами установщика диск.
Диски в системе:
# lsblk -fp
/dev/sda
├─/dev/sda1 vfat FAT32 efi 3087-3418 504M 1% /boot/efi
└─/dev/sda2 crypto_LUKS 1 8d0e1cff-4a27-7c4e-8966-8e24f4d30390
└─/dev/mapper/luks-8d0e1cff-4a27-7c4e-8966-8e24f4d30390 ext4 1.0 sys e64235db-c9b5-4fbd-9373-ce2a8b02589d 51.8G 5% /
Содержимое /boot/efi/EFI/altlinux/grub.cfg
# cat /boot/efi/EFI/altlinux/grub.cfg
cryptomount -u 8d0e1cff4a277c4e89668e24f4d30390
search.fs_uuid e64235db-c9b5-4fbd-9373-ce2a8b02589d root cryptouuid/8d0e1cff4a277c4e89668e24f4d30390
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
Содержимое /boot/grub/grub.cfg
Спойлер
# cat /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/sysconfig/grub2
#
### BEGIN /etc/grub.d/00_header ###
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="${saved_entry}"
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_gpt
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha1
insmod gcry_sha256
insmod ext2
cryptomount -u 8d0e1cff4a277c4e89668e24f4d30390
set root='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390' e64235db-c9b5-4fbd-9373-ce2a8b02589d
else
search --no-floppy --fs-uuid --set=root e64235db-c9b5-4fbd-9373-ce2a8b02589d
fi
font="/boot/grub/unifont.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=POSIX
insmod gettext
fi
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
# interrupt grub booting process if shift key pressed
if keystatus --shift;then
set timeout=-1
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_altlinux_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_altlinux_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'ALT Virtualization Server 10.2' --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-simple-e64235db-c9b5-4fbd-9373-ce2a8b02589d' {
savedefault
load_video
insmod gzio
insmod part_gpt
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha1
insmod gcry_sha256
insmod ext2
cryptomount -u 8d0e1cff4a277c4e89668e24f4d30390
set root='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390' e64235db-c9b5-4fbd-9373-ce2a8b02589d
else
search --no-floppy --fs-uuid --set=root e64235db-c9b5-4fbd-9373-ce2a8b02589d
fi
linux /boot/vmlinuz-un-def root=UUID=e64235db-c9b5-4fbd-9373-ce2a8b02589d ro panic=30 splash
initrd /boot/initrd-un-def.img
}
submenu 'Advanced options for ALT Virtualization Server 10.2' $menuentry_id_option 'gnulinux-advanced-e64235db-c9b5-4fbd-9373-ce2a8b02589d' {
menuentry 'ALT Virtualization Server 10.2, un-def' --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-un-def-advanced-e64235db-c9b5-4fbd-9373-ce2a8b02589d' {
savedefault
load_video
insmod gzio
insmod part_gpt
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha1
insmod gcry_sha256
insmod ext2
cryptomount -u 8d0e1cff4a277c4e89668e24f4d30390
set root='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390' e64235db-c9b5-4fbd-9373-ce2a8b02589d
else
search --no-floppy --fs-uuid --set=root e64235db-c9b5-4fbd-9373-ce2a8b02589d
fi
linux /boot/vmlinuz-un-def root=UUID=e64235db-c9b5-4fbd-9373-ce2a8b02589d ro panic=30 splash
initrd /boot/initrd-un-def.img
}
menuentry 'ALT Virtualization Server 10.2, vmlinuz' --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-vmlinuz-advanced-e64235db-c9b5-4fbd-9373-ce2a8b02589d' {
savedefault
load_video
insmod gzio
insmod part_gpt
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha1
insmod gcry_sha256
insmod ext2
cryptomount -u 8d0e1cff4a277c4e89668e24f4d30390
set root='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390' e64235db-c9b5-4fbd-9373-ce2a8b02589d
else
search --no-floppy --fs-uuid --set=root e64235db-c9b5-4fbd-9373-ce2a8b02589d
fi
linux /boot/vmlinuz root=UUID=e64235db-c9b5-4fbd-9373-ce2a8b02589d ro panic=30 splash
initrd /boot/initrd.img
}
menuentry 'ALT Virtualization Server 10.2, vmlinuz (recovery mode)' --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-vmlinuz-recovery-e64235db-c9b5-4fbd-9373-ce2a8b02589d' {
load_video
insmod gzio
insmod part_gpt
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha1
insmod gcry_sha256
insmod ext2
cryptomount -u 8d0e1cff4a277c4e89668e24f4d30390
set root='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390' e64235db-c9b5-4fbd-9373-ce2a8b02589d
else
search --no-floppy --fs-uuid --set=root e64235db-c9b5-4fbd-9373-ce2a8b02589d
fi
linux /boot/vmlinuz root=UUID=e64235db-c9b5-4fbd-9373-ce2a8b02589d ro failsafe vga=normal
initrd /boot/initrd.img
}
menuentry 'ALT Virtualization Server 10.2, 6.1.99-un-def-alt1' --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-6.1.99-un-def-alt1-advanced-e64235db-c9b5-4fbd-9373-ce2a8b02589d' {
savedefault
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha1
insmod gcry_sha256
insmod ext2
cryptomount -u 8d0e1cff4a277c4e89668e24f4d30390
set root='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390' e64235db-c9b5-4fbd-9373-ce2a8b02589d
else
search --no-floppy --fs-uuid --set=root e64235db-c9b5-4fbd-9373-ce2a8b02589d
fi
linux /boot/vmlinuz-6.1.99-un-def-alt1 root=UUID=e64235db-c9b5-4fbd-9373-ce2a8b02589d ro panic=30 splash
initrd /boot/initrd-6.1.99-un-def-alt1.img
}
menuentry 'ALT Virtualization Server 10.2, 6.1.85-un-def-alt1' --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-6.1.85-un-def-alt1-advanced-e64235db-c9b5-4fbd-9373-ce2a8b02589d' {
savedefault
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha1
insmod gcry_sha256
insmod ext2
cryptomount -u 8d0e1cff4a277c4e89668e24f4d30390
set root='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390' e64235db-c9b5-4fbd-9373-ce2a8b02589d
else
search --no-floppy --fs-uuid --set=root e64235db-c9b5-4fbd-9373-ce2a8b02589d
fi
linux /boot/vmlinuz-6.1.85-un-def-alt1 root=UUID=e64235db-c9b5-4fbd-9373-ce2a8b02589d ro panic=30 splash
initrd /boot/initrd-6.1.85-un-def-alt1.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/30_uefi-firmware ###
if [ "$grub_platform" = "efi" ]; then
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
fi
### END /etc/grub.d/30_uefi-firmware ###
### BEGIN /etc/grub.d/39_memtest ###
if [ "$grub_platform" = "pc" ]; then
menuentry "Memtest86+-7.00" {
insmod part_gpt
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha1
insmod gcry_sha256
insmod ext2
cryptomount -u 8d0e1cff4a277c4e89668e24f4d30390
set root='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390' e64235db-c9b5-4fbd-9373-ce2a8b02589d
else
search --no-floppy --fs-uuid --set=root e64235db-c9b5-4fbd-9373-ce2a8b02589d
fi
linux /boot/memtest-7.00.bin
}
fi
if [ "$grub_platform" = "efi" ]; then
menuentry "Memtest86+-7.00 (may not work with Secure Boot)" {
insmod part_gpt
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha1
insmod gcry_sha256
insmod ext2
cryptomount -u 8d0e1cff4a277c4e89668e24f4d30390
set root='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/8d0e1cff4a277c4e89668e24f4d30390' e64235db-c9b5-4fbd-9373-ce2a8b02589d
else
search --no-floppy --fs-uuid --set=root e64235db-c9b5-4fbd-9373-ce2a8b02589d
fi
linux /boot/memtest-7.00.efi
}
fi
### END /etc/grub.d/39_memtest ###
### 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 ###
Загрузка:При загрузке GRUB сначала запускается /boot/efi/EFI/altlinux/grub.cfg с незашифрованного efi раздела и спрашивает пароль от зашифрованного корневого раздела, открывает зашифрованный раздел и запускает /boot/grub/grub.cfg, который также отрабатывает без ошибок выдавая меню выбора варианта загрузки и передавая загрузку далее ядру /boot/vmlinuz и /boot/initrd.img
При загрузке ядра пароль от диска запрашивается повторно:
085-luks: /dev/sda2: trying to find corresponding entry in the '/etc/crypttab'.
085-luks: luks keyfile was not specified and '/etc/cryptsetup-keys.d/luks-8d0e1cff-4a27-7c4e-8966-8e24f4d30390.key' was not found.
085-luks: The keyfile was not found for partition: /dev/sda2
085-luks: Trying to ask the user for a password.
При этом в /etc/crypttab содержится строка:
# cat /etc/crypttab
luks-8d0e1cff-4a27-7c4e-8966-8e24f4d30390 UUID=8d0e1cff-4a27-7c4e-8966-8e24f4d30390 /etc/cryptsetup-keys.d/luks-8d0e1cff-4a27-7c4e-8966-8e24f4d30390.key luks
И на диске имеется файл /etc/cryptsetup-keys.d/luks-8d0e1cff-4a27-7c4e-8966-8e24f4d30390.key с ключем от этого диска.
Проблема:На стадии загрузки ядра шифрованый системный диск уже открыт и подключен (с него же и грузится ядро). Если загрузиться в grub shell и выполнить все команды из grub.cfg вручную, то видно, что шифрованный диск подключается как cryptouuid/8d0e1cff4a277c4e-89668e24f4d30390 и ресурсы системного диска доступны по адресам вида (пример) $root/etc/cryptsetup-keys.d/ где $root=cryptouuid/8d0e1cff4a277c4e-89668e24f4d30390
Так вот, ядро почему-то не хочет использовать уже открытый шифрованый диск, пытается его открыть заново, ищет ключи в файлах /etc/crypttab и /etc/cryptsetup-keys.d/luks-8d0e1cff-4a27-7c4e-8966-8e24f4d30390.key, ищет и не находит, хотя они там есть.
Было подозрение, что на этой стадии корень "/" ещё не существует, менял путь к key файлу в crypttab на cryptouuid/8d0e1cff4a277c4e-89668e24f4d30390/etc/cryptsetup-keys.d/luks-8d0e1cff-4a27-7c4e-8966-8e24f4d30390.key и на $root/etc/cryptsetup-keys.d/luks-8d0e1cff-4a27-7c4e-8966-8e24f4d30390.key, но не помогло.
Вопрос:Как сделать, чтобы alt-server-v-10.2-x86_64 при загрузке с шифрованного диска не спрашивал пароль от этого диска два раза?