在 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-mkimage
grub
是在需要时构建所有其他东西的关键核心。比如,grub-[install,mkstandalone,mkrescue]
都是指的使用grub-mkimage
,所以一旦grub-mkimage
理解了,一切看起来都很容易做。
grub-mkimage
有两种方法将配置文件“附加”到其映像:
选项
-c
,--config=File
(嵌入 FILE 作为早期配置)选项
-m
,--memdisk=file
(将 FILE 嵌入为存储盘包含最终配置文件)
示例:嵌入式配置[$prefix]/boot/grub/[x86_64-efi/]grub.cfg
这存储盘是一个虚拟磁盘设备grub
,具有tarfs
文件系统;那里的各种模块都已“准备好使用”,这意味着它们可以insmod
直接加载。但它们并不像选项中那样直接称为“预加载模块” --modules="blah blah...:"
(最后一个类似于initramfs
Linux操作系统中加载的驱动程序)
此断言的最佳演示是使用一行命令将 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
在哪里
- ftp://ftp.nluug.nl/pub/os/Linux/distr/tinycorelinux/6.x/x86_64/archive/6.0/TinyCorePure64-6.0.iso
grub.cfg
是重现isolinux.cfg
原始实时 ISO 的简单配置引导加载程序
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
最简单的存储盘包含
(memdisk)/boot/grub/grub.cfg
早期嵌入的配置文件。
所有这些内容很快就会作为 grub-mkBootx64.efi @sourceforge.net/projects/toysbox 上的练习出现
答案2
GRUB 支持将配置文件直接嵌入到核心映像中,以便在进入正常模式之前加载它。例如,当无法直接找到真正的配置文件时,或者当您需要调试加载该文件的问题时,这很有用。
...
要嵌入配置文件,请-c
使用grub-mkimage
.
...
嵌入式配置文件可能不直接包含菜单条目,但只能使用[the]config file
[command]从其他地方读取它们。
基于此,该--config
选项旨在嵌入一个配置文件,其中包含用于帮助初始化 grub 的命令,然后再开始正常操作。它无意于嵌入完整的grub.cfg
菜单条目等。