Изменение ядра cmdline в Ubuntu

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

В данный момент я делаю это с помощью следующей процедуры:

  1. Открытый/etc/default/grub
  2. Измените GRUB_CMDLINE_LINUX_DEFAULT, добавив опции
  3. Выполненная личинка обновления
  4. Перезагрузка

Однако я предпочел бы автоматизировать этот процесс как часть пакетной установки и стараться не изменять файл по умолчанию (поскольку это является обычно хрупким).

То, что я хотел бы сделать, является чем-то как:

  1. Отбросьте файл (в/etc/grub.d/?), переопределяя GRUB_CMDLINE_LINUX_DEFAULT или подобный
  2. Выполненная личинка обновления и перезагрузка

Существует груда сценариев в/etc/grub.d /* которые используются для создания фактической конфигурации меню, однако, нет никакого очевидного способа взаимодействовать с ними. Сценарий, который генерирует конфигурацию только, кажется, читает/etc/default/grub :(

Кто-то может просветить меня, если существует способ отбросить файл для изменения командной строки ядра по умолчанию?

5
задан 2 December 2014 в 12:35
3 ответа
  1. Создайте каталог /etc/default/grub.d , если он еще не существует.
  2. Создайте файл / etc / default / grub .d / myextraoption.cfg добавление к нужной переменной (Добавить только к ней с дополнительным пробелом. Будьте осторожны, чтобы не испортить и не испортить существующие там данные.):

     GRUB_CMDLINE_LINUX_DEFAULT = "$  {GRUB_CMDLINE_LINUX_DEFAULT} дополнительная опция "
     
  3. Запустите update-grub .

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

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

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

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

5
ответ дан 3 December 2019 в 01:37

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

Может быть, это работает и на той версии, которая есть в вашей Ubuntu.

.
0
ответ дан 3 December 2019 в 01:37

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

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

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


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

.
0
ответ дан 3 December 2019 в 01:37

Теги

Похожие вопросы