dd를 사용하여 부트 섹터를 저장하고 복원하시겠습니까?

dd를 사용하여 부트 섹터를 저장하고 복원하시겠습니까?

일부 레거시 코드를 사용하여 시스템의 .iso를 하드 드라이브(라이브 CD에서)로 추출한 후 부팅 섹터(일부)를 저장하고 복원하는 데 dd를 사용했습니다.

다음 명령을 사용하여 MBR(처음 446바이트, 즉 파티션 테이블을 제외한 모든 항목)을 저장합니다.

dd if=/dev/sda of=/mnt/mbr.bin bs=446 count=1

그런 다음 하드 드라이브의 .iso를 복원한 다음 다음을 사용하여 부팅 섹터를 복원했습니다.

dd if=/mnt/mbr.bin of=/dev/sda bs=446 count=1

이제 내가 겪고 있는 문제는 Windows XP만 설치하기 전에 위의 방법을 사용한 후 Linux 부팅과 Windows XP 부팅 중에서 선택해야 한다는 것입니다. 거기에 뭔가 심각하게 잘못된 것 같습니다.

내 질문은: 위의 두 명령이 부팅 섹터를 저장하고 이후에 복원하기에 충분합니까?

답변1

MBR은 기본적으로 하드 드라이브의 첫 번째 섹터에 있는 512바이트 세그먼트이며 부팅 코드(446바이트 길이), 파티션 테이블(64바이트 길이) 및 부팅 코드 서명(2)의 세 부분으로 구성됩니다. 바이트) 길이). 귀하의 입장에서 무엇이 잘못되었는지는 확실하지 않지만 이것은 나에게 도움이 되었습니다.

그러면 시작 코드 자체만 명시적으로 백업되고 다른 것은 백업되지 않습니다.

[root@host]# dd if=/dev/sda of=/tmp/mbr.img_backup bs=446 count=1

다음으로, 부팅 코드 서명과 함께 저장하지 않으려는 파티션 테이블을 포함하여 MBR을 깨끗하게 지워야 합니다.

[root@host]# dd if=/dev/zero of=/dev/sda bs=512 count=1

이제 시작 코드를 복원합니다.

[root@host]# dd if=/tmp/mbr.img_backup of=/dev/sda bs=446 count=1

답변2

내가 이해한 바에 따르면, OS 패키지 파일 중 하나의 "format" 명령은 부트 섹터를 생성합니다. 운영 체제가 다시 시작되면 11자로 된 "io sys" 및 "msdos sys" 파일을 고정된 위치에 씁니다. 루트 디렉터리에서 io.sys 및 msdos.sys 파일을 찾아 운영 체제를 로드하고 실행합니다.

관련 정보