GRUB은 LVM에서 /boot를 찾을 수 없습니다.

GRUB은 LVM에서 /boot를 찾을 수 없습니다.

내 시스템은 암호화된 GRUB를 실행하는 Antergos 설치 프로그램을 사용하여 설치되었습니다. 암호 해독 키를 두 번만 삽입하면 잘 작동합니다.

그런 다음 LVM을 추가하고 세 개의 LVM 볼륨(부팅 루트 및 스왑)을 만들었습니다. 이제 LVM에서 두 번째 OS를 부팅하거나 Arch를 부팅하도록 선택할 수 있도록 이 LVM 설정으로 GRUB를 업데이트하고 싶습니다.

NAME                                            MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                                               8:0    0 465.8G  0 disk  
├─sda1                                            8:1    0  65.2G  0 part  
│ └─luks                                        254:0    0  65.2G  0 crypt /
├─sda2                                            8:2    0   3.7G  0 part  
│ └─luks-14a10aeb-01ec-44f4-b908-0c09685a03ed   254:4    0   3.7G  0 crypt /run/media/thijs/74ec47c2-64ed-4fe5-a965-a5e414b7a129
└─sda3                                            8:3    0 396.9G  0 part  
  ├─triagia-kaliboot                            254:1    0   500M  0 lvm   /run/media/thijs/f1eb6904-c17e-40b7-8740-60e67b8d04de
  ├─triagia-kaliroot                            254:2    0    50G  0 lvm   
  │ └─luks-26028d27-8a95-41c3-9d80-9415b8c170dc 254:6    0    50G  0 crypt /run/media/thijs/65c769fd-ea4a-4854-928c-3c28f15745aa
  └─triagia-kaliswap                            254:3    0     4G  0 lvm   
    └─luks-a0fa8f9e-e6d0-42d7-b54c-7c275ddc328a 254:5    0     4G  0 crypt 

그러나 grub-mkconfig를 사용하면 스크립트가 LVM에서 부팅 파티션을 찾지 못합니다. vgscan과 vgchange를 사용하여 활성화하고 LVM 볼륨을 마운트했지만 grub-mkconfig는 여전히 sda1에서의 부팅만 보고합니다.

연구에 따르면 LVM에서 /boot를 제거해야 할 필요성이 많이 있지만 저는 그런 방식이 마음에 들지 않습니다. 필요한 GRUB 구성을 수동으로 추가했지만 예제를 찾을 수 없습니다.

롤:

  --- Logical volume ---
  LV Path                /dev/triagia/kaliboot
  LV Name                kaliboot
  VG Name                triagia
  LV UUID                e68eqU-zP3Q-YnwY-ds6M-MG34-zAB5-VhZcAQ
  LV Write Access        read/write
  LV Creation host, time conDoin, 2015-08-21 17:50:52 +0200
  LV Status              available
  # open                 0
  LV Size                500.00 MiB
  Current LE             125
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

  --- Logical volume ---
  LV Path                /dev/triagia/kaliroot
  LV Name                kaliroot
  VG Name                triagia
  LV UUID                Bco7iM-ZlQR-NyeI-Nl1r-N1IK-kooC-oBCfV6
  LV Write Access        read/write
  LV Creation host, time conDoin, 2015-08-21 17:51:09 +0200
  LV Status              available
  # open                 0
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:1

  --- Logical volume ---
  LV Path                /dev/triagia/kaliswap
  LV Name                kaliswap
  VG Name                triagia
  LV UUID                POkVXd-UMoe-yHaB-nfrV-lbpO-Fv3l-86N7AT
  LV Write Access        read/write
  LV Creation host, time conDoin, 2015-08-21 17:54:32 +0200
  LV Status              available
  # open                 0
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:2

Arch 포럼에서 추가로 읽은 후 HOOKS 아래 mkinitcpio.conf에 lvm2를 추가했습니다.

HOOKS="base udev autodetect modconf block keyboard keymap encrypt resume lvm2 filesystems fsck"

그런 다음 다시 실행했습니다.

mkinitcpio -p linux
systemctl enable lvm2-lvmetad.service
grub-mkconfig -o /boot/grub/grub.cfg

그러나 그것은 아무것도 바꾸지 않습니다.

전원 켜기 볼륨

drwxr-x---+ 4 root root       80 Aug 23 19:19 ..
drwxr-xr-x  4 root root     1024 Aug 21 18:18 .
-rw-r--r--  1 root root 19692558 Aug 21 18:18 initrd.img-4.0.0-kali1-amd64
drwxr-xr-x  2 root root     1024 Aug 21 18:14 grub
drwx------  2 root root    12288 Aug 21 18:00 lost+found
-rw-r--r--  1 root root   165968 Jun  3 10:08 config-4.0.0-kali1-amd64
-rw-r--r--  1 root root  2790804 Jun  3 10:08 System.map-4.0.0-kali1-amd64
-rw-r--r--  1 root root  3274048 Jun  3 10:07 vmlinuz-4.0.0-kali1-amd64

GRUB 디렉토리:

drwxr-xr-x 4 root root    1024 Aug 21 18:18 ..
drwxr-xr-x 2 root root    1024 Aug 21 18:14 .
-rw-r--r-- 1 root root 2400500 Aug 21 18:14 unicode.pf2

40_custom에서 수동 Grub 구성을 생성했는데 거의 작동합니다. LVM이 발견되고 루트의 luks가 해독되지만 다음 오류가 발생합니다.

Begin: Running /scripts/init-bottom ... mount: mounting /dev on /root/dev failed: No such file or directory
done.
No init found. Try passing init= bootarg.

그런 다음 명령줄이 남습니다: (initramfs)_

수동 GRUB 구성:

menuentry 'Kali' {
insmod lvm
insmod gzio
insmod part_msdos
insmod ext2
set root=lvm/triagia-kaliboot
search --no-floppy --fs-uuid --set=root f1eb6904-c17e-40b7-8740-60e67b8d04de
linux /vmlinuz-4.0.0-kali1-amd64 root=/dev/mapper/triagia-kaliboot setkmap=us
initrd /initrd.img-4.0.0-kali1-amd64
}

답변1

커널을 로드할 수 있도록 디스크를 해독하려면 GRUB에 대한 커널 매개변수를 추가해야 합니다.

GRUB의 커널 매개변수에 다음 명령을 추가합니다:

cryptdevice=UUID=device-UUID:lvm root=/dev/mapper/MyVol-root
The <device-UUID> refers to the UUID of /dev/sdaX

암호를 해독하고 실행하면 됩니다. 자세한 내용은 아치 위키를 참조하세요.

관련 정보