grub2 부트로더 설정이 있고 시스템의 나머지 부분은 암호화된 파티션(LVM-on-LUKS)에 있습니다. LUKS 컨테이너 내부에는 Kali Sana와 Debian 8이라는 두 개의 운영 체제와 공유 스왑 파티션이 설치되어 있습니다.
이는 전체 디스크 암호화로 Kali를 설치한 다음 Debian을 위한 공간을 마련하여 설정되었습니다. grub 설치는 Kali에서 제공됩니다.
나는 데비안용 두 번째 /boot 파티션을 만드는 것이 더 쉬울 것이라는 것을 완전히 알고 있습니다. 그러나 설정된 방식을 고려할 때 데비안 부트로더에는 공간이 남아 있지 않으며 공간을 만들기 위해 모든 크기를 조정하는 것은 고통스러울 것입니다.
그래서 이것이 제가 grub에서 해야 할 일입니다:
- 암호화된 파티션을 마운트합니다(이미 이 작업을 수행했습니다).
- 데비안의 initramfs와 커널을 부팅합니다(여기서 문제가 발생합니다).
나는 이에 대해 조사한 후 /boot/grub/custom.cfg 파일을 편집하여 이를 시도했습니다. 모든 편집 후에 나는 실행 sudo grub-mkconfig
하고 sudo update-grub
. 그런 다음 재부팅하여 시작되었는지 확인했습니다. LUKS 컨테이너의 암호를 해독할 수 있지만 initramfs 또는 커널을 찾을 수는 없습니다.
이것은 내 custom.cfg 파일입니다. 참고: 나는 이것이 무엇을 하는지에 대해 매우 모호합니다. 이것은 아마도 완전히 잘못된 것 같습니다.
menuentry "Debian 8 Jessie"{
insmod luks
insmod lvm
cryptdevice=UUID=ffe7a64d-e552-4db9-b0f3-1e42be118059:cryptolvm
set root=/dev/Outsider-vg/Outsider-debianroot
linux /boot/vmlinuz-3.16.0-4-amd64 root=/dev/Outsider-vg/Outsider-debianroot
initrd /boot/initrd.img-3.16.0-4-amd64
}
위에 대한 참고 사항: cryptdevice=UUID=ffe7a64d-e552-4db9-b0f3-1e42be118059:cryptolvm
처음에는 set root=/dev/sda5
이 버전의 파일이 컨테이너의 암호를 해독할 수 없습니다. 나는 그것을 작동시키는 방법을 이미 알고 있으며, 그것을 변경하는 것이 도움이 되는지 확인하기 위해 이리저리 살펴보고 있습니다.
제가 언급한 적이 있어요이 링크이 파일을 편집하는 데 도움을 찾고 있습니다.
기본적으로 LUKS 파티션의 암호를 해독한 후 grub이 올바른 initramfs 및 vmlinuz 파일을 가리키도록 하는 구문을 알아야 합니다. 논리 볼륨 아래에 있습니다 Outsider--debianroot
. 나의 유일한 진짜 문제는 무엇을 해야할지 모른다는 것입니다.
조금 모호해서 죄송합니다. 문제의 일부는 내가 무엇을 찾고 있는지 확신할 수 없다는 것입니다. 답변이 없지만 custom.cfg 편집에 대한 포괄적인 가이드를 알려주시면 감사하겠습니다. 자세한 내용이 필요하면 알려주시기 바랍니다.
편집: 추가 조사를 통해 다음을 발견했습니다.
기본적으로 Grub에게 LVM의 루트 디렉터리에 대한 올바른 경로를 제공해야 합니다. 파일 시스템에 대해 조사한 결과 두 가지 가능한 경로를 발견했습니다: /dev/mapper/volumeGroup-volumeName
및 /dev/volumeGroup/volumeName
. 위의 예에서는 /dev/mapper/Outsider--vg-Outsider--debianroot
및 입니다 /dev/Outsider-vg/Outsider-debianroot
.
이 배포판을 부팅하려면 올바른 루트 디렉터리의 경로가 무엇인지 알아야 합니다. 둘 중 하나가 정확하고 둘 다 함께 사용해야 하거나, 다른 경로가 없어 이를 사용해야 합니다. 어떤 아이디어가 있나요?
또한 이 두 경로의 차이점은 무엇입니까? 그들은 각각 무엇을 가리키는가? /dev/mapper/volumeGroup
이들그리고 의 차이점은 무엇인가요 /dev/volumeGroup
?
편집 2:/dev/volumeGroup/volumeName
최종 구문에 따르면 이것이 올바른 경로라고 생각합니다 .이 튜토리얼. 나는 이것을 실험하고 다시 보고할 것이다.
참고: 이 문제를 해결한 후에 직접 가서 정리하겠습니다.
답변1
다음과 같은 것이 있어야 합니다:
menuentry 'Debian' --class debian --class gnu-linux --class gnu --class os {
load_video
set gfxpayload=keep
insmod gzio
insmod ext2
insmod fat
echo 'Loading Linux ...'
linux /boot/vmlinuz-3.16.0-4-amd64 cryptdevice=UUID=ffe7a64d-e552-4db9-b0f3-1e42be118059:cryptolvm root=/dev/Outsider-vg/Outsider-debianroot rw
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.16.0-4-amd64
}
insmod part_gpt
하지만 grub.cfg에 이미 추가되어 있어야 한다는 점에 유의하세요 . lvm
그리고 luks
그럴 필요도 없습니다. grub은 커널이 처리할 Linux 이미지만 로드합니다(적절한 커널 후크가 필요함).
답변2
Linux에 장치 매퍼 하위 시스템이 있기 전에는 2.4.x 및 이전 커널 시리즈에 Linux LVM 버전 1이 있었습니다. 최신 버전은 버전 2입니다.
LVM v1은 특수 /dev/vgName/lvName
스타일 경로를 사용합니다.
장치 매퍼 하위 시스템과 LVM v2가 도입되었을 때 새로운 LVM은 이전 버전과 역호환되어야 했기 때문에 레거시 경로 이름을 실제 장치에 대한 심볼릭 링크로 유지했습니다.
현재 LVM v2는 장치 매퍼를 사용하므로 "실제" 장치는 해당 규칙을 따릅니다 /dev/dm-<number>
. 이는 낮은 수준의 장치 매퍼 사용자 공간 도구(예:)에는 쉽지만 dmsetup
사람에게는 불편하므로 모든 하위 시스템(다중 경로 지정, 소프트웨어 RAID) , 디스크 암호화, LVM v2 등)은 관련 장치를 다시 가리키는 기호 링크로 보다 인간에게 친숙한 이름을 유지합니다 /dev/dm-*
. 이러한 링크는 일반적으로 아래에 있지만 /dev/mapper/
이전 버전과의 호환성을 위해 예외가 있을 수 있습니다.
따라서 현재 LVM 장치 명명 체계는 일반적으로 장치에 대한 심볼릭 링크 /dev/mapper/vgName-lvName
로 구현되지만 스키마를 "공식" 이름으로 사용합니다. /dev/dm-<number>
그러나 단순성과 편의성으로 인해 전통적인 LVMv1 스타일 명명 체계는 여전히 유지됩니다. 공식 및 레거시 체계는 모두 동일한 방식으로 심볼릭 링크로 구현되므로 실질적인 차이는 없습니다.
유일한 예외는 initramfs 내에서일 수 있으며, 단순화를 위해 시작 스크립트는 하나의 특정 형식의 LVM 장치 이름만 처리하도록 설계될 수 있습니다. 그렇다면 배포 문서에 이를 명시적으로 언급해야 합니다.
(여러 장치 노드가 특정 메이저/마이너 번호 조합을 사용하도록 허용하는 일부 커널/버전이 있었지만 udev
이는 확실히 가치 있는 것보다 더 많은 문제이며 경쟁 조건 및 기타 헛소리의 가능성을 열어줍니다. 현대 시스템은 일반적으로 각 커널/버전을 생성합니다. 장치 아래에 실제 장치 노드가 있습니다 /dev
. 모든 별칭은 심볼릭 링크여야 합니다.