systemd, UEFI, lvm2 rootfs 및 systemd EFI 부팅을 사용하여 젠투를 시작하는 방법은 무엇입니까?

systemd, UEFI, lvm2 rootfs 및 systemd EFI 부팅을 사용하여 젠투를 시작하는 방법은 무엇입니까?

이 설정으로 Arch Linux를 설치했습니다. 이제 젠투로 듀얼 부팅을 하고 싶습니다. 그러나 젠투를 시작할 때 루트 UUID가 감지되지 않습니다(LVM에서). 내 파티션 구성표는 다음과 같습니다. ( lsblk -f)

sda                                                                    
├─sda1         vfat        E3B9-CCB0                               /boot
└─sda2         LVM2_member GwYKZG-fjl2-UV2L-KX57-1O8J-rBdp-fpdheC 
  ├─lvm-arch   ext4        67ce60f0-1a30-4da3-bb14-8dbfa0e4ea1d    /
  └─lvm-gentoo ext4        4db48ce0-3163-4a4d-ab8a-1961935cb680

구성 파일을 사용하여 Arch Linux를 부팅할 수 있습니다 /boot/loader/entries/arch.conf.

title           Arch Linux (LVM)
linux           /vmlinuz-arch
initrd          /initramfs-arch.img
options         root=UUID=67ce60f0-1a30-4da3-bb14-8dbfa0e4ea1d rw

젠투 설치를 완료한 후 /boot/loader/entries/gentoo.conf파일을 생성합니다:

title           Gentoo (LVM)
linux           /vmlinuz-gentoo
initrd          /initramfs-gentoo.img
options         root=UUID=4db48ce0-3163-4a4d-ab8a-1961935cb680 rw

나는 /boot/EFI/systemd/systemd-bootx64.efi부팅을 사용합니다. 젠투 옵션이 부팅 메뉴에 나타나지만, 선택해도 아무 일도 일어나지 않습니다. 그냥 비어 있습니다. 내 하드 드라이브를 사용하여 virtualbox에서 직접 부팅을 시도했는데 UUID를 찾을 수 없을 때까지만 부팅이 작동합니다 rootfs. UUID /dev/mapper/lvm-gentoo/dev/sda2감지됩니다.

내 생각엔 커널이나 initramfs에 문제가 있는 것 같습니다. 그러나 나는 장치 매퍼 지원을 사용하여 커널을 컴파일했습니다. 내가 하지 않은 일:

genkernel --lvm --install initramfs

내가 놓친 게 무엇입니까?

답변1

LVM(Logical Volume Manager)뿐만 아니라 UUID(Universally Unique Identifier)도 사용해야 하므로 genkernel 명령에 다른 옵션을 추가해야 합니다. 그러면 --disklabel다음과 같은 결과가 나타납니다.

genkernel --lvm --disklabel --install initramfs

using --disklabel옵션을 사용 blkid하면 다른 명령이 initramfs에 포함되고 부팅 단계에서 사용할 수 있게 됩니다.

다른 조언은 모든 드라이버도 사용할 수 있는지 확인하기 위해 다른 옵션을 시도하는 것입니다. 어쩌면 커널이 아닌 모듈로 구축했을 수도 있습니다. --all-ramdisk-modulesinitramfs 이미지의 모든 커널 모듈이 포함됩니다. 필수사항은 아니지만 안전을 위해 시도해 볼 수 있습니다.

답변2

루트가 논리 볼륨에 있는 경우 systemd-boot 로더 파일은 다음과 같아야 합니다.

title      Debian10
linux      /vmlinuz-4.19.0-4-amd64
initrd     /initrd.img-4.19.0-4-amd64
options    root=/dev/mapper/VG01-LV01 rw

LV 경로를 얻으려면 다음을 사용하십시오. (
lsblk --path --output name,kname,fstype,mountpoint,model
name)

관련 정보