Вопрос или проблема
Я пытаюсь добавить опцию ядра “xxx”, добавляя её в существующую строку
GRUB_CMDLINE_LINUX="xxxx crashkernel=auto rhgb quiet"
в /etc/default/grub, но после этого, когда я выполняю
grub2-mkconfig –o /boot/grub2/grub.cfg
он создаёт точно такой же файл grub.cfg, как и раньше (подтверждено с помощью diff).
Что я упускаю?
Я использую CentOS Linux release 7.6.1810 (Core)
Я не использую CentOS (поэтому не могу проверить это), но вот что должно помочь:
GRUB_CMDLINE_LINUX="xxxx crashkernel=auto rhgb quiet ${GRUB_CMDLINE_LINUX}"
Сначала я бы попробовал внести изменения в любой из других файлов в /etc/grub.d
. Вы даже можете намеренно допустить ошибку, чтобы заставить grub2-mkconfig
выдать ошибку.
Также убедитесь, что вы не копируете команду из скрипта, который может быть сохранен на вашем компьютере, или с веб-сайта. Введите команду grub2-mkconfig -o /boot/grub2/grub.cfg
вручную.
Символы “-” и “–” не одинаковы, поэтому легко это упустить.
Ответ или решение
Ваша проблема связана с тем, что при использовании команды grub2-mkconfig
изменения в файле /etc/default/grub
не отражаются в конечном файле конфигурации GRUB. Давайте разберем причины этой проблемы и шаги по её устранению.
Теория
GRUB2 — это загрузчик второй версии, который предоставляет гибкие возможности для управления процессом загрузки операционной системы. Конфигурация GRUB2 в CentOS хранится в файле /etc/default/grub
, где в строке GRUB_CMDLINE_LINUX
вы можете указать параметры, которые передаются ядру. Однако, изменения в этом файле сами по себе не влияют на текущую конфигурацию GRUB, если не сгенерировать новый файл конфигурации путем выполнения команды grub2-mkconfig
с указанием выходного файла, который обычно находится по пути /boot/grub2/grub.cfg
.
Пример
Вы добавили параметр к GRUB_CMDLINE_LINUX
:
GRUB_CMDLINE_LINUX="xxxx crashkernel=auto rhgb quiet"
После чего выполнили:
grub2-mkconfig -o /boot/grub2/grub.cfg
Но итоговый файл конфигурации GRUB не изменился, что говорит о том, что либо конфигурация не была сгенерирована правильно, либо ваш файл /etc/default/grub
не учитывается.
Применение
Для решения проблемы выполните следующие шаги:
-
Проверка правильности команды:
Убедитесь, что вы действительно используете правильный символ минуса. Ваша команда должна быть:grub2-mkconfig -o /boot/grub2/grub.cfg
Это важно, так как тире и длинное тире в системе UNIX/LINUX отличаются.
-
Проверка прав доступа:
Убедитесь, что у вас достаточно привилегий для выполнения команды и записи в файл/boot/grub2/grub.cfg
. Проще всего это сделать от имени суперпользователя или черезsudo
:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
-
Диагностика ошибок:
Внесите намеренную ошибку в один из файлов внутри/etc/grub.d
, например, добавив несуществующую команду, чтобы проверить, обрабатывается ли этот каталог. Выполнитеgrub2-mkconfig
и убедитесь, что ошибка отображается. -
Правильность окружения:
Убедитесь, что ваш системный энвайронмент корректен. Проверьте переменные окружения и посмотрите, нет ли каких-либо скриптов, которые могут переопределять вашу конфигурацию GRUB. Возможно, необходимо пересобрать initramfs, чтобы учесть изменения. -
Отладка:
В крайнем случае, выполните отладку всего процесса. Вручную создайте резервную копию файла/boot/grub2/grub.cfg
, а затем повторно создайте его, проверив все шаги. -
Рестарт и проверка:
После успешной генерации нового файла конфигурации перезагрузите систему и проверьте, применены ли изменения. Для этого после загрузки попробуйте вручную проверить параметры ядра с помощью следующих команд:cat /proc/cmdline
Это отобразит текущие параметры загрузки ядра и поможет понять, был ли добавлен новый параметр "xxx".
Следуя этим советам, вы сможете успешно решить проблему с применением изменений в конфигурации GRUB. Если ошибки продолжаются, возможно, стоит проверить обновления ОС или сам метод конфигурации остается под вопросом. Всегда делайте резервные копии файлов конфигурации перед их изменением.