Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
適用先 openSUSE Leap 15.6

6 複数バージョンのカーネルのインストール Edit source

概要

openSUSE Leap では、複数のバージョンのカーネルを同時にインストールすることができます。複数のバージョンのカーネルをインストールしていても、それぞれのバージョンに対する initrd と起動項目が作成されますので、手作業で何かを行う必要はありません。通常通り起動するだけで、いずれかのバージョンを選んで起動することができるようになっています。

このような機能を利用することで、カーネルの更新を行っても元のバージョンに戻ることができるようになります。新しいバージョンのカーネルで何か問題が発生しても、すぐに元の (問題の起こらない) バージョンのカーネルに戻すことができます。なお、この機能を利用する場合は、更新ツール (YaST オンライン更新や更新アプレット) を使用せず、本章で示している手順に従って作業を行ってください。

ヒント
ヒント: ブートローダの設定確認について

複数のバージョンのカーネルをインストールした場合は、ブートローダの設定を確認し、どのバージョンを既定にするのかを選択してください。詳しくは 12.3項 「YaST によるブートローダの設定」 をお読みください。

6.1 マルチバージョン対応の有効化と設定 Edit source

ソフトウエアパッケージに対して、複数のバージョンをインストールできるようにする機能 (マルチバージョン対応) は、 openSUSE Leap およびそれ以降では既定で有効化されています。設定を確認するには、下記の手順で行います:

  1. root でエディタを利用して /etc/zypp/zypp.conf を開きます。

  2. multiversion で文字列検索を行います。この機能に対応する全てのカーネルパッケージに対して、マルチバージョン機能が有効化されている場合は、下記のような行がコメントアウトされていない形で書かれているはずです:

    multiversion = provides:multiversion(kernel)
  3. 特定のカーネルフレーバーに対してのみマルチバージョン対応を行う場合は、 /etc/zypp/zypp.conf 内の multiversion オプション内に、下記のような形でパッケージ名をカンマ区切りで指定します:

    multiversion = kernel-default,kernel-default-base,kernel-source
  4. 設定を保存して終了します。

警告
警告: カーネルモジュールパッケージ (KMP) について

更新されたカーネルをインストールする場合は、必要なカーネルモジュール (カーネルモジュールパッケージ) についても、更新されたバージョンに対応するものが製造元から提供されていることをご確認ください。上記の設定を行って複数のバージョンのカーネルがインストールできるようになると、古いカーネルにのみ対応するカーネルモジュールが存在していても、パッケージの依存関係としては問題が発生しませんので、新しいカーネルを起動しようとした際に、必要なカーネルモジュールを見つけることができずに問題が発生することがあります。

6.1.1 不要なカーネルの自動削除 Edit source

複数バージョンのカーネルに対応するよう設定していて、頻繁に新しいカーネルをインストールしていると、起動メニューが非常に複雑化していってしまいます。一般的には、 /boot パーティションにはそれほど大きなサイズが割り当てられていないため、 /boot の容量不足として顕在化する場合もあります。このような場合は、 YaST や zypper を利用して不要なバージョンのカーネルを削除できるだけでなく、 libzypp に対してカーネルの自動削除を設定することができます。既定では何もカーネルを削除しない設定になっています。

  1. root でエディタを利用して /etc/zypp/zypp.conf を開きます。

  2. multiversion.kernels で文字列検索を行い、まずはその行のコメントを外します。このオプションでは、カンマ区切りで下記の値のいずれかを指定します:

    5.3.18-53.3指定したバージョンのカーネルを明示的に維持します

    latest最も新しいバージョン番号のカーネルを維持します

    latest-NN 番目に新しいバージョン番号のカーネルを維持します

    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 現在使用中のカーネルについては、削除せずに維持しておくことをお勧めします。

    現在使用中のカーネルを維持するように設定していないと、カーネルを更新した際に使用中のカーネルパッケージが削除されてしまいます。パッケージにはカーネルモジュールが含まれますので、更新後は新しいカーネルモジュールを読み込めなくなってしまいます。

    現在使用中のカーネルを維持しない場合は、カーネルの更新後すぐに再起動を行うようにして、モジュールによる問題を回避してください。

6.1.2 設定例: 再起動後に古いカーネルのみを削除する設定 Edit source

新しいカーネルで正常に再起動ができた場合にのみ、再起動時に古いカーネルを削除する設定です。

/etc/zypp/zypp.conf 内を下記のように設定します:

multiversion.kernels = latest,running

上記のパラメータを指定すると、最新のカーネルと現在使用中のカーネル (最新のカーネルでなければ) を維持する動作になります。

6.1.3 設定例: 予備として古いカーネルを残す設定 Edit source

1 つ以上のバージョンのカーネルを、 予備の カーネルとして残しておく設定です。

この設定は、テスト目的でカーネルをインストールするような場合に便利です。マシンの起動ができないなど何らかの問題が発生した場合、予備として残しておいたカーネルに戻すことができます。

/etc/zypp/zypp.conf 内を下記のように設定します:

multiversion.kernels = latest,latest-1,latest-2,running

新しいバージョンのカーネルをインストールしてシステムを再起動すると、システムは 3 種類のバージョンのカーネル (現在のカーネル (latest,running と 2 種類の古いカーネル (latest-1 , latest-2)) を残すようになります。

6.1.4 設定例: 特定バージョンのカーネルを維持する設定 Edit source

通常のシステム更新を行い、必要に応じて新しいバージョンのカーネルをインストールします。ただし、独自のバージョンのカーネルをコンパイルしていて、そのバージョンについては、削除せずに残しておきたいものとします。

/etc/zypp/zypp.conf 内を下記のように設定します:

multiversion.kernels = latest,5.3.18-53.3,running

新しいバージョンのカーネルをインストールしてシステムを再起動すると、システムは 2 種類のバージョンのカーネル (現在のカーネル (latest,running) と独自にコンパイルしたカーネル (5.3.18-53.3)) を残すようになります。

6.2 YaST による複数バージョンのカーネルのインストールと削除 Edit source

YaST を利用することで、複数のバージョンのカーネルをインストールしたり削除したりすることができます:

  1. YaST を起動して ソフトウエア › ソフトウエア管理 を選び、ソフトウエアマネージャを起動します。

  2. 表示 › パッケージの分類 › 複数バージョンのパッケージ を選択すると、マルチバージョンに対応したパッケージを一覧表示することができます。

    YaST ソフトウエアマネージャ: マルチバージョンのパッケージ
    図 6.1: YaST ソフトウエアマネージャ: マルチバージョンのパッケージ
  3. パッケージを選択したあと、 右下にある バージョン タブを選択します。

  4. パッケージをインストールするには、左側にあるチェックボックスにチェックを入れます。緑色のチェックマークが、インストールするよう選択されていることを表しています。

    インストール済みのパッケージ (白いチェックマークが付いているもの) を削除するには、左側にあるチェックボックスが赤い X 印になるようにチェックを入れます。

  5. 了解 を押してインストールを開始します。

6.3 zypper による複数バージョンのカーネルのインストールと削除 Edit source

zypper を利用することでも、複数バージョンのカーネルをインストールしたり削除したりすることができます:

  1. 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
  2. 特定のバージョンをインストールしたい場合は、下記のように入力して実行します:

    > sudo zypper in kernel-default-6.4.0-150600.9.2
  3. カーネルを削除する場合は、まず zypper se -si 'kernel*' を実行してインストール済みのカーネルを確認して、 zypper rm パッケージ名-バージョン のように入力して実行し、パッケージを削除します。

6.4 Kernel:HEAD リポジトリからの最新カーネルのインストール Edit source

  1. Kernel:HEAD リポジトリを追加します (リポジトリには、 kernel-repo という別名を付与します):

    > sudo zypper ar \
    http://download.opensuse.org/repositories/Kernel:/HEAD/standard/ \
    kernel-repo
  2. リポジトリを更新するには、下記のように実行します:

    > sudo zypper ref
  3. Kernel:HEAD が提供する最新バージョンのカーネルにアップグレードしたい場合は、下記のように実行します:

    > sudo zypper dist-upgrade --allow-vendor-change --from kernel-repo
  4. システムを再起動します。

警告
警告: Kernel:HEAD 提供のカーネルに対する危険性について

カーネルに対する重要な修正は SUSE 側で既存のバージョンに移植 (バックポート) され、公式の更新として公開されるため、 Kernel:HEAD が提供するカーネルをインストールする必要はありません。最新のバージョンのカーネルは、主にカーネルの開発者やテスターがインストールして使用するものです。また、 Kernel:HEAD からインストールを行う場合は、お使いのシステムが壊れてしまうことがあり得ることにも注意してください。さらに、元のバージョンのカーネルについても、起動時の問題が発生した場合に向けて残しておいてください。

このページを印刷