LINUX.ORG.RU
ФорумAdmin

использование linux на LUKS

 , ,


0

2

Здравствуйте, форумчане.
Прошу помочь в следующем вопросе.
На флешке с не зашифрованным разделом расположен boot с ядром, initrd и ключом или паролем к шифрованному разделу, на диске в компьютере или ноутбуке корень файловой системы, но он зашифрован - LUKS. Грузим ядро с флешки, а оно уже монтирует корень, после загрузки флешку вынимаем.
Как создать зашифрованный раздел LUKS, его отформатировать, примонтировать, распаковать туда систему, я знаю. Вопрос вот в чём.
Как создать initrd, что бы он понимал LUKS? Chroot-нуться в корень и в корне командой mkinitramfs создать initrd?
Как заставить ядро понимать LUKS? Где должен находиться /etc/fstab на зашифрованном разделе или на не шифрованной флешке?
Как проинсталировать grub2 и создать для него конфиг? Просто chroot-нуться в примонтированный зашифрованный раздел и выполнить команды: grub-install с указанием диска и grub-mkconfig с указанием файла?
Хотелось бы сделать так, что бы пароль или ключ во время загрузки подкидывались автоматом, что бы не приходилось их вводить вручную.
LUKS подходит для работы, или только для хранения данных, а для работы нужно что нибудь более быстрое?
Детально как сделать то что мне нужно не нашёл, может кто подскажет где почитать. Или может кто уже делал такое, тогда пожалуйста поделитесь информацией.

★★

Последнее исправление: v4567 (всего исправлений: 1)

Вас интересует пакет cryptsetup-initramfs (или подобный из вашего дистрибутива) и файл /etc/crypttab.
Хуки initramfs добавят в initrd всю нужную информацию и во время загрузки попросят ключ/пароль от корневого раздела.
Выносить куда-то fstab не нужно.

Хотелось бы сделать так, что бы пароль или ключ во время загрузки подкидывались автоматом, что бы не приходилось их вводить вручную.

Смысл этого от меня ускользает, но ничего не мешает вам положить ключ в /boot на флешке, и указать его в /etc/crypttab.

для работы нужно что нибудь более быстрое

Это было не нужно ещё до распространения AES-NI, а уж теперь и подавно:

aes-xts 256b 3054.8 MiB/s 3164.8 MiB/s

aidaho ★★★★★
()
Ответ на: комментарий от aidaho

aidahoСпасибо за помощь!

По поводу grub я ошибся. Получается его на флешку надо инсталлировать. Она не зашифрованная поэтому там всё по стандарту.

Правильно ли я понял, рам-диск сам расшифрует корень, подмонтирует его и ядро будет работать уже с этим корнем? Для ядра никаких дополнительных действий не надо совершать, оно будет работать через свой модуль dm-crypt?

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Правильно ли я понял, рам-диск сам расшифрует корень, подмонтирует его и ядро будет работать уже с этим корнем?

Да.

Для ядра никаких дополнительных действий не надо совершать, оно будет работать через свой модуль dm-crypt?

Почти: хук в составе cryptsetup-initramfs впихнёт все нужные модули в initramfs во время его пересборки.
Ядру нужно передать root=/dev/mapper/cryptroot, оно будет ждать во время загрузки, пока dm-crypt его не предоставит.

Единственное, что я по-моему маху дал с

ничего не мешает вам положить ключ в /boot на флешке, и указать его в /etc/crypttab

По-моему /boot будет смонтирован уже позже, и ключ нужно класть в сам initramfs.

aidaho ★★★★★
()
Ответ на: комментарий от aidaho

Ключ указывается в /etc/crypttab, хук cryptsetup-initramfs закидывает его в рамдиск.

cat /etc/cryptsetup-initramfs/conf-hook                                                                                                                                                                                                              
KEYFILE_PATTERN="/etc/keys/*.key"

sudo lsinitramfs /boot/initrd.img-4.9.0-11-amd64 | grep '\.key'                                                                                                                                                                                      
cryptroot-keyfiles/sda2_crypt.key

undef ★★
()
Ответ на: комментарий от v4567

aidaho, undef не получается у меня с этим крипто диском.
Пошагово что делал.
В начале два отступления:
1. без крипто плясок, перенос запакованных таром файлов системы на любой носитель, генерация рамдиска и инсталляция загрузчика проходило нормально, система загружалась и всё работало.
2. вначале делал на флешке и при создании рамдиска, папка: cryptroot-keyfiles с файлом ключа присутствовали в рамдиске. Потом флешка приказала долго жить и я до её умирания, в оснвоную систему скопировал только архив рамдиска. Потом делал на ssd накопителе подключённом по usb2 через выносной бокс. Делал всё вроде бы так же как и на флешке но папки: cryptroot-keyfiles с ключом уже не было. Поэтому новый рам диск разархивировал, скинул эту папку, ключ, кое что прописал в настройках, запаковал его и уже работал с ним.
Далее распишу что делал:
Создаю ключ:

dd if=/dev/random of=/root/cryptroot.key bs=1 count=2048
Буду писать реальные uuid и диски, привожу вывод команды blkid:
/dev/sda1: UUID="c984a3a8-781b-426e-9cfe-c542564138af" TYPE="swap" PARTUUID="0df04881-01"
/dev/sda2: LABEL="system" UUID="18205b11-1ba8-414f-8706-ce7c0f46bc6c" TYPE="ext4" PARTUUID="0df04881-02"
/dev/sdc: UUID="7aa690ce-08db-4d91-9113-5f9edaf324c1" TYPE="crypto_LUKS"
/dev/sdb1: UUID="d24c975f-d3d8-411c-a108-5fbf7d03c1a3" TYPE="ext4" PARTUUID="46db6a6d-01"
blkid привёл после luksFormat
sda - основная система
/dev/sdb1 - флешка с которой должен загружаться зашифрованный диск, на ней только папка /boot
sdc - зашифрованный диск.
Форматирую sdc в файловую систему luks:
cryptsetup luksFormat /dev/sdc /root/cryptroot.key << EOF
YES
EOF
Создаю шифрованное устройство:
cryptsetup luksOpen UUID="7aa690ce-08db-4d91-9113-5f9edaf324c1" cryptroot --key-file=/root/cryptroot.key
Форматирую это устройство в файловую систему ext4:
mkfs.ext4 /dev/mapper/cryptroot
Привожу blkid
blkid
/dev/sda1: UUID="c984a3a8-781b-426e-9cfe-c542564138af" TYPE="swap" PARTUUID="0df04881-01"
/dev/sda2: LABEL="system" UUID="18205b11-1ba8-414f-8706-ce7c0f46bc6c" TYPE="ext4" PARTUUID="0df04881-02"
/dev/sdc: UUID="7aa690ce-08db-4d91-9113-5f9edaf324c1" TYPE="crypto_LUKS"
/dev/sdb1: UUID="d24c975f-d3d8-411c-a108-5fbf7d03c1a3" TYPE="ext4" PARTUUID="46db6a6d-01"
/dev/mapper/cryptroot: UUID="a7825d81-be8a-41c2-8771-cd5c02b5d8d4" TYPE="ext4"
Монтирую /dev/mapper/cryptroot в папку /mnt и разархивирую туда таровский архив системы.
Меняю некоторые файлы, далее привожу их содержание:
/mnt/etc/cryptsetup-initramfs/conf-hook
cat /mnt/etc/cryptsetup-initramfs/conf-hook
CRYPTSETUP=y
KEYFILE_PATTERN="/boot/*.key"
Файл ключей /root/cryptroot.key копирую в /mnt/boot
/mnt/etc/crypttab
cat /mnt/etc/crypttab
# <target name> <source device>         <key file>      <options>
cryptroot UUID=7aa690ce-08db-4d91-9113-5f9edaf324c1 key=/boot/cryptroot.key luks
/mnt/etc/initramfs-tools/conf.d/resume
cat /mnt/etc/initramfs-tools/conf.d/resume
RESUME=UUID=7aa690ce-08db-4d91-9113-5f9edaf324c1
/mnt/etc/fstab
cat /mnt/etc/fstab
UUID=a7825d81-be8a-41c2-8771-cd5c02b5d8d4 / ext4 errors=remount-ro 0 1
С файлами всё.
Делаю в папку /mnt chroot:
mkdir -vp /mnt/dev/pts
mkdir -vp /mnt/dev/shm
mkdir -vp /mnt/sys

mount -v --bind /dev /mnt/dev
mount -vt devpts devpts /mnt/dev/pts
mount -vt tmpfs shm /mnt/dev/shm
mount -v --bind /proc /mnt/proc
mount -vt sysfs sysfs /mnt/sys

exec chroot /mnt env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ 'PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin /bin/bash --login +h
Далее в chroot смотрю какая версия ядра, в основной системе у меня версия на основной системе немного новее, поэтому для mkinitramfs надо передавать старую версию:
ls /lib/modules
4.9.0-6-amd64

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Создаю рам диск:

mkinitramfs -v -o /boot/initrd.img-4.9.0-6-amd64 4.9.0-6-amd64
Вот вывод этой команды:

Adding module /lib/modules/4.9.0-6-amd64/kernel/fs/mbcache.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/arch/x86/crypto/aes-x86_64.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/crypto/cryptd.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/crypto/ablk_helper.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/arch/x86/crypto/glue_helper.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/crypto/gf128mul.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/crypto/lrw.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/arch/x86/crypto/aesni-intel.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/crypto/padlock-aes.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/crypto/ecb.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/fs/crypto/fscrypto.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/arch/x86/crypto/crc32c-intel.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/crypto/crc32c_generic.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/fs/jbd2/jbd2.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/lib/crc16.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/fs/ext4/ext4.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/scsi/scsi_mod.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/scsi/sd_mod.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/usb/common/usb-common.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/usb/core/usbcore.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/usb/storage/usb-storage.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/usb/storage/uas.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/usb/host/ehci-hcd.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/usb/host/ehci-pci.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/input/evdev.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/input/serio/serio_raw.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/hid/hid.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/hid/hid-generic.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/hid/usbhid/usbhid.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/mmc/core/mmc_core.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/mmc/card/mmc_block.ko
Adding config /etc/initramfs-tools/conf.d/driver-policy
Adding config /etc/initramfs-tools/conf.d/resume
Adding binary-link /sbin/modprobe
Adding binary /bin/kmod
Adding library-link /lib/x86_64-linux-gnu/libc.so.6
Adding library /lib/x86_64-linux-gnu/libc-2.24.so
Adding library-link /lib64/ld-linux-x86-64.so.2
Adding library /lib/x86_64-linux-gnu/ld-2.24.so
Adding binary-link /sbin/rmmod
Adding config /etc/modprobe.d/libpisock9.conf
Adding config /lib/modprobe.d/aliases.conf
Adding config /lib/modprobe.d/fbdev-blacklist.conf
Calling hook brltty
Calling hook cryptroot
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/md/dm-mod.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/md/dm-crypt.ko
Adding binary /sbin/cryptsetup
Adding library-link /lib/x86_64-linux-gnu/libcryptsetup.so.4
Adding library /lib/x86_64-linux-gnu/libcryptsetup.so.4.7.0
Adding library-link /lib/x86_64-linux-gnu/libpopt.so.0
Adding library /lib/x86_64-linux-gnu/libpopt.so.0.0.0
Adding library-link /lib/x86_64-linux-gnu/libuuid.so.1
Adding library /lib/x86_64-linux-gnu/libuuid.so.1.3.0
Adding library /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
Adding library-link /lib/x86_64-linux-gnu/libgcrypt.so.20
Adding library /lib/x86_64-linux-gnu/libgcrypt.so.20.1.6
Adding library-link /lib/x86_64-linux-gnu/librt.so.1
Adding library /lib/x86_64-linux-gnu/librt-2.24.so
Adding library /lib/x86_64-linux-gnu/libselinux.so.1
Adding library-link /lib/x86_64-linux-gnu/libudev.so.1
Adding library /lib/x86_64-linux-gnu/libudev.so.1.6.3
Adding library-link /lib/x86_64-linux-gnu/libpthread.so.0
Adding library /lib/x86_64-linux-gnu/libpthread-2.24.so
Adding library-link /lib/x86_64-linux-gnu/libm.so.6
Adding library /lib/x86_64-linux-gnu/libm-2.24.so
Adding library-link /lib/x86_64-linux-gnu/libgpg-error.so.0
Adding library /lib/x86_64-linux-gnu/libgpg-error.so.0.21.0
Adding library-link /lib/x86_64-linux-gnu/libpcre.so.3
Adding library /lib/x86_64-linux-gnu/libpcre.so.3.13.3
Adding library-link /lib/x86_64-linux-gnu/libdl.so.2
Adding library /lib/x86_64-linux-gnu/libdl-2.24.so
Adding binary /sbin/dmsetup
Adding binary /lib/cryptsetup/askpass
Calling hook cryptroot-unlock
Calling hook fsck
Adding binary /sbin/fsck
Adding library-link /lib/x86_64-linux-gnu/libmount.so.1
Adding library /lib/x86_64-linux-gnu/libmount.so.1.1.0
Adding library-link /lib/x86_64-linux-gnu/libblkid.so.1
Adding library /lib/x86_64-linux-gnu/libblkid.so.1.1.0
Adding binary /sbin/logsave
Adding binary-link /sbin/fsck.ext4
Adding binary /sbin/e2fsck
Adding library-link /lib/x86_64-linux-gnu/libext2fs.so.2
Adding library /lib/x86_64-linux-gnu/libext2fs.so.2.4
Adding library-link /lib/x86_64-linux-gnu/libcom_err.so.2
Adding library /lib/x86_64-linux-gnu/libcom_err.so.2.1
Adding library-link /lib/x86_64-linux-gnu/libe2p.so.2
Adding library /lib/x86_64-linux-gnu/libe2p.so.2.3
Calling hook fuse
Adding binary /sbin/mount.fuse
Adding module /lib/modules/4.9.0-6-amd64/kernel/fs/fuse/fuse.ko
Calling hook keymap
Adding binary /bin/loadkeys
Calling hook kmod
Calling hook resume
Calling hook thermal
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/acpi/fan.ko
Adding module /lib/modules/4.9.0-6-amd64/kernel/drivers/acpi/thermal.ko
Calling hook udev
Adding binary /sbin/udevd
Adding library-link /lib/x86_64-linux-gnu/libkmod.so.2
Adding library /lib/x86_64-linux-gnu/libkmod.so.2.3.1
Adding binary /bin/udevadm
Adding binary /lib/udev/ata_id
Adding binary /lib/udev/scsi_id
Adding binary /sbin/blkid
Calling hook zz-busybox
Adding binary /bin/busybox
Calling hook cryptpassdev
Calling hook cryptopensc
Calling hook cryptopenct
Calling hook cryptkeyctl
Calling hook cryptgnupg
Calling hook ntfs_3g
Adding binary /bin/ntfs-3g
Adding library-link /lib/x86_64-linux-gnu/libntfs-3g.so.871
Adding library /lib/x86_64-linux-gnu/libntfs-3g.so.871.0.0
Calling hook dmsetup
Calling hook klibc-utils
Building cpio /boot/initrd.img-4.9.0-6-amd64 initramfs

Вроде всё делаю как и на флешке но папки с ключом в рамдиске нет. Рамдиск как и писал ранее разбираю кидаю туда папку с ключом, ещё пару файлов и собираю рамдиск.
Наверное делаю что то не так, если кто знает, подскажите пожалуйста как правильно.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Далее генерирую конфиг для груба:

grub-mkconfig -o /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 ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  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 loadfont unicode ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=ru_RU
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
  set timeout=30
else
  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
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
        set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Devuan GNU/Linux' --class devuan --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-a7825d81-be8a-41c2-8771-cd5c02b5d8d4' {
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod cryptodisk
        insmod luks
        insmod gcry_rijndael
        insmod gcry_rijndael
        insmod gcry_sha256
        insmod ext2
        set root='cryptouuid/7aa690ce08db4d9191135f9edaf324c1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint='cryptouuid/7aa690ce08db4d9191135f9edaf324c1'  a7825d81-be8a-41c2-8771-cd5c02b5d8d4
        else
          search --no-floppy --fs-uuid --set=root a7825d81-be8a-41c2-8771-cd5c02b5d8d4
        fi
        echo    'Загружается Linux 4.9.0-6-amd64 …'
        linux   /boot/vmlinuz-4.9.0-6-amd64 root=UUID=a7825d81-be8a-41c2-8771-cd5c02b5d8d4 ro  quiet
        echo    'Загружается начальный виртуальный диск …'
        initrd  /boot/initrd.img-4.9.0-6-amd64
}
submenu 'Дополнительные параметры для Devuan GNU/Linux' $menuentry_id_option 'gnulinux-advanced-a7825d81-be8a-41c2-8771-cd5c02b5d8d4' {
        menuentry 'Devuan GNU/Linux, с Linux 4.9.0-6-amd64' --class devuan --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-6-amd64-advanced-a7825d81-be8a-41c2-8771-cd5c02b5d8d4' {
                load_video
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod cryptodisk
                insmod luks
                insmod gcry_rijndael
                insmod gcry_rijndael
                insmod gcry_sha256
                insmod ext2
                set root='cryptouuid/7aa690ce08db4d9191135f9edaf324c1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint='cryptouuid/7aa690ce08db4d9191135f9edaf324c1'  a7825d81-be8a-41c2-8771-cd5c02b5d8d4
                else
                  search --no-floppy --fs-uuid --set=root a7825d81-be8a-41c2-8771-cd5c02b5d8d4
                fi
                echo    'Загружается Linux 4.9.0-6-amd64 …'
                linux   /boot/vmlinuz-4.9.0-6-amd64 root=UUID=a7825d81-be8a-41c2-8771-cd5c02b5d8d4 ro  quiet
                echo    'Загружается начальный виртуальный диск …'
                initrd  /boot/initrd.img-4.9.0-6-amd64
        }
        menuentry 'Devuan GNU/Linux, with Linux 4.9.0-6-amd64 (recovery mode)' --class devuan --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-6-amd64-recovery-a7825d81-be8a-41c2-8771-cd5c02b5d8d4' {
                load_video
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod cryptodisk
                insmod luks
                insmod gcry_rijndael
                insmod gcry_rijndael
                insmod gcry_sha256
                insmod ext2
                set root='cryptouuid/7aa690ce08db4d9191135f9edaf324c1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint='cryptouuid/7aa690ce08db4d9191135f9edaf324c1'  a7825d81-be8a-41c2-8771-cd5c02b5d8d4
                else
                  search --no-floppy --fs-uuid --set=root a7825d81-be8a-41c2-8771-cd5c02b5d8d4
                fi
                echo    'Загружается Linux 4.9.0-6-amd64 …'
                linux   /boot/vmlinuz-4.9.0-6-amd64 root=UUID=a7825d81-be8a-41c2-8771-cd5c02b5d8d81-be8a-41c2-8771-cd5c02b5d8d4 ro single
                echo    'Загружается начальный виртуальный диск …'
                initrd  /boot/initrd.img-4.9.0-6-amd64
        }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###
v4567 ★★
() автор топика
Ответ на: комментарий от v4567
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Devuan GNU/Linux ascii (на /dev/sda2)' --class devuan --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-18205b11-1ba8-414f-8706-ce7c0f46bc6c' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2  18205b11-1ba8-414f-8706-ce7c0f46bc6c
        else
          search --no-floppy --fs-uuid --set=root 18205b11-1ba8-414f-8706-ce7c0f46bc6c
        fi
        linux /boot/vmlinuz-4.9.0-11-amd64 root=UUID=18205b11-1ba8-414f-8706-ce7c0f46bc6c ro acpi_osi=Linux quiet splash acpi_backlight=vendor
        initrd /boot/initrd.img-4.9.0-11-amd64
}
submenu 'Дополнительные параметры для Devuan GNU/Linux ascii (на /dev/sda2)' $menuentry_id_option 'osprober-gnulinux-advanced-18205b11-1ba8-414f-8706-ce7c0f46bc6c' {
        menuentry 'Devuan GNU/Linux (на /dev/sda2)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.9.0-11-amd64--18205b11-1ba8-414f-8706-ce7c0f46bc6c' {
                insmod part_msdos
                insmod ext2
                set root='hd0,msdos2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2  18205b11-1ba8-414f-8706-ce7c0f46bc6c  ro acpi_osi=Linux quiet splash acpi_backlight=vendor
                else
                  search --no-floppy --fs-uuid --set=root 18205b11-1ba8-414f-8706-ce7c0f46bc6c
                fi
                linux /boot/vmlinuz-4.9.0-11-amd64 root=UUID=18205b11-1ba8-414f-8706-ce7c0f46bc6c
                initrd /boot/initrd.img-4.9.0-11-amd64
        }
        menuentry 'Devuan GNU/Linux, с Linux 4.9.0-11-amd64 (на /dev/sda2)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.9.0-11-amd64--18205b11-1ba8-414f-8706-ce7c0f46bc6c' {
                insmod part_msdos
                insmod ext2
                set root='hd0,msdos2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2  18205b11-1ba8-414f-8706-ce7c0f46bc6c
                else
                  search --no-floppy --fs-uuid --set=root 18205b11-1ba8-414f-8706-ce7c0f46bc6c
                fi
                linux /boot/vmlinuz-4.9.0-11-amd64 root=UUID=18205b11-1ba8-414f-8706-ce7c0f46bc6c ro acpi_osi=Linux quiet splash acpi_backlight=vendor
                initrd /boot/initrd.img-4.9.0-11-amd64
        }
        menuentry 'Devuan GNU/Linux, with Linux 4.9.0-11-amd64 (recovery mode) (на /dev/sda2)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.9.0-11-amd64-root=UUID=18205b11-1ba8-414f-8706-ce7c0f46bc6c ro single acpi_osi=Linux-18205b11-1ba8-414f-8706-ce7c0f46bc6c' {
                insmod part_msdos
                insmod ext2
                set root='hd0,msdos2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2  18205b11-1ba8-414f-8706-ce7c0f46bc6c
                else
                  search --no-floppy --fs-uuid --set=root 18205b11-1ba8-414f-8706-ce7c0f46bc6c
                fi
                linux /boot/vmlinuz-4.9.0-11-amd64 root=UUID=18205b11-1ba8-414f-8706-ce7c0f46bc6c ro single acpi_osi=Linux
                initrd /boot/initrd.img-4.9.0-11-amd64
        }
}

### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###

### 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 ###

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

В нём по дисковым uuid-ам вроде всё нормально, как и должно быть.
Выхожу с chroot и отключаю папки dev и т.д.

umount -v /mnt/sys
umount -v /mnt/proc
umount -v /mnt/dev/shm
umount -v /mnt/dev/pts
umount -v /mnt/dev
Далее на флешку /dev/sdb1 копирую папку /mnt/boot и инсталлирую загрузчик командой:
grub-install --root-directory=/mnt /dev/sdb
Отмонтирую папку /mnt. Закрываю шифрованную файловую систему:
cryptsetup luksClose /dev/mapper/cryptroot
Перезагружаюсь и загружаюсь c флешки /dev/sdb1 и получаю вот какие ошибки:
Ошибка: no such device: a7825d81-be8a-41c2-8771-cd5c02b5d8d4
Загружается Linux 4.9.0-6-amd64
Ошибка диск "cryptouuid/7aa690ce-08db-4d91-9113-5f9edaf324c1 не найден"
Загружается начальный виртуальный диск....
Ошибка: сначала вам нужно загрузить ядро.
Нажмите любую клавишу для продолжения...
Нажимая любую клавишу попадаю опять в меню выбора груба.
Приведу ещё раз вывод команды blkid:
blkid
/dev/sda1: UUID="c984a3a8-781b-426e-9cfe-c542564138af" TYPE="swap" PARTUUID="0df04881-01"
/dev/sda2: LABEL="system" UUID="18205b11-1ba8-414f-8706-ce7c0f46bc6c" TYPE="ext4" PARTUUID="0df04881-02"
/dev/sdc: UUID="7aa690ce-08db-4d91-9113-5f9edaf324c1" TYPE="crypto_LUKS"
/dev/sdb1: UUID="d24c975f-d3d8-411c-a108-5fbf7d03c1a3" TYPE="ext4" PARTUUID="46db6a6d-01"
/dev/mapper/cryptroot: UUID="a7825d81-be8a-41c2-8771-cd5c02b5d8d4" TYPE="ext4"
Если кто знает как побороть эти ошибки и собрать правильно рамдиск для зашифрованной системы, подскажите пожалуйста! Очень нужно!

v4567 ★★
() автор топика
Последнее исправление: v4567 (всего исправлений: 1)
Ответ на: комментарий от v4567
root=/dev/mapper/cryptroot


Из UUID не ясно, что этот девайс необходимо ждать.

aidaho ★★★★★
()
Ответ на: комментарий от undef

aidaho и undef огромное спасибо! Сейчас буду пробовать, о результатах отпишусь.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Ошибка: no such device: a7825d81-be8a-41c2-8771-cd5c02b5d8d4
Загружается Linux 4.9.0-6-amd64
Ошибка диск «cryptouuid/7aa690ce-08db-4d91-9113-5f9edaf324c1 не найден»
Загружается начальный виртуальный диск....
Ошибка: сначала вам нужно загрузить ядро.

Загрузка же с нешифрованого /boot на флешке? Похоже, конфиг груба для случая, когда /boot лежит на шифрованом корне. После чрута попробуйте сразу флешку монтировать в /boot

undef ★★
()
Ответ на: комментарий от v4567

undef Поправил файл /etc/crypttab, заменив key=/boot/cryptroot.key на /boot/cryptroot.key и пересобрал рамдиск. Папка cryptroot-keyfiles с ключом cryptroot.key появилась! Уже хорошо, но все остальные файлы такие же как и в предыдущих рамдисках, где этой папки не было.

В конфиге груба UUID поменял на /dev/mapper/cryptroot Попробовал загрузиться, но ничего не изменилось:

Ошибка: no such device: a7825d81-be8a-41c2-8771-cd5c02b5d8d4
Загружается Linux 4.9.0-6-amd64
Ошибка диск "cryptouuid/7aa690ce-08db-4d91-9113-5f9edaf324c1 не найден"
Загружается начальный виртуальный диск....
Ошибка: сначала вам нужно загрузить ядро.
Нажмите любую клавишу для продолжения...

Флешка не зашифрованна, на ней только папка /boot с рамдиском, ядром, конфигом и фалами груба. В биосе загружаюсь с флешки и она грузится, груб отрабатывает, так как если глянуть конфиг груба, то там будет 4 записи, 2 для шифрованного диска и 2 для основной системы. На основной системе если грузиться с её груба, то будет 2 записи. Так вот флешка грузится и если в её меню груба выбрать загрузку основной системы, то она загружается нормально.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Меня смущает вот какой момент.

Если в распакованном рамдске поискать строку

--key-file

То она находится два раза в скрипте: /scripts/local-top/cryptroot и два раза написано там вот что:

--key-file=-

В мане по cryptsetup пишут, что минус после равно означает ввод пароля, то есть для создания виртуального устройства надо вводить пароль, а не подкидывать ключ.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Какой UUID (в параметре - RESUME=UUID=) писать в файле: /mnt/etc/initramfs-tools/conf.d/resume для создания рамдиска?

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Вот что в рамдиске содержит файл: /conf/conf.d/cryptroot

cat /conf/conf.d/cryptroot
target=cryptroot,source=UUID=7aa690ce-08db-4d91-9113-5f9edaf324c1,rootdev,keyscript=cat,key=/cryptroot-keyfiles/cryptroot.key

Вроде бы всё правильно. То есть все UUID-ды прописал правильно.

v4567 ★★
() автор топика
Последнее исправление: v4567 (всего исправлений: 1)
Ответ на: комментарий от v4567

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

load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod cryptodisk
        insmod luks
        insmod gcry_rijndael
        insmod gcry_rijndael
        insmod gcry_sha256
        insmod ext2
        set root='cryptouuid/7aa690ce08db4d9191135f9edaf324c1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint='cryptouuid/7aa690ce08db4d9191135f9edaf324c1'  a7825d81-be8a-41c2-8771-cd5c02b5d8d4
        else
          search --no-floppy --fs-uuid --set=root a7825d81-be8a-41c2-8771-cd5c02b5d8d4
        fi
        echo    'Загружается Linux 4.9.0-6-amd64 …'
        linux   /boot/vmlinuz-4.9.0-6-amd64 root=UUID=a7825d81-be8a-41c2-8771-cd5c02b5d8d4 ro  quiet
        echo    'Загружается начальный виртуальный диск …'
        initrd  /boot/initrd.img-4.9.0-6-amd64

поменять на

insmod part_msdos
        insmod ext2
        set root='hd0,msdos2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2  d24c975f-d3d8-411c-a108-5fbf7d03c1a3<UUID флешки>
        else
          search --no-floppy --fs-uuid --set=root d24c975f-d3d8-411c-a108-5fbf7d03c1a3<UUID флешки>
        fi
        linux /boot/vmlinuz-<с флешки> root=UUID=a7825d81-be8a-41c2-8771-cd5c02b5d8d4
        initrd /boot/initrd.img-<с флешки>

undef ★★
()
Ответ на: комментарий от undef

через cmd груба. груб пытается найти /boot на крипторазделе

Скорее всего нет. Так как на крипторазделе /boot переименовал в /orig и ничего не поменялось. При этом с этого меню я загружаю основную систему.

a7825d81-be8a-41c2-8771-cd5c02b5d8d4

Это UUID криптораздела, везде в grub.cfg на флешке переименовал в /dev/mapper/cryptroot
И вот, что получаю:

Ошибка: no such device: /dev/mapper/cryptroot
Загружается Linux 4.9.0-6-amd64
Ошибка диск "cryptouuid/7aa690ce-08db-4d91-9113-5f9edaf324c1 не найден"
Загружается начальный виртуальный диск....
Ошибка: сначала вам нужно загрузить ядро.
Нажмите любую клавишу для продолжения...

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

И ядро то же с флешки. Сейчас поменяю UUID не криптованный на UUID флешки как Вы пишите, а криптованный оставлю /dev/mapper/cryptroot

Скорее всего ошибка в этом, так как груб не может найти рамдиск и ядро, лезет на криптованный раздел который прописан, а он должен лезть на флешку и из нё брать рамдиск и ядро, а рам диск уже создаст устройство /dev/mapper/cryptroot

Сейчас попробую.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Скорее вот так правильно


menuentry 'Devuan GNU/Linux ascii' --class devuan --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-18205b11-1ba8-414f-8706-ce7c0f46bc6c' {
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos1' #выбираем флешку
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1  d24c975f-d3d8-411c-a108-5fbf7d03c1a3 #UUID флешки
        else
          search --no-floppy --fs-uuid --set=root d24c975f-d3d8-411c-a108-5fbf7d03c1a3
        fi
        linux /boot/vmlinuz-4.9.0-11-amd64 root=UUID=a7825d81-be8a-41c2-8771-cd5c02b5d8d4
        initrd /boot/initrd.img-4.9.0-11-amd64
}
[\code]

undef ★★
()
Ответ на: комментарий от undef

УРА!!!!!
Получилось!
Фух.
undef ОГРОМНОЕ СПАСИБО! aidaho ТО ЖЕ ОГРОМНОЕ СПАСИБО!

Ваш grub.cfg сработал. Последний вариант, вроде бы такой же как и тот на который я поменял, в котором сделал правки.
Сейчас попробую /dev/mapper/cryptroot поменять на UUID.
Как то я не обратил внимания на то, что --set=root надо прописывать флешки, а ядру передавать UUID крипто диска - вернее UUID виртуального устройства /dev/mapper/cryptroot, а для создания рамдиска в /etc/initramfs-tools/conf.d/resume UUID отформатированного в crypto_luks диска - RESUME=UUID=7aa690ce-08db-4d91-9113-5f9edaf324c1 на котором я создаю при помощи ключа виртуальное устройство /dev/mapper/cryptroot

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Теперь сделаю вход по всовыванию этой флешки, на ней то же будет ключ. Я как то такое делал. И можно к ключам от серверной прикреплять флешку.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

И на десктопе надо такое сделать. Особенно на ноутбуке - крипто диск.
Теперь можно смело терять ноутбук.
По флешке вход после блокировки или выхода из графики, такое не делал.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Увидел, конфиги отличаются версией ядра 4.9.0-11-amd64. У меня на флешке старая 4.9.0-6-amd64 и в grub.cfg старая прописана, со старой всё работает.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Проверил, если заменить /dev/mapper/cryptroot на его UUID a7825d81-be8a-41c2-8771-cd5c02b5d8d4 то всё работает.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Похоже, на зашифрованом разделе был /boot. grub-mkconfig из-за этого создавал конфиг для загрузки с полностью зашифрованого диска.

RESUME=UUID=7aa690ce-08db-4d91-9113-5f9edaf324c1

Для спячки нужен swap раздел или файл. Если предположить файл, то указывать устройство, где файл лежит, (a7825d81-be8a-41c2-8771-cd5c02b5d8d4) и смещение RESUME_OFFSET.

undef ★★
()
Ответ на: комментарий от v4567

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

undef ★★
()
Ответ на: комментарий от undef

Похоже, на зашифрованом разделе был /boot. grub-mkconfig из-за этого создавал конфиг для загрузки с полностью зашифрованого диска.

Да так и было.

Для спячки нужен swap раздел или файл.

Я в спячку не отправляю. Вот поставлю ssd на ноутбук, будет быстрее грузиться. Так что пока мне swap не нужен.

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

Я весь диск и собираюсь зашифровать. По поводу пароля... попробую пока по флешке. Не охота каждый раз пароль набирать, пока кажется, что флешку каждый раз комфортнее вставлять и вынимать. По поводу разъёмов, посмотрю, если всё будет так плохо: развалятся быстро разъёмы, надоесть всё время вставлять флешку, практика покажет, что легче набрать пароль, чем вставить флешку, тогда перейду на пароль.

Кстати долго провозился с инсталляцией груба на флешку, из основной системы не chroot-тясь на флешку так как там кроме папки /boot ничего нет! делал так:

grub-install /dev/sdb1

Раньше всё работало, а сейчас груб прочитывал конфиг основной системы, потом разобрался, что надо вот так:
grub-install --root-directory=/mnt /dev/sdb

Как раньше работало не знаю.
Интересно, можно как то командой сгенерировать конфиг для флешки, что бы его не править руками?

v4567 ★★
() автор топика
Последнее исправление: v4567 (всего исправлений: 1)
Ответ на: комментарий от v4567

Я в спячку не отправляю.

Тогда RESUME можно закомментировать. Все равно не взлетит

можно как то командой сгенерировать конфиг для флешки

https://www.gnu.org/software/grub/manual/grub/ У вас конфиг не совсем типовой. Может в доках что-то есть. Ну и less /usr/sbin/grub-mkconfig.

А насчет как оно работало? Похоже на флешке отрабатывал только начальный загрузчик, который подтягивал /boot с основной системы с конфигом и ядром. На крипторазделе, естесно, все потухло. Если бы флешка была подмонтирована в чруте, конфиг собрался бы по-другому. Скрипт увидел бы, что бут на другом нешифрованом диске, и grub не стал бы пытаться расшифровать диск. Но тогда бы, скорее всего, в конфиг не попала основная система.

grub.cfg создается скриптами, которые на основе эвристик пытаются угадать конфигурацию. Иногда получается не очень. Возможно, для данного случая единственный способ - самописный конфиг, обновляемый вручную. Или писать свой mkconfig.

undef ★★
()
Ответ на: комментарий от undef

undef, aidaho
Какая-то чертовщина с этим крипто диском.
Ещё до того как начал делать крипто диск, сделал таровский архив основной системы и скинул его на внешний носитель, на этой системе было ядро 4.9.0-6-amd64, система devuan 2.0.0 ascii. В этом архиве были разные старые файлы документов и т.д. Через некоторое время обновил ядро до версии 4.9.0-11-amd64.
Потом на внешнем новом чистом накопителе - ssd создал зашифрованный раздел и распаковал на неё архив системы сделанный ранее со старой версией ядра 4.9.0-6-amd64. Работал с системным накопителем - тот что в ноутбуке с версией ядра 4.9.0-11-amd64, внешний ssd - шифрованный с версией ядра 4.9.0-6-amd64 и флешка - для загрузки и папкой /boot и ядром 4.9.0-6-amd64. Все UUID-ды дисков были представлены выше.
Последняя проблема была с загрузкой, но как подсказал undef поставил в конфиге груба hd0,msdos2 (хотя в последствии не понял почему так, как потом undef написал правельнее было вот так hd1,msdos1), но всё заработало и с hd0,msdos2 Отлично загрузился и криптодиск - ssd отлично работал. Во время работы рамдиска он писал что нашёл три накопителя: основной системный - тот что в ноутбуке, внешний шифрованный - ssd и загрузочную флешку.
Потом думаю почищу основную систему от мусора: старые документы и т. д. сделаю таровский архив и на криптодиск распакую уже её и ssd вставлю в нуотбук. Так и сделал, при этом архив со старой системой удалил, (на отдельном выносном накопителе было ещё старое ядро 4.9.0-6-amd64 с модулями) его то же удалил и подмантировав шифрованный диск командой rm на нём всё удалил. Распаковал на него архив с новой почищенной системой - с ядром 4.9.0-11-amd64, при этом сам шифрованный диск я заново не переделывал, он остался прежним с прежним ключом, все UUID-ды накопителей остались прежними. Далее сделал chroot в штфрованный диск, создал новый рамдиск передав ему в параметрах 4.9.0-11-amd64, сгенерировал grub.cfg, /boot скопировал на флешку внёс нужные правки в grub.cfg.
Загружаюсь и не работает!
grub отрабатывает правильно!

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

рамдиск наверное создаётся то же правильно, ключ лежит в нём в папке /cryptroot-keyfles При работе рамдиска выводятся сообщения:

cryptsetup (cryptroot): lvm is not available

Они и раньше выводились, с самого начала вывелось два сообщения потом рамдиск нашёл три накопителя и далее система загрузилась нормально. Сейчас почему то рамдиск нашёл только два накопителя, тот что в ноутбуке он не увидел. В общем в конце выдал вот что:
ALERT! cryptsourse=UUID=7aa690ce-08db-4d91-9113-5f9edaf324c1 does not exist.
Chek or missing modules, devices Dropping to a shell, will skip 7aa690ce-08db-4d91-9113-5f9edaf324c1 if you can't fix.

И выдал своё приглашение командной строки. В ней по команде blkid я прекрасно вижу два диска: шифрованный и флешку, того что в ноутбуке нету.
По команде cryptsetup luksOpen прекрасно создаю виртуальное устройство /dev/mapper/cryptroot правда смонтировать его в папку не могу, пишет нет файла или папки, флешку то же смонтировать не могу пишет нет файла или папки.
По команде lsmod модули dm_crypt и dm_mod есть и они загружены. Вот только по команде modinfo dm_crypt в отличии от основной системы в выводе нет параметров:
retpoline: Y
intree: Y

В основной системе из этого шифрованного диска создаётся точно такое же виртуальное устройство /dev/mapper/cryptroot и оно прекрасно монтируется.
UUID все как и раньше и в рамдиске они такие же.
Не понятно почему рамдиск не видит основную систему - диск который в ноутбуке?
Я уже с CD диска взял старое ядро 4.9.0-6-amd64 и сделал всё с ним, результат тот же - не работает. Кстати шифрованный диск делал при новом ядре 4.9.0-11-amd64, а первый раз рамдиск был со старым ядром 4.9.0-6-amd64 и работало.
Что сейчас произошло не понятно....?

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Получилось.
Разобрался в чём была причина не работы.
Я делаю chroot в примонтированное виртуальное устройство шифрованного диска: /dev/mapper/cryptroot и там запускаю самописный скрипт, который всё делает, вносит записи в файлы, создаёт рамдиск и grub.cfg, так вот в этом скрипте была ошибка. В файл: /etc/crypttab заносилась вот такая запись:

cat /mnt/etc/crypttab
# <target name> <source device>         <key file>      <options>
cryptroot UUID=UUID=7aa690ce-08db-4d91-9113-5f9edaf324c1 key=/boot/cryptroot.key luks

Два раза UUID, в результате рамдиск не мог найти диск: UUID=7aa690ce-08db-4d91-9113-5f9edaf324c1, (один UUID отбрасывался, а один получаетя оставался). Если бы был один диск то он бы находил 7aa690ce-08db-4d91-9113-5f9edaf324c1
Вот строки моего скрипта:
uuid=$(blkid $1 -o export | grep UUID | grep -v PARTUUID)
echo "cryptroot UUID=$uuid /boot/cryptroot.key luks" > /etc/crypttab

$1 - это в параметрах скрипту передавал шифрованный диск.
Надо вот так:
uuid=$(blkid $1 -o export | grep UUID | grep -v PARTUUID)
echo "cryptroot $uuid /boot/cryptroot.key luks" > /etc/crypttab

У меня сохранился старый скрипт когда всё работало и там неправильно сделано, но при этом в файле: /etc/crypttab была првильная запись с одним UUID. Не помню уже может руками вносил.
На разбирательство не работы, в результате которого нашёл эту ошибку, потратил полных два дня с утра до глубокой ночи.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Небольшое дополнение, может быть кому-то пригодится.
В зависимости от того как во время создания рам-диска подключен накопитель, по usb или sata, скрипт mkinitramfs собирает рам-диск с разными модулями ядра. Если накопитель подключен по usb то в рам-диске не будет модулей: libahci.ko, libata.ko и ahci.ko. Если его потом подключить по sata то загрузки операционной системы не будет, рам-диск не увидит накопитель подключенный по sata и наоборот, если подключен по sata, то не будет модулей: uas.ko, usb-storage.ko, если его впоследствии подключить по usb, то работать не будет. Поэтому надо принудительно указать какие модули необходимо брать, это указывается в файле: /etc/initramfs-tools/modules Если рам-диск создаётся на шифрованном диске, то модули: dm_crypt и dm_mod не обязательно указывать в этом файле они будут и так взяты. Я думал mkinitramfs берёт модули которые запустились и находятся в оперативной памяти, делал сhroot из запущенной системы которая была загружена из накопителя подключённого по sata, но модулей для sata в рам-диске не оказалось.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

[user]aidaho[/user], [user]undef[/user] вам ещё раз огромное спасибо за помощь!

Возник вот ещё какой вопрос.

Например я шифрую диск по паролю, создаю рам диск, загружаюсь, работаю и т.д. Это я знаю как сделать. Потом надоедает каждый раз вводить пароль, можно загрузившись с другого носителя создать таровский архив системы и всё сделать по ключу. А можно ли как то пароль преобразовать в ключ? Как пересобрать рамдиск в таком случае я знаю и сделать соответствующие настройки то же знаю, а вот как из пароля сделать ключ, что бы не грузиться с другого носителя и не создавать архив, потом вновь не шифровать с использованием ключа и т.д. а просто преобразовать пароль в ключ?

v4567 ★★
() автор топика
Последнее исправление: v4567 (всего исправлений: 3)
Ответ на: комментарий от v4567

aidaho,  undef

Или наоборот преобразовать ключ, если он маленький - 10 - 20 байт в пароль. Например загружаюсь по ключу вставляя флешку, через год разъём развалился, преобразовал ключ в пароль и загружаюсь по паролю.

v4567 ★★
() автор топика
Последнее исправление: v4567 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.