암호화된 루트 파일 시스템을 설정 중입니다. 이전에 이 작업을 수행한 적이 있지만 이번에는 프로세스에 익숙해지기 위해 대칭 암호가 포함된 PGP 암호화 키 파일을 사용하고 있습니다.
암호화 루트 구성이 발생하는 것으로 보이는 두 곳이 있는데, 아래의 커널 초기화 옵션과 cryptopts
initramfs 에 무언가를 굽는 /etc/crypttab
데 사용되는 것으로 보입니다 .mkinitramfs
두 곳을 모두 업데이트하는 것은 약간 번거롭습니다. 결국 한 곳으로 충분하다면 두 곳에 두는 것이 무슨 의미가 있습니까? /etc/crypttab
LUKS 볼륨이 있는 경우 다른 후크와 스크립트를 사용하여 initramfs를 다르게 생성할 수 있기 때문에 물건을 넣는 것의 가치를 봅니다 .
이 문제에 대해 이전에 수정된 예를 사용하면 다음과 같은 암호 탭이 있습니다.
picrypt /dev/mmcblk0p2 /boot/diskkey.gpg luks,keyscript=/lib/cryptsetup/scripts/decrypt_gnupg
아마도 이것은 initramfs에게 /dev/mmcblk0p2
name 을 사용하기 위해 암호를 해독해야 한다고 알려주고, 파일을 picrypt
사용할 것임을 지정 하고 이를 스크립트 에 전달하여 볼륨에 대한 비밀번호를 생성하도록 합니다.luks
/boot/diskkey.gpg
/lib/cryptsetup/scripts/decrypt_gnupg
다음으로 커널 초기화 라인의 암호화 옵션은 다음과 같습니다.
cryptopts=target=picrypt,source=/dev/mmcblk0p2,lvm=pi
/dev/mmcblk0p2
다시 한번 create 를 다시 지정합니다 . 이 경우 커널 매개변수로 지정된 루트 파일 시스템을 마운트하기 전에 기다려야 하는 picrypt
call 이라는 LVM 볼륨이 내부적으로 있음을 알려줍니다 .pi
root=/dev/mapper/pi-root
이상하게도 이 설정은 crypttab에 대한 키 파일 및 키 스크립트 인수를 무시하고 GPG 대칭 키 비밀번호를 묻는 메시지를 표시하지 않고 키를 직접 입력하기 때문에 작동하지 않습니다. 포함하도록 스크립트 를 수정 keyscript
하지만keyfile
cryptopts
왜꼭 이 일을 해야 하나요?
/etc/crypttab
커널 초기화 라인 의 모든 것을 복제하지 않고 커널 초기화 라인에 이 모든 것(또는 적어도 대부분)을 포함할 수 있는 방법이 있습니까 ? 모든 것을 두 번 변경해야 하는 것은 약간 우스꽝스럽습니다. 이러한 다양한 소스는 후크 형태의 crypttab, cryptsetup에 대한 실제 인수 형태의 cryptopts와 같은 다양한 기능을 제공합니까?
답변1
우와. 이 모든 것이 Debian/stretch에서 어떻게 작동하는지 알아내는 데 거의 이틀이 걸렸습니다(이전에 이 작업을 해본 적이 있음에도 불구하고). 귀하의 질문을 우연히 발견했으며 답변을 찾을 수 있도록 답변을 열어두겠습니다.
응 하나 있어crypttab(5)
옵션은 initramfs
정확히 귀하가 요청한 것입니다:
파일 시스템 초기화
initramfs 후크는 루트 장치, 복구 장치 및 "initramfs" 옵션이 설정된 모든 장치를 처리합니다. 이러한 장치는 시작의 initramfs 단계에서 처리됩니다. 예를 들어 dropbear를 사용하여 원격 잠금 해제를 허용합니다.
(믿거나 말거나, 기사를 읽다가 우연히 이 옵션을 발견했습니다.TODO 파일cryptsetup 소스에서. )
따라서 crypttab
라인은 다음과 같아야 합니다.
picrypt /dev/mmcblk0p2 /boot/diskkey.gpg luks,keyscript=/lib/cryptsetup/scripts/decrypt_gnupg,initramfs
한 가지 더: cryptsetup 모듈은 "initramfs 단계에서 잠금을 해제해야 하는 장치(예: 루트 또는 복구 장치)가 있는 경우" initramfs 이미지에만 추가됩니다(참조:cryptroot-conf
최근;이름 바꾸기오직conf-hook
). 그러나 현재 이 방법은 루트 장치가 LVM에 없을 때만 (안정적으로) 작동합니다. cryptsetup 모듈을 initramfs 이미지 CRYPTSETUP=y
에 강제로 적용하려면 /etc/cryptsetup-initramfs/conf-hook
.
update-initramfs -k all -u
그럼에도 불구하고 언급된 파일을 변경한 후에는 이를 실행 해야 합니다 .