포맷하지 않고 Fedora의 기존 디스크를 암호화하는 방법은 무엇입니까?

포맷하지 않고 Fedora의 기존 디스크를 암호화하는 방법은 무엇입니까?

디스크를 다시 암호화하는 방법을 이미 다루는 기존 온라인 가이드가 많이 있습니다.맥스 헬프지거응답여기그리고 문서에아치 위키. 그러나 Arch 위키는 mkinitcpio대신 사용되는 시스템 에 더 중점을 두고 dracut있으며 기존 StackExchange 답변에서는 ext4 파일 시스템을 사용한다고 가정합니다.

답변1

이는 기본 Fedora 설치에 다음과 같은 Btrfs 기반 파티션이 있다고 가정합니다.

  • 루트 파티션(Btrfs 하위 볼륨 "root" [ 에 마운트됨 /] 및 "home" [ 에 마운트됨 /home])
  • 부팅 파티션( 에 설치됨 /boot)
  • EFI 파티션(UEFI 시스템만 해당,에 설치됨 /boot/efi)

필요하다

  • 전체 디스크 백업
  • 비밀번호 설정(포함되어야 하며, 그렇지 않으면 를 사용하여 설치해야 합니다 dnf install cryptsetup)
  • 최소 100MiB의 여유 공간
  • 루트 파일 시스템을 마운트 해제할 수 있습니다(예:페도라 라이브 USB)
  • 노트:/etc/vconsole.conf암호화 화면은 (사용)에 정의된 키보드 레이아웃을 사용합니다 localectl. 시작 시 레이아웃을 변경할 수 없습니다.

지시하다

  1. 루트 파일 시스템을 식별하는 데 사용됩니다 lsblk -f. XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX나중에 사용할 수 있도록 UUID(형식)를 저장합니다 .
  2. 현재 커널 버전을 식별 uname -r하고 나중에 사용할 수 있도록 해당 값을 저장하는 데 사용됩니다.
  3. 복구 시스템으로 재부팅합니다. blkid --uuid <UUID>다음을 사용하여 루트 파일 시스템을 찾으십시오.btrfs check <device>
  4. 파일 시스템 마운트mount /dev/<device> /mnt
  5. LUKS 헤더를 위한 공간을 확보하기 위해 파일 시스템을 축소합니다. 최소 32MiB를 사용하는 것이 좋습니다.btrfs filesystem resize -32M /mnt
  6. 파일 시스템을 마운트 해제합니다.umount /mnt
  7. 암호화된 파티션을 사용 cryptsetup reencrypt --encrypt --reduce-device-size 32M /dev/<device>하고 메시지가 표시되면 비밀번호를 제공하십시오.
  8. 암호화된 LUKS 파티션을 식별합니다 lsblk -f(UUID가 변경되었습니다). 나중에 사용할 수 있도록 이 LUKS 파티션 UUID를 저장하세요.
  9. 파티션을 열고 메시지가 표시되면 비밀번호를 입력하세요.cryptsetup open /dev/<device> system
  10. 매핑된 파일 시스템 마운트mount /dev/mapper/system /mnt
  11. 모든 공간을 사용하도록 파일 시스템 크기를 조정한 btrfs filesystem resize max /mnt다음 다음을 사용하여 파일 시스템을 마운트 해제합니다 .umount /mnt
  12. 설치하다루트 볼륨(Linux 파일 시스템 루트)mount -t btrfs -o "noatime,subvol=root,compress=zstd:1" /dev/mapper/system /mnt
  13. 부팅 및 EFI 파티션을 식별하는 장치를 사용하십시오 lsblk. 부팅 파일 시스템( mount /dev/<boot device> /mnt/boot)을 마운트한 다음 UEFI 시스템용 EFI 파일 시스템( )을 마운트합니다 mount /dev/<EFI device> /mnt/boot/efi.
  14. 마운트 의사 파일 시스템 바인드 /dev, /dev/pts, /proc, /run/sys, 형식은 다음과 같습니다.mount --bind /sys /mnt/sys
  15. 파일 시스템에서 셸을 엽니다.chroot /mnt /bin/bash
  16. 텍스트 편집기로 열고 /etc/default/grub커널 매개변수를 수정하여 LUKS 파티션을 인식하고 SELinux 적용을 일시적으로 비활성화합니다. 다음 매개변수를 추가한 후 변경 사항을 저장하고 파일을 닫습니다.
GRUB_CMDLINE_LINUX="[other params] rd.luks.uuid=<LUKS partition UUID> enforcing=0"
  1. SELinux에 대한 레이블 재지정 구성touch /.autorelabel
  2. GRUB 구성 재생성: ( , 및 UEFI 시스템에 대해서도 grub2-mkconfig -o /boot/grub2/grub.cfg생성됨 )/etc/grub2.cfg/etc/grub2-efi.cfg
  3. cryptsetup이 활성화되었는지 확인하려면 initramfs를 다시 빌드하세요.dracut --kver <kernel version> --force
  4. chroot 종료
  5. 모든 파일 시스템을 역순으로 마운트 해제합니다. ( --bind이 옵션은 마운트된 파일 시스템에 사용할 수 있습니다 -l.) 다음을 사용하여 LUKS 파티션을 끄십시오.cryptsetup close system
  6. 재부팅하고 일반 시스템에 로그인합니다. 부팅 프로세스 중에 시스템 암호를 해독하려면 비밀번호를 입력하라는 메시지가 표시됩니다.
  7. /etc/default/grub텍스트 편집기에서 이를 열고 enforcing=0SELinux 적용을 제거하여 다시 활성화하십시오 GRUB_CMDLINE_LINUX. 저장 및 종료.
  8. SELinux 레이블을 다시 지정하세요 touch /.autorelabel.
  9. 18단계를 반복하세요.GRUB 구성을 재생성합니다.
  10. 시스템을 다시 시작하고 로그인합니다.

이 답변은 주로 다음에서 비롯됩니다.맥스 헬프지거~의답변그리고아치 위키. 그것은 또한에서 온다세렘셈의 답변. 2023년 3월 16일 --reduce-device-size공백이 잘못 포함된 오타가 수정되었습니다.

관련 정보