是缺少某些软件包还是缺少其他选项?或者只是 grub-mkresuce 的一个错误?是一些例子对于--core-compress=
选择?
$ grub-mkrescue --core-compress=xz --compress=xz -o grub.iso ./iso
grub-mkrescue: --core-compress: (PROGRAM ERROR) Option should have been recognized!?
Try 'grub-mkrescue --help' or 'grub-mkrescue --usage' for more information.
答案1
似乎选项 --core-compress 已声明但未实现。如果您使用 grub-mkrescue 及其帮助程序未知的选项,则此选项将被转发到 xorriso,如果它也不知道该选项,它将抱怨:
xorriso : FAILURE : -as mkisofs: Unrecognized option '--XYZ-compress=xz'
但是您会看到 GRUB“程序错误”,因为 include/grub/util/install.h 有
{"core-compress", GRUB_INSTALL_OPTIONS_INSTALL_CORE_COMPRESS, \
"xz|none|auto", \
0, N_("choose the compression to use for core image"), 2}, \
如果您使用该选项,它会被转换为数字代码 GRUB_INSTALL_OPTIONS_INSTALL_CORE_COMPRESS。现在 GRUB 应该在某处有一段代码来识别该数字,读取参数“xz”,并注册用户的愿望。
这是通过“--compress=xz”完成的。 install.h 有:
{ "compress", GRUB_INSTALL_OPTIONS_INSTALL_COMPRESS, \
"no|xz|gz|lzo", 0, \
N_("compress GRUB files [optional]"), 1 }, \
和 util/grub-install-common.c 有:
case GRUB_INSTALL_OPTIONS_INSTALL_COMPRESS:
if (strcmp (arg, "no") == 0
...
if (strcmp (arg, "gz") == 0)
...
if (strcmp (arg, "xz") == 0)
但是对于GRUB_INSTALL_OPTIONS_INSTALL_CORE_COMPRESS,没有这样的代码。