在Ubuntu中修改内核cmdline

Modified on: Sun, 06 Oct 2019 17:20:02 +0800

我有许多系统需要修改内核cmdline,添加一些选项。

目前我使用以下程序执行此操作:

  1. 打开/ etc / default / grub
  2. 修改GRUB_CMDLINE_LINUX_DEFAULT,添加选项
  3. 运行update-grub
  4. 重新启动
  5. 醇>

    但是,我更愿意将此过程自动化为数据包安装的一部分,并避免修改默认文件(因为这通常很脆弱)。

    我想要做的是:

    1. 删除文件(在/etc/grub.d/?中),覆盖GRUB_CMDLINE_LINUX_DEFAULT或类似文件
    2. 运行update-grub并重新启动
    3. 醇>

      /etc/grub.d/*中有一堆脚本用于构建实际的菜单配置,但是没有明显的方法与它们进行交互。生成配置的脚本似乎只读取/ etc / default / grub :(

      如果有办法删除文件来修改默认的内核命令行,有人可以告诉我吗?

作者:pehrs

最佳答案

  1. 如果目录不存在,请创建目录/etc/default/grub.d
  2. 创建一个文件/etc/default/grub.d/myextraoption.cfg添加到您想要的变量(仅附加到它,有一个额外的空格。你要小心不破坏或破坏任何现有数据。):

    GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT} extra-option"
    
  3. 运行update-grub

  4. 醇>

    您应该能够安全地在程序包中包含 yourpackage.cfg 文件,而不会被覆盖或破坏其他内容的风险。任何 .cfg 文件都包含在主要的默认文件之后,所以请注意这一点并做出相应的计划。

    您几乎肯定也想要一个postinst脚本在安装软件包时运行update-grub,并且为了安全起见,因为它位于 / etc 中,您可能还应该将其包含在包裹中的> conffiles。我认为,除非彻底清除包装,否则这将会落后,所以经销商可以选择这一点。

    作为参考,第157行或附近的/ usr / sbin / grub-mkconfig是读取默认文件的内容,包括与 /etc/default/grub.d/*匹配的内容。 CFG 。我觉得这种情况正是这样的原因。

    我是基于Trusty写的。我不知道版本在多久之后仍然适用。我刚检查过Lucid而且它不存在。它在Precise中。

作者:,Jeff Snider

相关问答

添加新评论