LUKS 전체 디스크 암호화를 통한 LVM을 사용하여 별도의 부팅 파티션에서 grub을 수동으로 설정하는 방법은 무엇입니까?

LUKS 전체 디스크 암호화를 통한 LVM을 사용하여 별도의 부팅 파티션에서 grub을 수동으로 설정하는 방법은 무엇입니까?

저는 Linux Mint 17.2를 설치했으며, 하드 드라이브는 다음과 같이 파티션되었습니다:

sdc1 - 100MB ext2 for boot
sdc2 - rest of disk as LUKS -> Physical Volume -> LVM Volume

논리 볼륨은 다음과 같습니다.

/
/home
swap

부트로더를 설치할 수 없다는 점을 제외하면 설치 프로그램이 제대로 작동하는 것 같았고, "나중에 수동으로 부트로더 설치" 옵션을 선택해야 했습니다.

LiveCD가 실행 중이고 LUKS 볼륨이 열려 있으며 /mnt에 루트 논리 볼륨이 마운트되어 있습니다.

질문: 부트로더를 어떻게 설치하나요?

대부분의 지침은 다음과 같습니다.

# grub-install --root-directory=/mnt/ /dev/sdc

그러나 이는 다음을 생성합니다.

grub-probe: error: failed to get canonical path of `/cow'.
Installing for i386-pc platform.
grub-install.real: error: attempt to install to encrypted disk without cryptodisk enabled. Set `GRUB_ENABLE_CRYPTODISK=1' in file `/etc/default/grub'..

과 를 모두 편집 /etc/default/grub하고 /mnt/etc/default/grub추가했지만 GRUB_ENABLE_CRYPTODISK=1여전히 오류가 발생합니다.

암호화되지 않은 sdc1에 grub을 설치하고 비밀번호를 묻는 메시지를 표시한 다음 잠금이 해제되면 시스템을 부팅하도록 이를 설정하는 적절한 방법은 무엇입니까?

업데이트

이제 부팅 시 Grub이 로드되지만 비밀번호를 묻지 않거나 제대로 해독되지 않습니다. 다음 옵션을 추가하면 /etc/default/grub암호를 묻는 메시지를 표시할 수 있지만 올바른 암호를 입력하면 암호가 해독되지 않습니다.

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`    
GRUB_CMDLINE_LINUX_DEFAULT="cryptopts=target=lvmbase,source=/dev/disk/by-uuid/f7ddbdb6-51c3-4c59-9d1e-7751b0438431,lvm=vg0_root"
GRUB_CMDLINE_LINUX=""

답변1

나는 보통 grub내부에서 회복합니다 chroot. 따라서 라이브 배포판에서 부팅하고...

LUKS 볼륨을 엽니다.

# cryprsetup open /dev/sdc2 luks-mint

LVM 볼륨을 활성화합니다:

# vgscan
# vgchange -a y vg_mint
# lvscan

Mint를 마운트하고 다음을 준비하세요 chroot.

# mount /dev/mapper/vg_mint-root /mnt
# mount /dev/sdc1 /mnt/boot
# mount --rbind /dev /mnt/dev
# mount --rbind /sys /mnt/sys
# mount -t proc none /mnt/proc

chroot민트에:

# env -i HOME=/root TERM=$TERM chroot /mnt bash -l

구성 및 설치하고 grub종료합니다 chroot.

(chroot)# grub2-mkconfig > /boot/grub2/grub.cfg
(chroot)# grub2-install /dev/sdc
(chroot)# exit

재부팅합니다.

추신: VG 및 LV 이름을 적절하게 바꾸십시오.

PPS: 저는 Linux Minut이 를 사용한다고 가정했습니다 grub2. 그렇지 않다면 두 grub명령에서 '2'를 제거하세요.

관련 정보