Назад | Перейти на главную страницу

Изменение командной строки ядра в Ubuntu

У меня есть несколько систем, в которых мне нужно изменить командную строку ядра, добавив несколько параметров.

На данный момент я делаю это по следующей схеме:

  1. Откройте / etc / default / grub
  2. Измените GRUB_CMDLINE_LINUX_DEFAULT, добавив параметры
  3. Запустите update-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"
    
  3. Бегать update-grub.

Вы должны иметь возможность безопасно включать yourpackage.cfg файл в вашем пакете без риска его перезаписи или чего-то еще. Любой из тех .cfg Файлы включаются после основного файла по умолчанию, поэтому просто помните об этом и планируйте соответственно.

Вы почти наверняка захотите, чтобы сценарий postinst запускал update-grub, когда ваш пакет установлен, и на всякий случай, поскольку он находится в /и т.д вам, вероятно, также следует включить его в Conffiles в вашем пакете. Я думаю, что это оставит это позади, если не будет произведена чистка упаковки, поэтому выбор дилера в этой части.

Для справки, / usr / sbin / grub-mkconfig в строке 157 или около нее - это то, что читает файлы по умолчанию, включая все, что соответствует /etc/default/grub.d/*.cfg. Мне кажется вероятным, что именно эта ситуация и происходит.

Я написал это на основе Trusty. Я не знаю, как далеко в выпусках это все еще применимо. Я только что проверил Lucid, но его там нет. Он есть в Precise.

Согласно документация по grub, может оказаться полезным отредактировать /etc/grub.d/40_custom файл с grub-mkconfig;

/etc/grub.d/40_custom особенно полезен для добавления целых пунктов пользовательского меню; просто введите пункты меню, которые вы хотите добавить, в конец этого файла, убедившись, что по крайней мере первые две строки остались нетронутыми.

Возможно, вы могли бы взять одну из первых записей, скопировать ее в конец этой конфигурации и добавить желаемые параметры? Это должно быть ориентировано на будущее, поскольку в основном сохраняется существующая конфигурация и добавляется ваша настраиваемая конфигурация в качестве дополнительной опции меню.


Изменить: я понимаю, что вы запросили, чтобы это была строка по умолчанию, но приведенное выше является компромиссом редактирования с менее потенциально деструктивной методологией (и в любом случае вы можете использовать grub-mkconfig для выполнения более смелой задачи, например, изменение значения по умолчанию)

grub 2.02 появляется для исходных файлов, соответствующих /etc/default/grub.d/*.cfg, в дополнение к / etc / default / grub.

Возможно, это работает и с любой версией вашей Ubuntu.