openSUSE Leap では、複数のバージョンのカーネルを同時にインストールすることができます。複数のバージョンのカーネルをインストールしていても、それぞれのバージョンに対する initrd と起動項目が作成されますので、手作業で何かを行う必要はありません。通常通り起動するだけで、いずれかのバージョンを選んで起動することができるようになっています。
このような機能を利用することで、カーネルの更新を行っても元のバージョンに戻ることができるようになります。新しいバージョンのカーネルで何か問題が発生しても、すぐに元の (問題の起こらない) バージョンのカーネルに戻すことができます。なお、この機能を利用する場合は、更新ツール (YaST オンライン更新や更新アプレット) を使用せず、本章で示している手順に従って作業を行ってください。
複数のバージョンのカーネルをインストールした場合は、ブートローダの設定を確認し、どのバージョンを既定にするのかを選択してください。詳しくは 12.3項 「YaST によるブートローダの設定」 をお読みください。
ソフトウエアパッケージに対して、複数のバージョンをインストールできるようにする機能 (マルチバージョン対応) は、 openSUSE Leap およびそれ以降では既定で有効化されています。設定を確認するには、下記の手順で行います:
root
でエディタを利用して /etc/zypp/zypp.conf
を開きます。
multiversion
で文字列検索を行います。この機能に対応する全てのカーネルパッケージに対して、マルチバージョン機能が有効化されている場合は、下記のような行がコメントアウトされていない形で書かれているはずです:
multiversion = provides:multiversion(kernel)
特定のカーネルフレーバーに対してのみマルチバージョン対応を行う場合は、 /etc/zypp/zypp.conf
内の multiversion
オプション内に、下記のような形でパッケージ名をカンマ区切りで指定します:
multiversion = kernel-default,kernel-default-base,kernel-source
設定を保存して終了します。
更新されたカーネルをインストールする場合は、必要なカーネルモジュール (カーネルモジュールパッケージ) についても、更新されたバージョンに対応するものが製造元から提供されていることをご確認ください。上記の設定を行って複数のバージョンのカーネルがインストールできるようになると、古いカーネルにのみ対応するカーネルモジュールが存在していても、パッケージの依存関係としては問題が発生しませんので、新しいカーネルを起動しようとした際に、必要なカーネルモジュールを見つけることができずに問題が発生することがあります。
複数バージョンのカーネルに対応するよう設定していて、頻繁に新しいカーネルをインストールしていると、起動メニューが非常に複雑化していってしまいます。一般的には、 /boot
パーティションにはそれほど大きなサイズが割り当てられていないため、 /boot
の容量不足として顕在化する場合もあります。このような場合は、 YaST や zypper を利用して不要なバージョンのカーネルを削除できるだけでなく、 libzypp
に対してカーネルの自動削除を設定することができます。既定では何もカーネルを削除しない設定になっています。
root
でエディタを利用して /etc/zypp/zypp.conf
を開きます。
multiversion.kernels
で文字列検索を行い、まずはその行のコメントを外します。このオプションでは、カンマ区切りで下記の値のいずれかを指定します:
5.3.18-53.3
: 指定したバージョンのカーネルを明示的に維持します
latest
: 最も新しいバージョン番号のカーネルを維持します
latest-N
: N 番目に新しいバージョン番号のカーネルを維持します
running
: 現在使用中のカーネルを維持します
oldest
: 最も古いバージョン番号 (もしくは openSUSE Leap の出荷時に添付されている) のカーネルを維持します
oldest+N
: N 番目に古いバージョン番号のカーネルを維持します
下記に例を示します:
multiversion.kernels = latest,running
最新のカーネルと、現在使用中のカーネルを維持します。これはマルチバージョン機能を有効化しない場合と似た動作になりますが、古いほうのカーネルの削除は、インストールの時点ではなく、 次回の再起動時 にのみ行われる点が異なります。
multiversion.kernels = latest,latest-1,running
最新の 2 つのバージョンのカーネルと、現在使用中のカーネルを維持します。
multiversion.kernels = latest,running,5.3.18-53.3
最新のカーネルと現在使用中のカーネル、そしてバージョン指定で 5.3.18-53.3 を維持します。
特別な設定をしていない限り、 running
現在使用中のカーネルについては、削除せずに維持しておくことをお勧めします。
現在使用中のカーネルを維持するように設定していないと、カーネルを更新した際に使用中のカーネルパッケージが削除されてしまいます。パッケージにはカーネルモジュールが含まれますので、更新後は新しいカーネルモジュールを読み込めなくなってしまいます。
現在使用中のカーネルを維持しない場合は、カーネルの更新後すぐに再起動を行うようにして、モジュールによる問題を回避してください。
新しいカーネルで正常に再起動ができた場合にのみ、再起動時に古いカーネルを削除する設定です。
/etc/zypp/zypp.conf
内を下記のように設定します:
multiversion.kernels = latest,running
上記のパラメータを指定すると、最新のカーネルと現在使用中のカーネル (最新のカーネルでなければ) を維持する動作になります。
1 つ以上のバージョンのカーネルを、 「予備の」 カーネルとして残しておく設定です。
この設定は、テスト目的でカーネルをインストールするような場合に便利です。マシンの起動ができないなど何らかの問題が発生した場合、予備として残しておいたカーネルに戻すことができます。
/etc/zypp/zypp.conf
内を下記のように設定します:
multiversion.kernels = latest,latest-1,latest-2,running
新しいバージョンのカーネルをインストールしてシステムを再起動すると、システムは 3 種類のバージョンのカーネル (現在のカーネル (latest,running
と 2 種類の古いカーネル (latest-1
, latest-2
)) を残すようになります。
通常のシステム更新を行い、必要に応じて新しいバージョンのカーネルをインストールします。ただし、独自のバージョンのカーネルをコンパイルしていて、そのバージョンについては、削除せずに残しておきたいものとします。
/etc/zypp/zypp.conf
内を下記のように設定します:
multiversion.kernels = latest,5.3.18-53.3,running
新しいバージョンのカーネルをインストールしてシステムを再起動すると、システムは 2 種類のバージョンのカーネル (現在のカーネル (latest,running
) と独自にコンパイルしたカーネル (5.3.18-53.3
)) を残すようになります。
YaST を利用することで、複数のバージョンのカーネルをインストールしたり削除したりすることができます:
YaST を起動して
› を選び、ソフトウエアマネージャを起動します。› › を選択すると、マルチバージョンに対応したパッケージを一覧表示することができます。
パッケージを選択したあと、 右下にある
タブを選択します。パッケージをインストールするには、左側にあるチェックボックスにチェックを入れます。緑色のチェックマークが、インストールするよう選択されていることを表しています。
インストール済みのパッケージ (白いチェックマークが付いているもの) を削除するには、左側にあるチェックボックスが赤い X
印になるようにチェックを入れます。
を押してインストールを開始します。
zypper
を利用することでも、複数バージョンのカーネルをインストールしたり削除したりすることができます:
zypper se -s 'kernel*'
と入力して実行すると、利用可能な全てのバージョンのカーネルパッケージを一覧表示することができます:
S | Name | Type | Version | Arch | Repository ---+----------------------+---------+-------------------+--------+------------------------------------------------------ i+ | kernel-default | package | 6.4.0-150600.9.2 | x86_64 | SLE-Module-Basesystem15-SP6-Pool | kernel-default-base | package | 6.4.0-150600.9.2.150600.10.40 | x86_64 | SLE-Module-Basesystem15-SP6-Pool | kernel-default-devel | package | 6.4.0-150600.9.2 | x86_64 | SLE-Module-Basesystem15-SP6-Pool | kernel-devel | package | 6.4.0-150600.9.2 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-all | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-amdgpu | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-ath10k | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-ath11k | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-ath12k | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-atheros | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-bluetooth | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-bnx2 | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-brcm | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-chelsio | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-dpaa2 | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-i915 | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-intel | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-iwlwifi | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-liquidio | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-marvell | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-media | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-mediatek | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-mellanox | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-mwifiex | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-network | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-nfp | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-nvidia | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool | kernel-firmware-nvidia-gsp-G06 | package | 525.116.04-150500.1.1 | x86_64 | SLE-Module-Basesystem15-SP6-Pool | kernel-firmware-nvidia-gspx-G06 | package | 550.54.14-150600.1.1 | x86_64 | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-platform | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-prestera | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-qcom | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-qlogic | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-radeon | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-realtek | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-serial | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-sound | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-ti | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-ueagle | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-usb-network | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool | kernel-macros | package | 6.4.0-150600.9.2 | noarch | SLE-Module-Basesystem15-SP6-Pool
特定のバージョンをインストールしたい場合は、下記のように入力して実行します:
>
sudo
zypper in kernel-default-6.4.0-150600.9.2
カーネルを削除する場合は、まず zypper se -si 'kernel*'
を実行してインストール済みのカーネルを確認して、 zypper rm
パッケージ名-バージョン のように入力して実行し、パッケージを削除します。
Kernel:HEAD
リポジトリからの最新カーネルのインストール #Edit sourceKernel:HEAD
リポジトリを追加します (リポジトリには、 kernel-repo
という別名を付与します):
>
sudo
zypper ar \ http://download.opensuse.org/repositories/Kernel:/HEAD/standard/ \ kernel-repo
リポジトリを更新するには、下記のように実行します:
>
sudo
zypper ref
Kernel:HEAD
が提供する最新バージョンのカーネルにアップグレードしたい場合は、下記のように実行します:
>
sudo
zypper dist-upgrade --allow-vendor-change --from kernel-repo
システムを再起動します。
Kernel:HEAD
提供のカーネルに対する危険性についてカーネルに対する重要な修正は SUSE 側で既存のバージョンに移植 (バックポート) され、公式の更新として公開されるため、 Kernel:HEAD
が提供するカーネルをインストールする必要はありません。最新のバージョンのカーネルは、主にカーネルの開発者やテスターがインストールして使用するものです。また、 Kernel:HEAD
からインストールを行う場合は、お使いのシステムが壊れてしまうことがあり得ることにも注意してください。さらに、元のバージョンのカーネルについても、起動時の問題が発生した場合に向けて残しておいてください。