为什么 grub-mkrescue 不接受“--core-compress=xz”选项?

为什么 grub-mkrescue 不接受“--core-compress=xz”选项?

是缺少某些软件包还是缺少其他选项?或者只是 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,没有这样的代码。

相关内容