我正在使用以下命令构建多引导isohybrid映像:
xorriso -as mkisofs -iso-level 3 -full-iso9660-filenames -volid "MULTIBOOT" -eltorito-boot boot/isolinux/isolinux.bin -eltorito-catalog boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -isohybrid-mbr ${isodir}boot/isolinux/isohdpfx.bin -eltorito-alt-boot -e boot/isolinux/efiboot.img -no-emul-boot -isohybrid-gpt-basdat -output ~/output.iso ${isodir}
在BIOS模式下启动时会按预期加载isolinux bootloader,但由于我想使用grub,我使用此配置文件对其进行链式加载:
Default Grub2
LABEL Grub2
SAY Switching to Grub2...
Linux /boot/grub/lnxboot.img
INITRD /boot/grub/core.img
Grub加载,但不是显示主菜单,而是下降到救援控制台,声称它无法识别文件系统。有趣的是,如果我从CD加载iso,但是如果我将其刻录到USB驱动器,则会发生这种情况。在这种情况下,Grub找到文件系统并按预期工作。
这是我当前grub.cfg的开头(没有菜单条目):
insmod iso9660
insmod gfxmenu
insmod png
insmod part_msdos
insmod part_gpt
insmod fat
insmod ntfs
insmod ext2
insmod efi_gop
insmod efi_uga
if [ "${grub_platform}" != "efi" ]; then
insmod vbe
insmod vga
fi
insmod gfxterm
terminal_output gfxterm
set gfxmode=800x600
search --file --no-floppy --set=root /multiboot/menu/main_menu.cfg
#set root='hd0,msdos1'
set timeout=30
set theme="/boot/grub/themes/multiboot/theme.txt"
loadfont /boot/grub/fonts/unifont-bold-16.pf2
loadfont /boot/grub/fonts/unifont-regular-16.pf2
loadfont /boot/grub/fonts/unifont-regular-14.pf2
loadfont /boot/grub/fonts/unifont-regular-32.pf2
set default=1
我的猜测是我的core.img缺少一些模块,以便在从CD启动时能够正常工作,但我已经在我的core.img上专门包含了le iso9660模块,但没有成功
答案 0 :(得分:1)
经过一段时间的睡眠和修修补补,我得到了解决方案。我必须使用以下命令创建core.img:
grub-mkimage -O i386-pc -c common.cfg -p /boot/grub biosdisk part_msdos part_gpt fat ntfs exfat iso9660 search -o core.img
使用包含此内容的common.cfg
文件:
search --file --no-floppy --set=root /multiboot/menu/main_menu.cfg
set cmdpath=($root)
set prefix=($root)/boot/grub