最近,我为 Ubuntu 22.04.2 LTS 制作了一个 Ubuntu USB 安装程序。
基本设置如下:
我的 USB 有 2 个分区,一个是 EFI 分区(安装了 Grub2),另一个是标记为“LINUX”的数据分区(它有三个文件:ubuntu-22.04.2-desktop-amd64.iso、vmlinuz 和 initrd)
Grub2 具有以下菜单项:
menuentry "Ubuntu 22.04.2 LTS" --class ubuntu {
search --no-floppy --label "LINUX" --set root
set iso_file=/ubuntu-22.04.2-desktop-amd64.iso
loopback loop ${iso_file}
linux /vmlinuz iso-scan/filename=${iso_file} file=/cdrom/preseed/ubuntu.seed quiet splash=silent
initrd /initrd
}
现在,如果数据分区采用 ExFAT 格式,它会给我一个 Busybox,提示找不到 iso 文件。但是,ext4 在此设置下运行良好。
我尝试了以下方法,但都不起作用:
提取 initrd 文件并将 exfat 驱动程序添加到 lib/modules/5.19.XXXX/kernel/fs,然后重新打包。在数据分区和安装程序 ISO 文件中替换此 initrd。但是,它给了我 Busybox,我检查了一下,我之前添加的 exfat 驱动程序文件夹没有显示。
复制现有的 ubuntu initrd 和 vmlinuz 来替换数据分区文件和 ISO 文件。同样没用
现在,我有点困惑,Ubuntu ISO 文件如何加载 ubuntu 安装程序并启动安装程序。我在网上看到了很多资料,以下内容似乎很合理,但我认为我错过了一些重要的部分:
UEFI 启动后找到 Bootx64.efi 和对应的 grub.cfg(UEFI 引导到 Grub2),然后 Grub2 找到 vmlinuz 和 initrd,让 vmlinuz 充当内核,将 initrd 解压到 RAM 磁盘,建立基本文件系统(Grub2 引导到 vmlinuz),在此过程中,加载内核内置驱动程序和模块。
但是当我解压 filesystem-squashfs 文件时,我可以看到 exfat 驱动程序!!! 缺少的部分是安装过程中实际加载的内容:
Q1:看起来 initrd 没有被使用或者被部分使用或者被其他东西覆盖,所以我的修改不起作用。
Q2:安装启动时未使用或覆盖 squashfs,否则驱动程序应该存在。
任何帮助都将不胜感激!