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

9

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

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

mgorven
источник

Ответы:

13

В 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
mgorven
источник
5
Вы можете использовать его для всех существующих и будущих ядер, используя ALL. grubby --update-kernel=ALL --remove-args="rhgb quiet"
Бенджаррелл
Если у кого-то еще возникают проблемы с расшифровкой, то это говорит о том, что любые изменения, которые вы вносите в параметры ядра, grub.confбудут автоматически добавляться к любым обновлениям ядра
ub3rst4r
1

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

user146279
источник