You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:修改GRUB配置以从exFAT分区成功引导ISO镜像(当前配置引导失败进入initramfs)

求助:修改GRUB配置以从exFAT分区成功引导ISO镜像(当前配置引导失败进入initramfs)

兄弟我太懂你这种折腾半天掉initramfs的崩溃感了,尤其是试过换U盘、删主题甚至哭早饭都没用的情况下😅!先给你戳破核心问题,再给你实打实的GRUB配置修改方案:

问题根源

你看到pendrivelinux那段提示完全命中了!GRUB本身有exFAT模块能读取ISO,但Ubuntu/Kali的默认Live系统initramfs里根本没集成exFAT驱动——当GRUB把引导权交给内核后,系统的初始化阶段找不到exFAT分区上的ISO文件,直接就掉busybox了,和你GRUB装在哪个分区、主题有没有半毛钱关系都没有。

针对性修改方案

第一步:先做全局配置优化(避免分区识别问题)

先把GRUB的exFAT模块加载提前到全局,同时用UUID指定分区(比(hd0,msdos1)更可靠,不会因为BIOS识别的设备编号变动出错):

  1. 在Linux下用blkid命令找到你USB上exFAT分区的UUID(格式是类似XXXX-XXXX或者XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX的字符串)
  2. 修改GRUB全局配置部分:
    if [ -s $prefix/grubenv ]; then
        set have_grubenv=true
        load_env
    fi
    font=unicode
    if loadfont $font ; then
        set locale_dir=$prefix/locale
        set lang=en_IN
    fi
    set gfxmode=auto
    set gfxpayload=keep
    set timeout=60
    set default=0
    # 替换成你的exFAT分区UUID,用UUID指定根分区
    search --no-floppy --fs-uuid --set=root XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
    insmod all_video
    insmod gfxterm
    # 提前加载exfat模块,不要注释
    insmod exfat
    insmod part_msdos
    insmod part_gpt
    insmod regexp
    insmod gettext
    insmod loopback
    insmod iso9660
    insmod gfxmenu
    insmod jpeg
    insmod png
    terminal_output gfxterm
    # 后面的主题加载部分保留不变
    

第二步:修改Ubuntu的引导条目

给Ubuntu的内核参数加上分区UUID和强制加载exFAT驱动的参数,让initramfs阶段能识别到exFAT分区:

# Ubuntu
menuentry "Ubuntu 22.04 Desktop" --class ubuntu --class linux {
    set isofile="/images/ubuntu-22.04.3-desktop-amd64.iso"
    # rmmod tpm (如果不需要可以保留,不影响)
    loopback loop $isofile
    # 关键添加:root=UUID指定分区,modules-load加载exfat和fuse驱动
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=${isofile} quiet splash toram tpm_tis.interrupts=0 root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX modules-load=exfat,fuse
    initrd (loop)/casper/initrd
}

第三步:修改Kali的引导条目

Kali的修改逻辑和Ubuntu一致,同样添加UUID和驱动加载参数:

# Kali Linux
menuentry "Kali Linux Live ISO" --class kali --class linux {
    set isofile="/images/kali-linux-2023.3-live-amd64.iso"
    rmmod tpm
    loopback loop $isofile
    # 同样添加root=UUID和modules-load参数
    linux (loop)/live/vmlinuz boot=live components quiet splash toram noeject findiso=${isofile} tpm_tis.interrupts=0 root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX modules-load=exfat,fuse
    initrd (loop)/live/initrd.img
}

备选方案(如果上面的方法还是不行)

如果你的Ubuntu/Kali Live镜像本身没内置exfat-fuse包,那上面的驱动加载参数可能失效,这时候可以直接把ISO里的核心文件提取出来引导:

  1. 把Ubuntu ISO里的casper文件夹、Kali ISO里的live文件夹直接复制到USB exFAT分区的根目录
  2. 修改对应menuentry为:
    # Ubuntu 直接引导版本
    menuentry "Ubuntu 22.04 Desktop (Direct Boot)" --class ubuntu --class linux {
        search --no-floppy --fs-uuid --set=root XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
        insmod exfat
        linux /casper/vmlinuz boot=casper quiet splash toram tpm_tis.interrupts=0 root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
        initrd /casper/initrd
    }
    
    # Kali 直接引导版本
    menuentry "Kali Linux Live (Direct Boot)" --class kali --class linux {
        search --no-floppy --fs-uuid --set=root XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
        insmod exfat
        linux /live/vmlinuz boot=live components quiet splash toram noeject tpm_tis.interrupts=0 root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
        initrd /live/initrd.img
    }
    

这种方式绕开了loopback读取ISO的步骤,直接引导系统文件,稳定性拉满。

为啥你之前的尝试没用?

  • 删主题、换U盘/电脑:这些都是排查环境问题,但你的核心是系统初始化阶段缺驱动,所以完全不沾边
  • GRUB装在FAT32还是exFAT:只要GRUB能读取到配置和ISO就行,系统启动后还是找不到exFAT分区,所以改了也白搭

备注:内容来源于stack exchange,提问作者GrayedFox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:54:30