Я бы хотел удалить 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 все параметры ядра, необходимые для текущего ядра по умолчанию, и перезагрузиться. После перезагрузки вы можете установить новое ядро!