GPT 디스크에서 보호 MBR 조작

GPT 디스크에서 보호 MBR 조작

GPT 포맷 디스크의 보호 MBR 시작 부분에 0x00 유형의 빈 파티션을 추가하고 싶습니다. 내가 하나 찾았어방법하지만 이 접근 방식은 Linux 버전에는 없는 fdisk 기능 향상(특히 -p/-ffdisk에서 사용할 수 있는 옵션) 에 의존합니다.FreeBSD하지만리눅스). 나도 하나 찾았어방법빈 파티션 추가뒤쪽에첫 번째 파티션.

내 보호 MBR에는 현재 0xEE 유형의 항목이 있습니다. 이를 파티션 테이블의 두 번째 항목으로 만들고 GPT 파티션 테이블이나 디스크의 GPT 파티션을 방해하지 않고 그 앞에 0x00 유형의 빈 항목을 추가하고 싶습니다. 이것이 어떻게 달성될 수 있습니까? 보호 MBR을 편집할 수 있지만 fdisk -t dos <device>사용 fdisk가능한 여유 섹터가 없기 때문에 파티션 추가를 거부합니다. 그리고 보호 MBR 파티션을 삭제하고 두 개의 새로운 파티션을 다시 생성하면 디스크의 GPT 파티션에 영향을 미칠지 확실하지 않습니다.

답변1

이는 를 사용하여 수행할 수 있습니다 dd.

복원해야 할 경우를 대비해 MBR을 저장하세요.

# dd bs=1 count=512 status=none if=/dev/sdb > foo

MBR 파티션 테이블을 봅니다(섹터 1의 바이트 오프셋 446에서 시작하는 64바이트). 샘플 출력은 hexdump각 파티션 테이블 항목이 한 줄을 차지하도록 형식화됩니다.

# dd if=/dev/sdb bs=1 skip=446 count=64 status=none | hexdump -ve '16/1 " %02X" "\n"'
    00 01 00 00 EE FF FF FF 01 00 00 00 FF FF FF FF
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

필요한 경우 첫 번째 파티션에 대한 행을 복사하고 0번째 바이트를 0x80으로 변경하여 해당 파티션에 대한 부팅 플래그를 설정합니다. 네 번째 바이트를 0x00으로 변경하고 파티션을 null 유형으로 설정합니다. (각 바이트의 중요성은위키피디아.) 첫 번째 파티션을 편집된 행으로 바꾸고 원래 첫 번째 파티션을 두 번째 위치로 이동합니다.

    80 01 00 00 00 FF FF FF 01 00 00 00 FF FF FF FF
    00 01 00 00 EE FF FF FF 01 00 00 00 FF FF FF FF
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

수정된 16진수 하위 문자열을 디스크에 쓰고 0xEE 파티션 앞에 빈 파티션을 추가합니다.

# printf '\x80\x01\x00\x00\x00\xFF\xFF\xFF\x01\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x01\x00\x00\xEE\xFF\xFF\xFF\x01\x00\x00\x00\xFF\xFF\xFF\xFF' | dd bs=1 seek=446 of=/dev/sdb

변경사항 확인:

# dd if=/dev/sdb bs=1 skip=446 count=64 status=none | hexdump -ve '16/1 " %02X" "\n"'
80 01 00 00 00 FF FF FF 01 00 00 00 FF FF FF FF
00 01 00 00 EE FF FF FF 01 00 00 00 FF FF FF FF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

관련 정보