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

Как мне установить параметры ядра по умолчанию в CentOS для всех существующих и будущих ядер?

Я бы хотел удалить rhgb и quiet параметры ядра, которые используются по умолчанию при загрузке ядра в CentOS 6, но я хочу, чтобы это применялось ко всем установленным в данный момент ядрам, а также к любым ядрам, установленным в будущем. Мне нужно сделать это из сценария, поэтому редактирование файлов вручную невозможно, и любые изменения файлов должны выполняться как можно более аккуратно.

В Debian / Ubuntu я бы изменил GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub а затем запустить update-grub. Я не могу найти такую ​​настройку в /etc/sysconfig/grub или /etc/sysconfig/kernel однако нет и update-grub сценарий.

В Debian / Ubuntu, grub.cfg полностью генерируется скриптами, и любые ручные изменения, внесенные в него, будут уничтожены. Однако в RHEL / CentOS grub.cfg изменяется скриптами, но ручные изменения сохраняются и фактически являются каноническим местоположением для определенных настроек.

Инструмент, который управляет grub.cfg является grubby, который называется /sbin/new-kernel-pkg когда ядра установлены или удалены. В --copy-default параметр передается в grubby когда установлено новое ядро, что заставляет его копировать параметры ядра из текущего ядра по умолчанию. Таким образом, установка параметров ядра по умолчанию для ядер, устанавливаемых в будущем, выполняется путем редактирования записи для ядра по умолчанию в grub.cfg.

Если бы вы не автоматизировали это, вы могли бы просто отредактировать grub.cfg вручную и измените все текущие записи ядра. Однако вы можете использовать grubby модифицировать grub.cfg чтобы избежать его разбора или написания регулярных выражений. Например, это удалит rhgb и quiet параметры из указанной версии ядра.

# grubby --update-kernel=/boot/vmlinuz-2.6.32-220.13.1.el6.x86_64 --remove-args="rhgb quiet"

Однако, похоже, нет возможности перечислить текущие настроенные ядра, поэтому вам придется обнаружить их другим способом. Один вариант - просто поискать vmlinuz файлы в /boot/:

#!/bin/sh
for KERNEL in /boot/vmlinuz-*; do
    grubby --update-kernel="$KERNEL" --remove-args="rhgb quiet"
done

Мы нашли решение для CentOS! yum сам использует grubby! (strace, спасибо!) grubby имеет параметр "--copy-default", и я думаю, что yum работает с ним неаккуратно. Поэтому единственное, что вам нужно сделать, это добавить в grub.conf все параметры ядра, необходимые для текущего ядра по умолчанию, и перезагрузиться. После перезагрузки вы можете установить новое ядро!