Grub 菜单项:自动查找 vmlinuz 和 initrd.img

Grub 菜单项:自动查找 vmlinuz 和 initrd.img

我想知道,我配置了一个 USB 密钥来加载 linux这边走

它工作得很好,但是我需要手动配置该grub.cfg文件,使其看起来像:

insmod loopback
insmod iso9660

menuentry 'XUbuntu 16.04 "Xenial Xerus" -- amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

menuentry 'Debian 9.3.0 amd64 netinst' {
          set isofile="/linux-iso/debian-9.3.0-amd64-netinst.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
      linux (loop)/install.amd/vmlinuz boot=live config findiso=$isofile
      initrd (loop)/install.amd/initrd.gz
}

正如您所看到的,大多数代码是相同的,除了加载内核的 linux 之外linuxinitrd有时文件位于/install.amd,有时位于initrd.gz,有时initrd.lz......而且我什至没有提到内核的不同选项。相当混乱。

问题是,在现实生活中,如果我只是dd在 U 盘上创建一个 ISO,系统就可以在它上启动,而无需任何其他信息。所以我猜想,有一种方法可以恢复有关内核的信息以自动加载...是否可以将其实现到 grub 中,以便我可以在最好的情况下将一堆信息放入我的文件夹.iso/linux-iso,让 grub 自己找到要加载的内核和选项?

谢谢你!

注:我愿意不是想要一个答案告诉我使用这个或这个软件来构建我的 USB 记忆棒,我想自己实现它。

答案1

如果我只是在 U 盘上执行 dd 操作,系统就可以在 U 盘上启动,无需任何其他信息。

这是可能的,因为 ISO 映像已准备好isohybrid或等效地不仅包括 CD/DVD 式引导加载程序,还包括硬盘式引导加载程序(或引导加载程序:一个用于传统 BIOS+MBR 引导,另一个用于 UEFI)目的是dd将该 ISO 映像复制到 USB 记忆棒上。硬盘样式引导加载程序的配置将包括该 ISO 映像中使用的特定路径和引导选项。

请参见:http://www.syslinux.org/wiki/index.php?title=Isohybrid

您可以编写一个脚本来从每个 ISO 映像中查找通用 ISOLINUX 引导加载程序配置文件,从那里读取相应的linuxinitrd,然后组装一个涵盖多个 ISO 的引导加载程序配置文件。但是,在准备多 ISO USB 记忆棒时,这样的脚本更容易实现在功能齐全的操作系统中运行,而不是在实际的引导过程中运行。

相关内容