「設定 - レガシーカーネル」の版間の差分
編集の要約なし |
|||
| (同じ利用者による、間の7版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
一般的に、カーネルをアップデートしても古いカーネルは削除せず、新バージョンとともに旧バージョンのカーネルもGRUBから起動できるようにすることが多い。<br> | |||
<br> | |||
新バージョンがうまく動かない場合を考えると安心できるシステムだが、カーネルのアップデートが比較的短い間隔で行われるディストリビューションでは、<br> | 新バージョンがうまく動かない場合を考えると安心できるシステムだが、カーネルのアップデートが比較的短い間隔で行われるディストリビューションでは、<br> | ||
ディスクスペースが圧迫されることやGRUBのメニューも煩雑になる。<br> | |||
<br><br> | <br><br> | ||
== 古いカーネルを削除する == | == 古いカーネルを削除する == | ||
各ディストリビューションで設定方法が異なるため、変更前にバックアップを取ることを推奨する。<br> | |||
<br> | |||
sudo | ==== RHEL ==== | ||
* 設定ファイル | |||
*: /etc/yum.conf | |||
*: または | |||
*: /etc/dnf/dnf.conf | |||
<br> | |||
* installonly_limit パラメータで保持するカーネル数を指定する。 | |||
* デフォルトは3である。 | |||
* 最小値は2 (値1は明示的に禁止されている) | |||
* 0に設定すると制限なし (非推奨) | |||
* 特定のカーネルを除外したい場合は、同ファイルに <code>exclude=</code> または <code>excludepkgs=</code> を使用できる。 | |||
<br> | |||
# /etc/yum.conf または /etc/dnf/dnf.conf | |||
installonly_limit=3 | |||
<br> | |||
また、RHELではdnf-utilsパッケージが存在しており、その中のpackage-cleanupコマンドを実行すれば、古いカーネルを簡単に削除できる。<br> | |||
まず、dnf-utilsをインストールする。<br> | |||
sudo dnf install dnf-utils | |||
<br> | <br> | ||
<code>--oldkernels</code>オプションを付加して、<code>package-cleanup</code>コマンドを実行する。<br> | |||
sudo package-cleanup --oldkernels | sudo package-cleanup --oldkernels | ||
<br> | <br> | ||
標準では、最新のカーネルと1世代前のカーネルを残して、2世代前以前のカーネル(kernelとkernel-devel)が削除される。<br> | |||
さらに古いカーネルも残す場合は、<code>package-cleanup</code>コマンドに、<code>--count=<残すカーネル数></code>オプションを付加する。<br> | |||
<br> | |||
以下の例では、最新のカーネルから2世代前のカーネルを残している。<br> | |||
sudo package-cleanup --oldkernels --count=3 | sudo package-cleanup --oldkernels --count=3 | ||
<br> | |||
===== SUSE ===== | |||
SUSEでは、古いカーネルは、SUSEが新しいカーネルで正常に再起動した後にのみ削除される。<br> | |||
<br> | |||
まず、複数のカーネルのマルチバージョンサポートが有効になっているか確認する。(初期設定では有効になっている)<br> | |||
/etc/zypp/zypp.confファイルを開いて、multiversion項目に記述されている設定を確認する。<br> | |||
マルチバージョンが有効になっている場合、次の行はコメント化されていない。<br> | |||
multiversion = provides:multiversion(kernel) | |||
<br> | |||
また、マルチバージョンサポートを特定のカーネルに制限するには、multiversion項目にパッケージ名をカンマ区切りのリストとして追加する。<br> | |||
multiversion = kernel-default,kernel-default-base,kernel-source | |||
<br> | |||
次に、古いカーネルを削除するには、/etc/zypp/zypp.confファイルの次の行を以下のように変更する。<br> | |||
* 最新のカーネルと実行中のカーネルが異なる場合にのみ、それらを維持する場合 | |||
*: multiversion.kernels = latest,running | |||
* 複数のカーネルを維持する場合(以下の例では、最新のカーネルと1つ前のカーネルを維持) | |||
*: multiversion.kernels = latest,latest-1,running | |||
* 複数のカーネルを維持する場合(以下の例では、最新のカーネルと2つ前のカーネルを維持) | |||
*: multiversion.kernels = latest,latest-1,latest-2,running | |||
<br> | |||
上記のファイルの編集後、カーネルをクリーンアップする。<br> | |||
sudo zypper purge-kernels | |||
<br> | |||
<u>※備考</u><br> | |||
<u>TWでは、purge-kernels.serviceが動作しているため、自動的にクリーンアップを行っている。</u><br> | |||
sudo systemctl start purge-kernels.service | |||
<br> | |||
==== Debian ==== | |||
* 設定ファイル | |||
*: /etc/apt/apt.conf.d/01autoremove-kernels : 保持するカーネルのリストを含む自動生成ファイル | |||
*: /etc/kernel/postinst.d/apt-auto-removal : カーネルインストール時に01autoremove-kernelsを生成するスクリプト | |||
<br> | |||
APT 2.4.5以降では、この機能が直接aptに実装され、デフォルトで2つのカーネルを保護する。<br> | |||
カスタム設定を追加する場合は、/etc/apt/apt.conf.d/ ディレクトリに新しいファイルを作成することが可能である。<br> | |||
<br> | |||
また、Debianではスクリプトの編集が必要である。<br> | |||
/etc/kernel/postinst.d/apt-auto-removal スクリプトが以下に示すものを保護する。<br> | |||
* 現在実行中のカーネル | |||
* インストール / 設定中のカーネル | |||
* 最新のカーネル | |||
* 1つの前のカーネル | |||
<br> | |||
* 2つだけに制限する方法 | |||
*: /etc/kernel/postinst.d/apt-auto-removal スクリプトを編集する。 | |||
*: まずバックアップを作成する。 | |||
*: <code>sudo cp /etc/kernel/postinst.d/apt-auto-removal{,.backup}</code> | |||
*: <br> | |||
*: スクリプト内の該当部分を編集して、保持するカーネル数を調整する。 | |||
*: スクリプトの先頭付近に以下に示す設定を追記する。 | |||
*: <syntaxhighlight lang="text"> | |||
# 保持するカーネル数 (実行中のカーネル以外) | |||
NKER=1 | |||
</syntaxhighlight> | |||
*: スクリプトを手動実行して設定を反映する。 | |||
*: <code>sudo /etc/kernel/postinst.d/apt-auto-removal $(uname -r)</code> | |||
*: <br> | |||
*: <u>※注意</u> | |||
*: <u>スクリプトはカーネルのインストール / 削除時にのみ再実行される。</u> | |||
<br> | |||
また、以下に示す設定は、"カーネルを自動削除から保護" および "特定のカーネルバージョンを保護する" である。<br> | |||
# 例: | |||
sudo vi /etc/apt/apt.conf.d/01autoremove-kernels-override | |||
<br> | |||
# カーネルを自動削除から保護する場合 | |||
APT::NeverAutoRemove { | |||
"^linux-image-.*-generic$"; | |||
"^linux-headers-.*-generic$"; | |||
"^linux-image-extra-.*-generic$"; | |||
}; | |||
<br> | |||
# 特定のカーネルバージョンを保護する場合 | |||
APT::NeverAutoRemove { | |||
"^linux-image-5\.15\.0-.*-generic$"; | |||
}; | |||
<br> | |||
また、保持するカーネル数を変更する場合は、/etc/kernel/postinst.d/apt-auto-removal スクリプトを編集する必要がある。<br> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ: | [[カテゴリ:RHEL]][[カテゴリ:SUSE]] | ||
2025年11月6日 (木) 03:27時点における最新版
概要
一般的に、カーネルをアップデートしても古いカーネルは削除せず、新バージョンとともに旧バージョンのカーネルもGRUBから起動できるようにすることが多い。
新バージョンがうまく動かない場合を考えると安心できるシステムだが、カーネルのアップデートが比較的短い間隔で行われるディストリビューションでは、
ディスクスペースが圧迫されることやGRUBのメニューも煩雑になる。
古いカーネルを削除する
各ディストリビューションで設定方法が異なるため、変更前にバックアップを取ることを推奨する。
RHEL
- 設定ファイル
- /etc/yum.conf
- または
- /etc/dnf/dnf.conf
- installonly_limit パラメータで保持するカーネル数を指定する。
- デフォルトは3である。
- 最小値は2 (値1は明示的に禁止されている)
- 0に設定すると制限なし (非推奨)
- 特定のカーネルを除外したい場合は、同ファイルに
exclude=またはexcludepkgs=を使用できる。
# /etc/yum.conf または /etc/dnf/dnf.conf installonly_limit=3
また、RHELではdnf-utilsパッケージが存在しており、その中のpackage-cleanupコマンドを実行すれば、古いカーネルを簡単に削除できる。
まず、dnf-utilsをインストールする。
sudo dnf install dnf-utils
--oldkernelsオプションを付加して、package-cleanupコマンドを実行する。
sudo package-cleanup --oldkernels
標準では、最新のカーネルと1世代前のカーネルを残して、2世代前以前のカーネル(kernelとkernel-devel)が削除される。
さらに古いカーネルも残す場合は、package-cleanupコマンドに、--count=<残すカーネル数>オプションを付加する。
以下の例では、最新のカーネルから2世代前のカーネルを残している。
sudo package-cleanup --oldkernels --count=3
SUSE
SUSEでは、古いカーネルは、SUSEが新しいカーネルで正常に再起動した後にのみ削除される。
まず、複数のカーネルのマルチバージョンサポートが有効になっているか確認する。(初期設定では有効になっている)
/etc/zypp/zypp.confファイルを開いて、multiversion項目に記述されている設定を確認する。
マルチバージョンが有効になっている場合、次の行はコメント化されていない。
multiversion = provides:multiversion(kernel)
また、マルチバージョンサポートを特定のカーネルに制限するには、multiversion項目にパッケージ名をカンマ区切りのリストとして追加する。
multiversion = kernel-default,kernel-default-base,kernel-source
次に、古いカーネルを削除するには、/etc/zypp/zypp.confファイルの次の行を以下のように変更する。
- 最新のカーネルと実行中のカーネルが異なる場合にのみ、それらを維持する場合
- multiversion.kernels = latest,running
- 複数のカーネルを維持する場合(以下の例では、最新のカーネルと1つ前のカーネルを維持)
- multiversion.kernels = latest,latest-1,running
- 複数のカーネルを維持する場合(以下の例では、最新のカーネルと2つ前のカーネルを維持)
- multiversion.kernels = latest,latest-1,latest-2,running
上記のファイルの編集後、カーネルをクリーンアップする。
sudo zypper purge-kernels
※備考
TWでは、purge-kernels.serviceが動作しているため、自動的にクリーンアップを行っている。
sudo systemctl start purge-kernels.service
Debian
- 設定ファイル
- /etc/apt/apt.conf.d/01autoremove-kernels : 保持するカーネルのリストを含む自動生成ファイル
- /etc/kernel/postinst.d/apt-auto-removal : カーネルインストール時に01autoremove-kernelsを生成するスクリプト
APT 2.4.5以降では、この機能が直接aptに実装され、デフォルトで2つのカーネルを保護する。
カスタム設定を追加する場合は、/etc/apt/apt.conf.d/ ディレクトリに新しいファイルを作成することが可能である。
また、Debianではスクリプトの編集が必要である。
/etc/kernel/postinst.d/apt-auto-removal スクリプトが以下に示すものを保護する。
- 現在実行中のカーネル
- インストール / 設定中のカーネル
- 最新のカーネル
- 1つの前のカーネル
- 2つだけに制限する方法
- /etc/kernel/postinst.d/apt-auto-removal スクリプトを編集する。
- まずバックアップを作成する。
sudo cp /etc/kernel/postinst.d/apt-auto-removal{,.backup}- スクリプト内の該当部分を編集して、保持するカーネル数を調整する。
- スクリプトの先頭付近に以下に示す設定を追記する。
# 保持するカーネル数 (実行中のカーネル以外) NKER=1
- スクリプトを手動実行して設定を反映する。
sudo /etc/kernel/postinst.d/apt-auto-removal $(uname -r)- ※注意
- スクリプトはカーネルのインストール / 削除時にのみ再実行される。
また、以下に示す設定は、"カーネルを自動削除から保護" および "特定のカーネルバージョンを保護する" である。
# 例: sudo vi /etc/apt/apt.conf.d/01autoremove-kernels-override
# カーネルを自動削除から保護する場合
APT::NeverAutoRemove {
"^linux-image-.*-generic$";
"^linux-headers-.*-generic$";
"^linux-image-extra-.*-generic$";
};
# 特定のカーネルバージョンを保護する場合
APT::NeverAutoRemove {
"^linux-image-5\.15\.0-.*-generic$";
};
また、保持するカーネル数を変更する場合は、/etc/kernel/postinst.d/apt-auto-removal スクリプトを編集する必要がある。