У меня есть много систем, в которых я должен изменить ядро cmdline, добавив несколько опций.
В данный момент я делаю это с помощью следующей процедуры:
Однако я предпочел бы автоматизировать этот процесс как часть пакетной установки и стараться не изменять файл по умолчанию (поскольку это является обычно хрупким).
То, что я хотел бы сделать, является чем-то как:
Существует груда сценариев в/etc/grub.d /* которые используются для создания фактической конфигурации меню, однако, нет никакого очевидного способа взаимодействовать с ними. Сценарий, который генерирует конфигурацию только, кажется, читает/etc/default/grub :(
Кто-то может просветить меня, если существует способ отбросить файл для изменения командной строки ядра по умолчанию?
Создайте файл / etc / default / grub .d / myextraoption.cfg добавление к нужной переменной (Добавить только к ней с дополнительным пробелом. Будьте осторожны, чтобы не испортить и не испортить существующие там данные.):
GRUB_CMDLINE_LINUX_DEFAULT = "$ {GRUB_CMDLINE_LINUX_DEFAULT} дополнительная опция "
Запустите update-grub
.
У вас должна быть возможность безопасно включить файл yourpackage.cfg в свой пакет без риска его перезаписи или затирания чего-либо еще. Любой из этих файлов .cfg включается после основного файла по умолчанию, так что просто помните об этом и планируйте соответственно.
Вы почти наверняка захотите, чтобы сценарий postinst запускал update-grub, когда ваш пакет установлен, и на всякий случай, поскольку он находится в / etc , вам, вероятно, следует также включить его в conffiles в вашем пакете. Я думаю, что это оставит это позади, если не будет произведена очистка пакета, поэтому выбор дилера в этой части.
Для справки, / usr / sbin / grub-mkconfig в строке 157 или около нее. это то, что читает файлы по умолчанию, включая все, что соответствует /etc/default/grub.d / *. cfg . Мне кажется вероятным, что именно в этой ситуации это происходит.
Я написал это на основе Trusty.Я не знаю, как далеко в выпусках это все еще применимо. Я только что проверил Lucid, но его там нет. Он есть в Precise.
grub 2.02 появляется в исходных файлах, соответствующих /etc/default/grub.d/*.cfg в дополнение к /etc/default/grub.
Может быть, это работает и на той версии, которая есть в вашей Ubuntu.
. Согласно документации grub, возможно, вам будет полезно отредактировать файл /etc/grub.d/40_custom
с помощью grub-mkconfig
;
/etc/grub. d/40_custom особенно полезен для добавления целых пунктов пользовательского меню; просто введите пункты меню, которые вы хотите добавить в конце этого файла, убедитесь, что хотя бы первые две строки остались нетронутыми.
Возможно, вы могли бы взять одну из первых строк и скопировать ее в конец этого конфигурационного файла, а затем добавить нужные вам опции? Это должно быть сделано в будущем, так как в основном это сохранение существующего конфигурационного файла и добавление пользовательского конфигурационного файла в качестве дополнительного меню-опции.
Редактирование: Я понимаю, что вы просили, чтобы это была строка по умолчанию, но вышеизложенное является компромиссом в редактировании с менее потенциально разрушительной методологией (и в любом случае, вы могли бы использовать grub-mkconfig
для выполнения более смелой задачи, такой как изменение по умолчанию)