LUKS 컨테이너를 파티션 중간에서 처음으로 이동하는 방법은 무엇입니까?

LUKS 컨테이너를 파티션 중간에서 처음으로 이동하는 방법은 무엇입니까?

tl;dr의 경우 맨 아래로 건너뛰세요.

드라이브 시작 부분에는 Mac OS X가 있고 드라이브 끝 부분에는 3개의 GNU/Linux 파티션이 있는 이중 부팅 설정이 있습니다. fdisk덤프를 가져갈 수 있는 관련 머신이 없지만 원본 디스크 레이아웃에 대한 대략적인 개요는 다음과 같습니다.

/dev/sda1: EFI System Partition
/dev/sda2: Macintosh HD (main OS X partition)
/dev/sda3: Recovery HD (part of OS X's recovery system)
/dev/sda4: /
/dev/sda5: /home inside a LUKS container
/dev/sda6: swapspace inside a LUKS container

이 시스템에 GNU/Linux를 다시 설치하고 있으며 그 일부로 /. 하지만 /boot이 파티션을 만들려면 Macintosh HD의 크기를 조정하고 Recovery HD를 다시 Macintosh HD의 끝 부분으로 옮겼습니다. 나는 또한 이 기회를 이용하여 내 사업을 더 크게 만들었습니다 /. 최종 결과는 다음과 같은 디스크입니다.

/dev/sda1: EFI System Partition
/dev/sda2: Macintosh HD (main OS X partition) (smaller than before)
/dev/sda3: Recovery HD (part of OS X's recovery system)
/dev/sda4: /boot
/dev/sda5: / (larger than before, and now inside a LUKS container)
/dev/sda6: /home inside a LUKS container
/dev/sda7: swapspace inside a LUKS container

너무 길어요.:문제는 구성 순서로 인해 이제 cryptsetup중간에 생성된 LUKS 컨테이너가 있다는 것입니다 /dev/sda5. 중간에 있어서 잠금해제/설치/복원을 하려고 찾아봐도 아무것도 없습니다. 내 암호화 컨테이너를 파티션의 시작 부분으로 어떻게 이동할 수 있나요? 여기에는 두 가지 다른 단계가 포함될 수 있습니다(실제로는발견하다디스크에 저장한 다음 해당 정보를 사용하여 이동합니다.) 확실하지 않습니다. Google 검색 결과가 없습니다.

답변1

LUKS에는 고유한 헤더가 있으며 다음을 통해 가능한 오프셋을 찾을 수 있습니다 grep.

# grep -a -b --only-matching 'LUKS' /dev/sda5
1832480940:LUKS
1959072314:LUKS
2019974297:LUKS

발견한 가능한 각 오프셋에 대해 루프 장치를 생성하고 유효한 LUKS 장치인지 확인할 수 있습니다.

# losetup --find --show --offset 1832480940 --read-only /dev/sda5
/dev/loop3
# cryptsetup luksOpen /dev/loop3 luksloop3
...mount -o ro, ls, backup, umount...
# cryptsetup luksClose luksloop3
# losetup -d /dev/loop3

올바른 오프셋을 찾으면 를 사용하여 이를 파티션의 시작 부분으로 이동할 수 있습니다 dd. 이것은위험한, 오프셋이 잘못되거나 작업이 취소되면 데이터가 손실됩니다. 그러므로 무슨 일이 있어도 먼저 백업을 해야 합니다.

# dd if=/dev/sda5 of=/dev/sda5 bs=1M iflag=skip_bytes skip=1832480940

작동하는지 확인하세요.

# cryptsetup luksOpen /dev/sda5 luks

그렇지 않으면 백업에서 복원하십시오.

관련 정보