저는 EndeavourOS(기본적으로 Arch)를 사용하고 있지만 initrd로 systemd-boot와 dracut을 사용하고 있습니다. 암호화되지 않은 부팅 파티션과 LUKS 암호화된 루트 및 스왑 파티션을 사용하여 간단한 설정을 했습니다. 특히 설정은 아래 출력에 설명되어 있습니다.
$ cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=8A2F-4076 /efi vfat defaults,noatime 0 2
/dev/mapper/luks-81733cbe-81f5-4506-8369-1c9b62e7d6be / ext4 defaults,noatime 0 1
/dev/mapper/luks-9715a3f9-f701-47b8-9b55-5143ca88dcd8 swap swap defaults 0 0
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1 vfat FAT32 8A2F-4076 915.6M 8% /efi
├─nvme0n1p2 crypto_LUKS 1 81733cbe-81f5-4506-8369-1c9b62e7d6be
│ └─luks-81733cbe-81f5-4506-8369-1c9b62e7d6be ext4 1.0 endeavouros d8d14c59-8704-4fb8-ad02-7d20a26bc1e1 843.6G 2% /
└─nvme0n1p3 crypto_LUKS 1 9715a3f9-f701-47b8-9b55-5143ca88dcd8
└─luks-9715a3f9-f701-47b8-9b55-5143ca88dcd8 swap 1 swap b003ea64-a38d-464c-8609-7278e21f8a0f [SWAP]
문제는 컴퓨터를 시작할 때마다 루트 파티션에 한 번, 스왑 파티션에 한 번 비밀번호를 두 번 입력해야 한다는 것입니다(도움이 된다면 두 파티션에 동일한 비밀번호를 사용한다는 점에 유의하세요). 이것은 번거로운 일이 되었습니다. 제 질문은: 루트 파티션 비밀번호를 성공적으로 입력한 후 스왑 파티션을 자동으로 해독하는 방법이 있습니까?
이것과 매우 비슷한 질문이 있습니다현명한 대답, 그러나 성공하지 못했습니다. 대답의 첫 번째 부분은 데비안 중심이며 다른 배포판에는 존재하지 않는 스크립팅 옵션이 있습니다. 두 번째 부분에서는 crypttab을 사용하여 다른 파티션의 암호를 해독하는 데 사용되는 키 파일의 위치를 지정합니다.
지금까지 initrd의 crypttab은 다음과 같으며 /crypto_keyfile.bin
루트 파티션에 존재하는 모든 파티션을 엽니다.
$ lsinitrd --file /etc/crypttab
luks-81733cbe-81f5-4506-8369-1c9b62e7d6be /dev/disk/by-uuid/81733cbe-81f5-4506-8369-1c9b62e7d6be /crypto_keyfile.bin luks
luks-9715a3f9-f701-47b8-9b55-5143ca88dcd8 /dev/disk/by-uuid/9715a3f9-f701-47b8-9b55-5143ca88dcd8 /crypto_keyfile.bin luks
이 접근 방식은 다음 두 가지 이유로 작동하지 않습니다.
- 연결된 답변에서 제안한 것과는 달리(사용자에게 crypttab 항목 순서대로 파티션을 쿼리함) 순서는 부팅할 때마다 무작위로 지정됩니다. 루트를 연 후 자동으로 스왑 파티션을 열 수 있더라도 스왑이 먼저 오면 키 파일이 루트에 있기 때문에 루트의 비밀번호를 입력해야 합니다.
- 루트 비밀번호를 입력한 후 바로 파일 시스템이 마운트되지 않는 것 같습니다. initrd 파일 시스템이 실제로
/crypto_keyfile.bin
검색되는데, 이는 로그에 두 번 나타나는 다음 오류를 설명합니다.systemd-cryptsetup[460]: Failed to activate, key file '/crypto_keyfile.bin' missing.
따라서 제가 올바른 길을 가고 있다면 systemd-cryptsetup
루트 파티션을 먼저 쿼리한 다음 스왑 파티션을 쿼리할 때마다 어떻게 확인하고 루트 파티션을 연 후 파일 시스템이 마운트되어 /crypto_keyfile.bin
성공적으로 열렸는지 확인하려면 어떻게 해야 합니까? 스왑 파티션?
그렇지 않고 여기서 완전히 벗어나면 내가 원하는 것을 달성할 수 있는 방법이 있습니까?
감사해요.
답변1
Arch 전문가는 아니지만 데비안 중심 스크립트는 데비안에서 잘 작동하지만 이에 따르면위키피디아 페이지작동해야 하거나 적어도 작동할 것으로 예상됩니다.
부팅 중에 입력한 비밀번호는 systemd-cryptsetup(8)에 의해 커널 키링에 캐시되므로 동일한 비밀번호로 여러 장치를 잠금 해제할 수 있는 경우(여기에는 crypttab에서 부팅 후 잠금 해제된 장치가 포함됨) 각 장치 비밀번호만 입력하면 됩니다. 한 번.
설정에서 문제가 있는 것으로 보이는 것은 루트 파티션의 키 파일을 사용하도록 crypttab을 구성하고 키 파일이 암호화된 루트 파티션에 저장된다는 것입니다. 비밀번호를 입력하고 둘 다에 동일한 비밀번호를 사용해도 괜찮으므로 none
crypttab에서 키 파일을 설정하면 문제가 해결될 수 있습니다.
이것systemd-cryptsetup
맨페이지비밀번호 캐싱도 명시적으로 언급되어 있으므로 켜는 순서는 중요하지 않습니다.
만약을 대비해 최대 절전 모드/재개를 사용하지 않는 경우 임의 키를 사용하여 스왑 파티션을 암호화할 수도 있습니다.