디스크의 처음 몇 바이트를 0x00으로 만들어 장치를 부팅 할 수 없게 만들 수 있습니다.
일반적으로 (그리고 이것은 grub, grub2 및 ntldr iirc 모두에 해당합니다) 드라이브의 첫 번째 바이트는 x86 jmp 명령이됩니다. 부트 스트랩을 위해 장치에 실행을 전달할 때 단순히 장치 정보를 코드로 빨아들이도록 CPU를 설정하기 때문에 디스크 레이블 이전에도 발생합니다. 유효하지 않은 코드가 있으면 인터럽트를 트리거하고 BIOS가 예외를 처리하고 다음 부팅 장치로갑니다.
예를 들어, 디스크의 시작은 다음과 같이 시작합니다.
00000000 eb 63 90 d0 bc 00 7c fb 50 07 50 1f fc be 1b 7c |.c....|.P.P....||
첫 번째 부분은 eb 63
현재 IP에서 0x63으로 오프셋 이동 (0x65)입니다.
00000060 00 00 00 00 ff fa 90 90 f6 c2 80 74 05 f6 c2 70 |...........t...p|
00000070 74 02 b2 80 ea 79 7c 00 00 31 c0 8e d8 8e d0 bc |t....y|..1......|
여기서부터 실행이 계속됩니다.
섹터의 끝은 다음과 같습니다.
000001b0 cd 10 ac 3c 00 75 f4 c3 ed db 96 d6 00 00 80 01 |...<.u..........|
000001c0 01 00 83 fe ff ff 3f 00 00 00 c1 07 a6 0e 00 fe |......?.........|
000001d0 ff ff 83 fe ff ff 00 60 00 11 00 00 38 29 00 fe |.......`....8)..|
000001e0 ff ff 82 fe ff ff 00 08 a6 0e 00 58 5a 02 00 00 |...........XZ...|
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
디스크가 MBR 파티션 테이블로 포맷 된 경우, 오프셋에있는 파티션 테이블 0x1be
과 오프셋 55aa
의 섹터의 맨 끝에 발생 하는 MBR 서명의 두 가지만 있으면됩니다 0x1fe
. 0x1be
10 진수 446입니다.
다음은 물론 장치를 부팅 할 수 없게 만듭니다. 그러나 이것은 당신이 원하는 것입니다. 장치를 부팅 할 수 없게하려면이 작업을 수행하지 마십시오. mmm-kay? 나는 /dev/sdz
많은 사람들이 없기 때문에 단순히 장치가 있다고 가정 하고 /dev/sdz
, 이것은 일부 바보 초보자가 맹목적으로 붙여 넣기 명령을 복사 할 위험을 줄입니다.
먼저 MBR을 백업 파일로 복사하십시오.
sudo dd if=/dev/sdz of=/some/where/safe/preferably/not/on/dev/sdz/backup.mbr bs=512 count=1
다음으로 해당 파일을 복사하십시오.
cp backup.mbr backup.mbr.test
다음으로 루프백 장치를 만들어서 내용이 잘리지 않도록합니다. 가짜 섹터 0의 변경 사항을 테스트로 적용합니다.
sudo losetup /dev/loop7 backup.mbr.test
sudo dd if=/dev/zero of=/dev/loop7 bs=446 count=1
sudo losetup -d /dev/loop7
hexdump
파일을 확인하고 전체 파티션 테이블이 손상되지 않았는지 확인하십시오.
sudo hexdump -C backup.mbr.test
다음과 같은 내용이 표시되어야합니다.
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01 |................|
000001c0 01 00 83 fe ff ff 3f 00 00 00 c1 07 a6 0e 00 fe |......?.........|
000001d0 ff ff 83 fe ff ff 00 60 00 11 00 00 38 29 00 fe |.......`....8)..|
000001e0 ff ff 82 fe ff ff 00 08 a6 0e 00 58 5a 02 00 00 |...........XZ...|
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
00000200
이제, 0x1be
당신이 볼 수있는 곳입니다 80
hexdumped 출력에,이 또한 할 수있다 00
여전히 유효하다. 에서 바이트를 (이 파티션 테이블에서 "부팅"플래그는, 그것은 완전히 가장 현대적인 바이오스 무시 있기 때문에 당신은 ... 혼자 떠날 수의) 0x1bf
거의 것입니다하지만 결코 될 수 없다 0x00
(이 가장 일반적이다 0x01
당신을하지만 다른 값을 사용할 수 있습니다) backup.mbr
과거 0x1be
가 변경 되지 않도록 이것을 당신과 비교할 수 있습니다 .
변경 사항을 올바르게 적용했으면 디스크의 첫 부분으로 파일을 직접 복사 할 수 있습니다. 파일을 /dev/zero
다시 작성하는 대신 파일을 작성하는 이유 는 오타 방지를위한 것 입니다. 실수로 count=1
시간을 낭비하지 않으면 파일을 복사해도 EOF를 지나지 않습니다. 더 안전합니다.
sudo dd if=backup.mbr.test of=/dev/sdz
다음으로 hexdump
디스크를 변경하여 예상대로 변경했는지 확인하십시오.
hexdump -C /dev/sdz | head
까지 비교 0x200
에 대한 backup.mbr.test
확인은 당신이 원하는 무엇을 만들 수 있습니다.
마지막으로, 어떤 이유로 든 문제가 발생하면 다음을 통해 MBR 백업을 드라이브에 다시 복사 할 수 있습니다.
sudo dd if=backup.mbr of=/dev/sdz
도움이 되었기를 바랍니다.