![다른 시스템에서 사용하는 하드 드라이브에 grub을 설치합니다.](https://linux55.com/image/16407/%EB%8B%A4%EB%A5%B8%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%ED%95%98%EB%93%9C%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C%EC%97%90%20grub%EC%9D%84%20%EC%84%A4%EC%B9%98%ED%95%A9%EB%8B%88%EB%8B%A4..png)
따라서 다음과 같은 파티션 테이블이 있는 임베디드 시스템용 512MB 플래시 칩이 있습니다.
p1: 32MB boot partition
p2: 200MB recovery partition
p3: 200MB normal partition
저는 우분투(개발) 머신에서 buildroot를 사용하여 "일반" 파티션의 200MB ext2 이미지를 컴파일하고 있습니다. 이 시점에서 내 개발 상자에서 buildroot에서 생성된 이미지를 플래시 칩에 추가합니다(/dev/sdd의 ide-USB 커넥터를 사용하여 연결됨).
dd if=./output/images/rootfs.ext2 of=/dev/sdd3
좋습니다. /dev/sdd3을 마운트하고 임베디드 장치가 사용할 전체 파일 시스템을 볼 수 있습니다.
이제 이 플래시 칩에 grub을 설치하고 싶지만 어떻게 해야 할지 모르겠습니다. 나는 시도했다:
grub-install /dev/sdd
그러나 내장 장치에 플래시 칩을 삽입하고 전원을 켜면 grub이 로드되지 않습니다(커서가 깜박이는 검은색 화면에만 나타납니다. 오류는 없습니다).
답변1
많은 검색과 추측, 확인 끝에 문제에 대한 해결책을 찾았습니다.
첫 번째 dd rootfs 이미지 buildroot는 다음을 생성합니다.
sudo dd if=./output/images/rootfs.ext2 of=/dev/sdd3
그런 다음 sdd3에서 sdd1로 /boot를 복사하고, menu.lst 파일을 생성하고, bzImage를 복사합니다.
마지막으로 grub을 실행합니다.
sudo grub --device-map=/dev/null
> device (hd0) /dev/sdd
> root (hd0,0)
> setup (hd0)
> quit
드라이브를 시스템에 연결하기만 하면 모든 것이 로드됩니다.
답변2
Grub에게 디스크가 새 시스템의 기본 하드 드라이브가 될 것임을 알리고 부트 섹터에 맞지 않는 부트 로더 부분을 찾을 수 있는 위치를 알려주어야 합니다. Grub은 부팅 시 디스크 이름과 실행 중인 운영 체제의 디스크 이름 간의 대응을 장치 맵으로 참조합니다.
/media/sdd3/boot/grub/device.map
포함하도록 편집하면 생각합니다.
(hd0) /dev/sdd
그런 다음 grub-install --root-directory=/media/sdd3/boot/grub/device.map
.