web-dev-qa-db-ja.com

CentOSで既存および将来のすべてのカーネルのデフォルトのカーネルパラメータを設定するにはどうすればよいですか?

CentOS 6でカーネルを起動するときにデフォルトで使用されるrhgbおよびquietカーネルパラメーターを削除したいのですが、これを現在インストールされているすべてのカーネルに適用するだけでなく、将来インストールされるカーネル。スクリプトからこれを行う必要があるので、ファイルを手動で編集することはできません。ファイルの変更はできるだけきれいに行う必要があります。

Debian/Ubuntuでは、GRUB_CMDLINE_LINUX_DEFAULT/etc/default/grubを変更してから、update-grubを実行します。 /etc/sysconfig/grubまたは/etc/sysconfig/kernelでこのような設定を見つけることはできません。また、update-grubスクリプトもありません。

9
mgorven

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"

ただし、現在構成されているカーネルを一覧表示するオプションはないようです。そのため、これらを別の方法で発見する必要があります。 1つのオプションは、/boot/vmlinuzファイルを検索することです。

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

CentOSのソリューションを見つけました! yumはgrubby自体を使用します! (strace、ありがとう!)grubbyにはオプション「--copy-default」があり、yumはそれでgrubbyを実行すると思います。したがって、あなたがすべきことは、現在のデフォルトのカーネルに必要なすべてのカーネルオプションをgrub.confに追加して再起動することだけです。再起動後、新しいカーネルをインストールできます!

1
user146279