내부 하드 드라이브의 LUKS

내부 하드 드라이브의 LUKS

LUKS를 사용하여 암호화된 하드 드라이브가 있습니다. 외장 하드 드라이브로 시작되었습니다. 최근에 케이스를 제거하고 SATA를 통해 직접 연결했습니다. 그러나 직접 연결하면 파티션을 볼 수 없으며 비밀번호를 묻는 메시지도 표시되지 않습니다. 4TB 중 500GB의 알 수 없는 파티션과 3.5TB의 여유 공간이 표시됩니다.

시스템에서 제거하고 외장 하드 드라이브로 다시 연결했는데 우분투가 파티션을 감지하고 비밀번호를 묻는 메시지를 표시했습니다.

또한 파티션이 실제로 GPT일 때 MBR로 표시됩니다.

답변1

이는 섹터 크기 문제일 수 있습니다. 일부 USB 셸은 해당 드라이브에 4KiB 섹터가 있다고 주장하는 반면 드라이브는 512바이트 섹터로 표시되며 그 반대의 경우도 마찬가지입니다. 불행하게도 파티션 테이블(msdos 및 gpt)은 섹터 크기에 따라 달라집니다. 섹터 크기가 변경되면 파티션 테이블이 유효하지 않게 됩니다.

이제 이것은 소프트웨어로 해결될 수 있는 문제입니다. Linux는 드라이브가 가지고 있다고 주장하는 물리적 섹터 크기에 관계없이 GPT 파티션 테이블을 올바르게 해석할 만큼 충분히 똑똑해질 수 있습니다. 하지만 그렇게 하지 않으며 아마도 표준의 일부도 아니므로...

당신이 해야 할 일은 USB 종료 시 파티션의 정확한 바이트 오프셋을 얻는 것입니다.

parted /dev/usbdrive unit b print free

그런 다음 이러한 파티션 오프셋이 내부 드라이브에 적용되는지 확인하십시오.

losetup --find --show --read-only --offset 1048576 /dev/internaldrive
file -s /dev/loopX

제대로 작동하면 내부 디스크에 대해 동일한(바이트) 오프셋을 사용하여 파티션 테이블을 다시 생성합니다(먼저 디스크의 처음/마지막 몇 메가바이트를 백업).

parted /dev/internaldisk unit b mklabel gpt mkpart 1048576 42424242 ...

섹터 크기가 잘못된 파티션 테이블을 자동으로 "수정"할 수 있을 만큼 똑똑한 파티셔닝 프로그램이 있는지 궁금합니다. 수동방식보다는 낫겠지만..

관련 정보