그래서 grub-mkstandalone을 사용하여 생성된 완전한 기능의 .img 파일이 있습니다. CD에 넣었더니 부팅이 잘 됐고, ISO는 가상머신에 잘 로드됐어요.
이제 제가 하고 싶은 것은 일반 부팅인 것처럼 기존 grub.cfg를 이 .img 파일에 연결하는 것입니다. 말이 돼? 예를 들어, grub이 설치된 USB 플래시 드라이브가 있습니다. ISO를 부팅하도록 구성된 여러 루프 장치가 있습니다. 모든 리눅스. 하지만 이 경우에는 .img 파일(자체 grub.cfg가 있음)을 로드하려고 합니다. 그래서 .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를 로드하는 대신 ISO 내부에서 grub 메뉴를 볼 수 있도록 내가 만든 .img 파일을 로드하고 싶습니다.
그럼 이런 것?
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
}