27 複数バージョンのカーネルのインストール #
SUSE Linux Enterprise Serverでは、複数バージョンのカーネルを並行でインストールできます。2番目のカーネルをインストールすると、ブートエントリとinitrdfが自動的に作成されるので、手動での設定が別途必要になることはありません。マシンを再起動すると、新しく追加したカーネルが追加のブートパラメータとして利用できるようになります。
この機能を使用すると、カーネルのアップデートを安全な状態でテストでき、実績のある以前のカーネルにいつでもフォールバックできます。そのためには、YaSTのオンラインアップデートやアップデートアプレットなどのアップデートツールを使用せず、この章で説明するプロセスに従います。
独自にコンパイルしたカーネルやサードパーティのカーネルをインストールすると、マシンのサポートエンタイトルメントが全面的に無効になります。SUSE Linux Enterprise Serverに付属するカーネルおよびSUSE Linux Enterprise Serverの正式なアップデートチャネルで配布されるカーネルのみがサポートされています。
別のカーネルをインストールした後は、デフォルトのブートエントリを目的に合わせて設定するために、ブートローダ設定を確認することをお勧めします。詳細については、18.3項 「YaSTによるブートローダの設定」を参照してください。
27.1 マルチバージョンサポートの有効化と設定 #
SUSE Linux Enterprise Server 12以降、複数バージョンのソフトウェアパッケージのインストール(マルチバージョンサポート)は、デフォルトで有効になっています。この設定を確認するには、次の手順に従います。
任意のエディタで、
root
として/etc/zypp/zypp.conf
を開きます。文字列
multiversion
を検索します。この機能に対応しているすべてのカーネルパッケージでマルチバージョンサポートが有効になっている場合、次の行はコメント解除された状態で表示されます。multiversion = provides:multiversion(kernel)
マルチバージョンサポートを特定のカーネルに限定するには、それらのパッケージの名前をカンマ区切りリストとして
/etc/zypp/zypp.conf
のmultiversion
オプションに追記します。たとえば、次のような記述とします。multiversion = kernel-default,kernel-default-base,kernel-source
変更を保存します。
アップデートした新しいカーネル用に、ベンダーが提供する必須のカーネルモジュール(カーネルモジュールパッケージ)もインストールされていることを確認してください。最終的にカーネルモジュールが見つからなくても、カーネルアップデートプロセスで警告は表示されません。これは、システム上に保持されている古いカーネルによって依然としてパッケージ要件が満たされているためです。
27.1.1 使用していないカーネルの自動削除 #
マルチバージョンサポートを有効にして新しいカーネルを頻繁にテストしていると、ブートメニューが急速に複雑になります。通常/boot
パーティションの容量は限られているため、/boot
オーバーフローによるトラブルが発生する場合があります。YaSTや以下で説明するZypperなどを使用して、使用されていないバージョンのカーネルを手動で削除できますが、このようなカーネルを自動的に削除するようにlibzypp
を設定することもできます。デフォルトでは、どのカーネルも削除されません。
任意のエディタで、
root
として/etc/zypp/zypp.conf
を開きます。文字列
multiversion.kernels
を検索し、その行のコメント指定を解除することで、このオプションを有効にします。このオプションは、以下の各値のカンマ区切りリストをとります。5.3.18-53.3
: 指定されたバージョン番号のカーネルを保持します。latest
: 最新のバージョン番号のカーネルを保持します。latest-N
: N番目に新しいバージョン番号のカーネルを保持します。running
: 実行しているカーネルを保持します。oldest
: 最も古いバージョン番号のカーネルを保持します(これはSUSE Linux Enterprise Serverに元から付属しているバージョンのカーネルです)。oldest+N
. N番目に古いバージョン番号のカーネルを保持します。次の例を示します
multiversion.kernels = latest,running
最新バージョンのカーネルおよび現在実行しているカーネルを保持します。これはマルチバージョン機能を有効にしない場合に似ていますが、古いバージョンのカーネルが削除される時期が、インストールの直後ではなく、「次回のリブートの後」である点が異なります。
multiversion.kernels = latest,latest-1,running
最新とその次に新しいバージョンのカーネルおよび現在実行しているカーネルを保持します。
multiversion.kernels = latest,running,5.3.18-53.3
最新バージョンのカーネル、現在実行しているカーネル、および5.3.18-53.3バージョンのカーネルを保持します。
ヒント: 実行しているカーネルの保持特殊な設定を使用している場合を除き、
running
というマークの付いたカーネルは常に保持してください。実行しているカーネルを保持しない場合、カーネルは更新時に削除されます。つまり、実行しているカーネルのモジュールも削除され、ロードできなくなります。
実行しているカーネルを保持しない場合は、必ずカーネルのアップグレード後すぐに再起動して、モジュールの問題が発生しないようにしてください。
27.1.2 使用事例: 再起動後にのみ古いカーネルを削除する #
新規カーネルを使用して正常にシステムを再起動できてから、古いカーネルを削除するようにします。
/etc/zypp/zypp.conf
内の以下の行を変更します。
multiversion.kernels = latest,running
前のパラメータは、最新のカーネル、および実行中のカーネル(最新でない場合のみ)を保持するようにシステムに指示します。
27.1.3 使用事例: 古いカーネルをフォールバックとして保持する #
1つ以上のバージョンのカーネルを保持し、「スペア」として保有しておきます。
これは、テスト用のカーネルが必要な場合に役立ちます。何らかの問題が生じたとき(マシンが起動しないなど)、正常に動作していた1つ以上のバージョンのカーネルをまだ使用することができるためです。
/etc/zypp/zypp.conf
内の以下の行を変更します。
multiversion.kernels = latest,latest-1,latest-2,running
新しいカーネルのインストール後にシステムを再起動する際、システムは3つのカーネルを保持します。現在のカーネル(latest,running
として設定)と、その直前のカーネルつ(latest-1
およびlatest-2
-2として設定)です。
27.1.4 使用事例: 特定のバージョンのカーネルの保持 #
通常、定期的にシステムアップデートを行い、新規バージョンのカーネルをインストールします。しかし、独自のバージョンのカーネルをコンパイルして、システムに保持させたい場合があります。
/etc/zypp/zypp.conf
内の以下の行を変更します。
multiversion.kernels = latest,5.3.18-53.3,running
新規カーネルのインストール後にシステムを再起動するときに、システムは2つのカーネルを保存します。新規の実行中のカーネル(latest,running
と設定)および独自でコンパイルしたカーネル(5.3.18-53.3
と設定)の2つです。
27.2 YaSTによる複数のカーネルバージョンのインストールと削除 #
次の手順で、YaSTを使用して複数のカーネルをインストールまたは削除できます。
YaSTを起動し、
› を選択してソフトウェアマネージャを開きます。- 図 27.1: YaSTソフトウェアマネージャ: マルチバージョン表示 #
パッケージを選択し、そのパッケージの
タブを下部ペインの左側で開きます。パッケージをインストールするには、そのパッケージの横のチェックボックスをクリックします。インストールの対象として選択されていることを示す緑色のチェックマークが表示されます。
すでにインストール済みのパッケージ(白いチェックマークで表示)を削除するには、削除の対象として選択されていることを示す赤色の
X
が表示されるまで、そのパッケージの横のチェックボックスをクリックします。
27.3 Zypperによる複数のカーネルバージョンのインストールと削除 #
次の手順で、zypper
を使用して複数のカーネルをインストールまたは削除できます。
コマンド
zypper se -s 'kernel*'
を使用して、存在するすべてのカーネルパッケージを一覧表示します。S | Name | Type | Version | Arch | Repository ---+----------------------+---------+-------------------+--------+------------------------------------------------------ i+ | kernel-default | package | 5.14.21-150400.6.3 | x86_64 | SLE-Module-Basesystem15-SP4-Pool | kernel-default-base | package | 5.14.21-150400.6.3.150400.22.27 | x86_64 | SLE-Module-Basesystem15-SP4-Pool | kernel-default-devel | package | 5.14.21-150400.6.3 | x86_64 | SLE-Module-Basesystem15-SP4-Pool | kernel-devel | package | 5.14.21-150400.6.4 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-all | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-amdgpu | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-ath10k | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-ath11k | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-atheros | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-bluetooth | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-bnx2 | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-brcm | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-chelsio | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-dpaa2 | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-i915 | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-intel | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-iwlwifi | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-liquidio | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-marvell | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-media | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-mediatek | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-mellanox | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-mwifiex | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-network | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-nfp | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-nvidia | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-platform | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-prestera | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-qcom | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-qlogic | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-radeon | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-realtek | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-serial | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-sound | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-ti | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-ueagle | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool i | kernel-firmware-usb-network | package | 20220119-150400.1.1 | noarch | SLE-Module-Basesystem15-SP4-Pool | kernel-macros | package | 5.14.21-150400.6.4 | noarch | SLE-Module-Basesystem15-SP4-Pool
インストールする場合は、次のように正確なバージョンを指定します。
>
sudo
zypper in kernel-default-5.3.18-53.3カーネルをアンインストールする場合は、コマンド
zypper se -si 'kernel*'
を使用して、インストールされているすべてのカーネルを一覧表示し、zypper rm
PACKAGENAME-VERSIONを使用して、目的のパッケージを削除します。