Автор Тема: Загрузка alt-server-v-10.2-x86_64 с зашифрованного диска  (Прочитано 661 раз)

Оффлайн Dron.ru

  • Начинающий
  • *
  • Сообщений: 18
Дано:
Чистая установка свежескачанного дистрибутива 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 при загрузке с шифрованного диска не спрашивал пароль от этого диска два раза?
« Последнее редактирование: 02.08.2024 13:44:09 от Dron.ru »