Ubuntu

在 Ubuntu 中修改核心命令行

  • December 15, 2014

我有許多系統需要修改核心命令行,添加一些選項。

目前,我使用以下程序進行操作:

  1. 打開 /etc/default/grub
  2. 修改 GRUB_CMDLINE_LINUX_DEFAULT,添加選項
  3. 執行更新-grub
  4. 重啟

但是,我更願意將此過程自動化作為數據包安裝的一部分,並避免修改預設文件(因為這通常很脆弱)。

我想做的是:

  1. 刪除文件(在 /etc/grub.d/? 中),覆蓋 GRUB_CMDLINE_LINUX_DEFAULT 或類似文件
  2. 執行 update-grub 並重新啟動

/etc/grub.d/* 中有一堆腳本用於建構實際的菜單配置,但是,沒有明顯的方式與它們互動。生成配置的腳本似乎只讀取 /etc/default/grub :(

如果有辦法刪除文件來修改預設核心命令行,有人可以啟發我嗎?

  1. 如果目錄**/etc/default/grub.d**不存在,則創建它。
  2. 創建一個文件**/etc/default/grub.d/myextraoption.cfg**添加到您想要的變數(僅附加到它,並帶有額外的空間。您要小心不要破壞或破壞那裡的任何現有數據。):
GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT} extra-option"
  1. 執行update-grub

你應該能夠安全地在你的包中包含一個yourpackage.cfg文件,而不會有被覆蓋或破壞其他東西的風險。這些*.cfg*文件中的任何一個都包含在主要預設文件之後,因此請注意這一點並做出相應的計劃。

您幾乎肯定還需要一個 postinst 腳本在安裝包時執行 update-grub,並且為了安全起見,因為它位於*/etc*中,您可能還應該將它包含在包的conffiles中。我認為除非清除包裝,否則這將留下它,因此經銷商在這方面的選擇。

作為參考,第 157 行或附近的 /usr/sbin/grub-mkconfig 是讀取預設文件的內容,包括與*/etc/default/grub.d/.cfg匹配的任何內容。在我看來,這種情況正是它這樣做的原因。

我是根據 Trusty 寫的。我不知道這在多遠的版本中仍然適用。我剛剛檢查了 Lucid,但它不存在。它在 Precise 中。

引用自:https://serverfault.com/questions/648468