LINUX.ORG.RU

efi, btrfs на luks2 с encrypted boot partition

 , ,


0

1

Есть ли в вменяемый гайд как можно сделать следующую конфигурацию:

раздел /efi или /boot/efi с fat32 для минимально необходимого набора файлов загрузчика

раздел luks2 на котором будет соответственно btrfs с сабволумами - как вариант без отдельного /boot (т.е. в составе корневого) или как отдельный сабволум

согласно arhwiki такое можно сделать c grub2 в качестве загрузчика но только для luks первой версии, со второй он не совместим.

во всех остальных гайдах вообще /boot в качестве отдельного раздела вне luks т.е. не шифрован.

Вроде бы как желаемый мной эффект можно получить на systemd-boot но подробного описания я не нашёл


encrypted boot partition

Вроде бы как желаемый мной эффект можно получить на systemd-boot

Нельзя.

sudopacman ★★★★★
()

Можно, на не зашифрованном efi разделе будет лежать efi файл Grub, остальная часть загрузчика может быть размещена на зашифрованном boot. В luks можно использовать 2 версию, но только pbdkf2, вариант argoni пока не поддерживается.

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

У меня так сделано. Не уверен насчет гайда, установка обычная, только раздел efi монтируется в /efi и хук pacmanа пересобирает туда ядро после апдейтов для efistub. grub не использую, лишняя сущность. можно дополнительно подписать для secure boot

/dev/sdb1     2048   1050623   1048576   512M EFI
/dev/sdb2  1050624 468860927 467810304 223,1G Файловая система Linux
[Trigger]
Type = Package
Operation = Upgrade
Operation = Install
Target = linux*
Target = amd-ucode

[Action]
Description = Updating EFI kernel images
When = PostTransaction
Exec = /bin/bash /usr/local/bin/build_kernel.sh

#!/bin/bash

TARGET=/efi
BOOTDIR=/boot
UCODE=$BOOTDIR/amd-ucode.img
EFISTUB=/usr/lib/systemd/boot/efi/linuxx64.efi.stub

echo "Updating EFI kernels..."

for k in $BOOTDIR/vmlinuz*; do
        NAME=$(basename $k|sed 's/vmlinuz-//')
        echo "  Building $NAME"
        INITRD="$BOOTDIR/initramfs-$NAME.img"

        if [ -f "$UCODE" ]; then
                cat "$UCODE" "$INITRD" > /tmp/initrd.bin
                INITRDFILE=/tmp/initrd.bin
        else
                # Do not fail on AMD systems
                echo "    Intel microcode not found. Skipping."
                INITRDFILE="$INITRD"
        fi

        # Check for custom command line for the kernel.
        CMDLINE="$BOOTDIR/cmdline-$NAME.txt"
        if [ -f "$CMDLINE" ]; then
                echo "    Using custom command line $CMDLINE"
        else
                CMDLINE="$BOOTDIR/cmdline.txt"
                if [ ! -f "$CMDLINE" ]; then
                        echo "CMDLINE missing. Extracting from running kernel..."
                        cat /proc/cmdline |sed 's/BOOT_IMAGE=[^ ]* \?//' > "$CMDLINE"
                fi
        fi

        objcopy \
            --add-section .osrel="/usr/lib/os-release" --change-section-vma .osrel=0x20000 \
            --add-section .cmdline="$CMDLINE" --change-section-vma .cmdline=0x30000 \
            --add-section .linux="$k" --change-section-vma .linux=0x40000 \
            --add-section .initrd="$INITRDFILE" --change-section-vma .initrd=0x3000000 \
            "$EFISTUB" "$TARGET/$NAME.efi"
done

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

mkinitcpio.conf

BINARIES=("/usr/bin/btrfs")
HOOKS=(base systemd autodetect modconf block sd-encrypt filesystems keyboard fsck)

/boot/cmdline.txt

rd.luks.name=sdfsdf4d-sdfsd-sdfs-9d06-1234539ad16f=crypt root=/dev/mapper/crypt rootflags=subvol=@ rw quiet

caro
()
Ответ на: комментарий от tm4ig

Нужно знать структуру диска, параметры luks и как ставится Grub.

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

Первое - uuid luks контейнера. Второе - путь к разделу с ним с указанием названия виртуального раздела после его расшифровки. Необходимые параметры ядра зависят от используемого initramfs.

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

в /efi лежит только linux.efi, всё остальное на luks2/btrfs. посмотри в исходник, что я выложил.

caro
()
Последнее исправление: caro (всего исправлений: 1)
13 марта 2024 г.
Ответ на: комментарий от tm4ig

Это параметры ядра при хуке systemd вместо udev. Отличается тем, что работает только при хуке systemd, а второй работает только при хуке udev

mio_linux
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.