
그래서 grub-mkstandalone을 사용하여 생성된 완전한 기능의 .img 파일이 있습니다. 이것을 CD에 넣으면 잘 부팅되고 ISO는 VM에서 훌륭하게 로드됩니다.
이제 제가 하고 싶은 것은 일반 부팅인 것처럼 기존 grub.cfg를 이 .img 파일에 연결하는 것입니다. 말이 돼? 예를 들어, grub이 설치된 USB 펜드라이브가 있습니다. ISO를 부팅하도록 구성된 여러 루프 장치가 있습니다. 모든 리눅스. 하지만 이 경우에는 자체 grub.cfg가 있는 .img 파일을 대신 로드하려고 합니다. 따라서 .img가 로드되면 grub.cfg의 메뉴를 보고 그 메뉴에서 OS를 부팅하고 싶습니다.
며칠 동안 답변을 찾고 문서를 읽었지만 답변을 찾을 수 없었습니다.
질문이 명확하지 않은 경우 알려주시면 명확하게 설명하겠습니다. 미리 감사드립니다.
편집하다:
예를 들어 다음과 같은 메뉴 항목이 있다고 가정해 보겠습니다.
menuentry 'My OS' {
set isofile="/iso/os_5.1.1_amd64.iso"
loopback loop (hd0,msdos1)$isofile
linux (loop)/vmlinuz boot=live toram nomodeset
initrd (loop)/initrd
}
이것은 잘 작동합니다. 하지만 이렇게 Linux를 로드하는 대신 내가 만든 .img 파일을 로드하여 ISO 내부에 있는 grub 메뉴를 볼 수 있도록 하고 싶습니다.
그럼 이런 것?
menuentry 'My OS' {
set isofile="/iso/os_5.1.1_amd64.iso"
loopback loop (hd0,msdos1)$isofile
.... (loop)/boot/grub/my.img
}
점들은 내가 이 작업을 수행할 것인지 모르는 몇 가지 마법을 나타냅니다(가능한 경우).
답변1
EFI 이미지의 경우 다음을 사용할 수 있습니다 chainloader
(하지만 당시 BIOS를 사용하고 있었던 것 같습니다. 해당 기능이 작동하는지 모르겠습니다).
menuentry 'My OS' {
chainloader (hd0,msdos1)/BOOT/EFI/somedir/somebin.efi
}
그래서 나는 노력했을 것입니다 (테스트되지 않은!!):
menuentry 'My OS' {
set isofile="/iso/os_5.1.1_amd64.iso"
loopback loop (hd0,msdos1)$isofile
chainloader (loop)/boot/grub/my.img
}