GRUB2 체인로더: 왜 작동하지 않나요?

GRUB2 체인로더: 왜 작동하지 않나요?

GRUB2를 사용하여 드라이브의 다른 파티션을 체인로드하여 멀티부팅 USB 플래시 드라이브를 만들려고 합니다. 작동하지 않습니다. 나하지 마라멀티부팅 플래시 드라이브를 만드는 방법에 대한 조언을 원합니다. 나는 그렇게 할 수 있는 방법이 많다는 것을 알고 있습니다. 그래요오직이 특정 방법이 작동하지 않는 이유를 알아내는 데 관심이 있습니다.

배경 정보: 두 개의 USB 드라이브가 있습니다. USB1과 USB2라고 부르겠습니다. 나는 현재 멀티부트 친화적인 방식으로 둘 중 하나에 Debian Wheezy를 설치하려고 합니다. 이제 ISO를 USB1(/dev/sdb)에 추가하면 다음과 같습니다.

dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdb

그러면 데비안을 설치할 수 있는 부팅 가능한 멋진 드라이브가 생성됩니다. 또한 USB2에 GRUB2를 설치하면 다음을 사용하여 USB1을 성공적으로 체인로드할 수 있습니다.

search --label --set=root "Debian 7.0.0 i386 1"
chainloader +1
boot

이제 내 문제는 다음과 같습니다. 대신 USB2에 두 번째 파티션을 만들고 여기에 iso를 추가하면 다음과 같습니다.

dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdc2

작동하지 않는 체인 로딩. 오류 메시지는 표시되지 않지만 깜박이는 대시(응답 없음)와 함께 검은색 화면만 표시됩니다. (두 드라이브 모두에서 이 작업을 시도했기 때문에 하드웨어 결함이 탓이라고는 생각하지 않습니다.)

왜 이것이 작동하지 않습니까? 서로 다른 드라이브를 체인로드하는 것과 동일한 데이터가 포함된 동일한 드라이브의 다른 파티션을 체인로드하는 것의 차이점은 무엇입니까?

답변1

우선, 디스크 이미지는 파티션 이미지와 다릅니다. 하나(디스크 이미지로 보이는 것)를 둘 다로 사용하려고 하는데 이는 잘못된 것입니다. 오류가 없다고 해서 모든 것이 괜찮다고 가정하지 마십시오 dd. 실제 IO 오류가 발생하지 않는 한 명령한 것은 무엇이든 기꺼이 수행합니다.

드라이브를 체인로드하면 GRUB는 마스터 부트 레코드를 찾습니다. 이는 디스크 내용을 시작하고 부트 코드를 포함하는 일종의 것입니다. 그러나 파티션 구조는 다릅니다. 코드에서 시작되지도 않습니다. 부트 레코드가 있지만 다른 위치에 있습니다. GRUB도 이를 체인로드할 수 있습니다. 하지만 절차는 다릅니다. 디스크 이미지를 파티션에 넣으면 쉽게 사용할 수 있는 어떤 것도 생성되지 않으며 확실히 GRUB는 거기에서 MBR을 기대하지 않습니다. 대신 PC에 결코 건강하지 않은 임의의 기계어 코드를 실행합니다.

그 작업을 수행하려면 데비안 파티션의 내용을 여기에 복사하고 그 위에 GRUB를 설치해야 합니다. 도중에 실수가 없는 한 완벽하게 작동해야 합니다. 을 다시 만드는 것을 잊지 마세요 /dev/sdc2!

관련 정보