'grub-mkimage --config= '的实际用法

'grub-mkimage --config= '的实际用法

在 Linux上,使用 GRUB 2 Bootloader,我尝试找出--config=.grub-mkimage关于man 1 grub-mkimage这个话题的:

-c, --config=FILE
将 FILE 嵌入为早期的配置

我的第一个猜测是/boot/grub/grub.cfg->,但随后有一个单独的命令来构建此文件,这使我偏离了这个猜测。另一个猜测是/boot/config-3.16.0-4-686-pae(file的输出:“Linux make config build file, ASCII text”)。我发现的其他文件不是 ASCII 而是二进制文件,我想这也不太可能。

问题:可能意味着什么文件或类型的文件?


更新: 找到这个了GRUB 2 的 gnu.org 文档,在 GRUB 提示符的命令中:

configfile file
加载 FILE 作为配置文件。如果 FILE 定义了任何菜单条目,则立即显示包含它们的菜单。

可能是同一个文件?有趣的是:在线手册似乎没有提到这个选项。


更新2:在输出中找到以下行grub-mkrescue --output grub.iso --verbose

grub-mkrescue:信息:grub-mkimage --directory '/usr/lib/grub/i386-pc' --prefix '/boot/grub' --output '/tmp/grub.ZiXwO6/boot/grub/i386- pc/eltorito.img' --format 'i386-pc-eltorito' --压缩 'auto'--config '/tmp/grub.UtCj8W''biosdisk' 'iso9660'`

所以--config '/tmp/grub.UtCj8W'排除/boot/grub/grub.cfg..不知何故?不,在grub-install激活详细输出的情况下执行时,我没有找到任何有关配置的内容


更新3:man 1 grub2-mkstandalone打开man 3 grub2-mkstandalone,但发出man 3 grub2-mkstandalone会导致错误消息。另外:grub-mkimage --config=似乎只出现在手册页中,但既不在输出中出现,--help也不在--usage输出中出现。

答案1

grub-mkimagegrub是在需要时构建所有其他东西的关键核心。比如,grub-[install,mkstandalone,mkrescue]都是指的使用grub-mkimage,所以一旦grub-mkimage理解了,一切看起来都很容易做。

grub-mkimage有两种方法将配置文件“附加”到其映像:

  1. 选项-c--config=File (嵌入 FILE 作为早期配置)

  2. 选项-m--memdisk=file(将 FILE 嵌入为存储盘包含最终配置文件)

示例:嵌入式配置[$prefix]/boot/grub/[x86_64-efi/]grub.cfg

存储盘是一个虚拟磁盘设备grub,具有tarfs文件系统;那里的各种模块都已“准备好使用”,这意味着它们可以insmod直接加载。但它们并不像选项中那样直接称为“预加载模块” --modules="blah blah...:" (最后一个类似于initramfsLinux操作系统中加载的驱动程序)

此断言的最佳演示是使用一行命令将 a 重新掌握livecd_only_biosPC_awared为 a livecd_isohybrid_bios_and_efi_awared

xorriso -osirrox on -indev TinyCorePure64-6.0.iso -outdev new.iso \
-cpr efime.img /boot -- \
-rm /boot/isolinux/boot.cat -- \
-mkdir /.disk /boot/grub -- \
-cpr grub.cfg /boot/grub -- \
-cpr info /.disk/info -- \
 -as mkisofs  -graft-points -volid "tinyefi" -r -J -l -eltorito-boot boot/isolinux/isolinux.bin -eltorito-catalog boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin -eltorito-alt-boot -e boot/efime.img -no-emul-boot -isohybrid-gpt-basdat

在哪里

  1. ftp://ftp.nluug.nl/pub/os/Linux/distr/tinycorelinux/6.x/x86_64/archive/6.0/TinyCorePure64-6.0.iso
  2. grub.cfg是重现isolinux.cfg原始实时 ISO 的简单配置
  3. 引导加载程序efime.img是通过以下方式获得的

    grub-mkimage -m memdisk -O x86_64-efi -o grubx64.efi --compression=xz disk part_msdos part_gpt linux linux16 loopback normal configfile test search search_fs_uuid search_fs_file true iso9660 test search_label efi_uga efi_gop gfxterm gfxmenu gfxterm_menu fat ext2 ntfs cat echo ls memdisk tar

  4. 最简单的存储盘包含(memdisk)/boot/grub/grub.cfg早期嵌入的配置文件。

所有这些内容很快就会作为 grub-mkBootx64.efi @sourceforge.net/projects/toysbox 上的练习出现

答案2

来自 Grub 手册 2.04,第 6.5 节:

GRUB 支持将配置文件直接嵌入到核心映像中,以便在进入正常模式之前加载它。例如,当无法直接找到真正的配置文件时,或者当您需要调试加载该文件的问题时,这很有用。
...
要嵌入配置文件,请-c使用grub-mkimage.
...
嵌入式配置文件可能不直接包含菜单条目,但只能使用[the] config file[command]从其他地方读取它们。

基于此,该--config选项旨在嵌入一个配置文件,其中包含用于帮助初始化 grub 的命令,然后再开始正常操作。它无意于嵌入完整的grub.cfg菜单条目等。

相关内容