스패닝-lvm 및 LUKS를 사용한 systemd-boot

스패닝-lvm 및 LUKS를 사용한 systemd-boot

그래서 다음과 같은 레이아웃으로 시스템을 설치했습니다.

  • 이라는 두 개의 NVME 드라이브에 걸쳐 있는 LV를 생성했습니다 spanned_vg-spanned_lv.
  • LUKS로 LV를 포맷하고 다음과 같이 매핑했습니다.cryptroot
  • cryptroot가상 드라이브에는 루트 파티션으로 사용할 파티션이 하나만 있습니다.
  • 부팅은 드라이브 중 하나에 있는 별도의 파티션입니다.

lsblk:

NAME                      MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
loop0                       7:0    0   3.1G  1 loop  /mnt/livecd
sda                         8:0    1 119.3G  0 disk  
├─sda1                      8:1    1 119.2G  0 part  
│ └─ventoy                253:0    0   3.2G  1 dm    /mnt/cdrom
└─sda2                      8:2    1    32M  0 part  
nvme1n1                   259:0    0 476.9G  0 disk  
└─nvme1n1p1               259:1    0 476.9G  0 part  
  └─spanned_vg-spanned_lv 253:1    0   1.4T  0 lvm   
    └─cryptroot           253:2    0   1.4T  0 crypt /mnt/gentoo
nvme0n1                   259:2    0 931.5G  0 disk  
├─nvme0n1p1               259:3    0   512M  0 part  /mnt/gentoo/boot
└─nvme0n1p2               259:4    0   931G  0 part  
  └─spanned_vg-spanned_lv 253:1    0   1.4T  0 lvm   
    └─cryptroot           253:2    0   1.4T  0 crypt /mnt/gentoo

나는 luks의 아치에서 systemd-boot를 많이 사용했지만 LVM이나 gentoo에서는 한 번도 사용하지 않았습니다(문서에서는 약간 다른 구성 항목을 사용하는 것 같습니다). 그래서 약간 당황스럽습니다. 나는 온라인에서 찾은 몇 가지 예를 시도해 보았고 지금까지 로더 항목을 얻었습니다.

tile Gentoo Linux
efi /vmlinuz-6.1.41-gentoo-x86_64
initrd /initramfs-6.1.41-gentoo-x86_64.img
options luks.name=/dev/mapper/spanned_vg-spanned_lv=cryptroot root=/dev/mapper/cryptroot init=/usr/lib/systemd/systemd ro dolvm

하지만 부팅하려고 하면 루트 디렉터리를 찾을 수 없기 때문에 커널 패닉이 발생합니다.

따라서 다음 중 하나가 정확하다고 생각합니다.

  • 평소 사용하던 가상 디스크 생성을 엉망으로 만들었기 mkinitcpio때문에 잘못 사용하고 있을 가능성도 있습니다 genkernel. 내 genkernel.conf것은:
INSTALL="yes"
NOCOLOR="false"
LVM="yes"
LUKS="yes"
MICROCODE="amd"
GK_SHARE="${GK_SHARE:-/usr/share/genkernel}"
CACHE_DIR="/var/cache/genkernel"
DISTDIR="${GK_SHARE}/distfiles"
LOGFILE="/var/log/genkernel.log"
LOGLEVEL=1
DEFAULT_KERNEL_SOURCE="/usr/src/linux"
  • 내 lv는 systemd가 cryptroot를 열려고 시도할 때까지 발견되지 않습니다. 이 문제를 어떻게 해결할 수 있을지 모르시나요?
  • 내가 하고 있는 일은 어리석은 일이고 이 레이아웃은 실제로 지원되지 않습니다.

여기에 어떤 도움이라도 좋을 것입니다. 감사합니다!

답변1

저는 젠투를 사용하지 않았으므로 틀릴 수도 있습니다. 이러한 커널 매개변수는 실제로 커널 자체가 아니라 initramfs에 의해 해석되기 때문입니다. 하지만...

한 단계를 놓친 것 같습니다. 이렇게 하려면 cryptsetup이 initramfs에서 LUKS 드라이브의 잠금을 해제해야 합니다.

root=/dev/mapper/

다른 배포판에서는 다음을 수행해야 합니다.

  • 패키지를 설치하고 initramfs에 스크립트를 추가하여 LUKS 블록 장치의 잠금을 해제하세요. 예를 들어 우분투에서는 설치할 수 있습니다cryptsetup-initramfs
  • /etc/cryptab잠금 해제 행을 포함하도록 업데이트되었습니다 ./dev/mapper/cryptroot
  • initramfs를 다시 빌드하는 명령을 실행하십시오( update-initramfs).

젠투에도 비슷한 세 단계가 필요한 것 같습니다.

관련 정보