Grub无法识别isohybrid图像上的fat32文件系统

时间:2017-08-03 16:50:25

标签: filesystems iso grub

我正在使用以下命令构建多引导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模块,但没有成功

1 个答案:

答案 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