SLES起動時の「カーネルモジュールのロード開始に失敗しました」エラーを修正する

SLESの起動メッセージ「カーネルモジュールのロードに失敗しました」は、通常systemd-modules-load.service、少なくとも1つのカーネルモジュールのロードを試みたものの、1つの要求が失敗したことを意味します。重要なのは、赤い起動メッセージを隠すことだけではありません。適切な修復を行うことで、サービスを正常な状態に保ち、不要なモジュール要求を削除し、マシンが実際に必要とするドライバを保持し、次回の再起動後も正常に動作するようにする必要があります。

このガイドは SUSE Linux Enterprise Server 15 向けに作成されており、最新の SLES 15 SP7 管理ガイドに準拠しています。SUSE のドキュメントでは、systemd-modules-load.serviceに指定されたモジュールがロードされる/etc/modules-load.d/*.conf一方、ほとんどの最新のハードウェア モジュールは、デバイスが検出されると通常自動的にロードされると説明されています。この違いは重要です。古い静的エントリが存在しないモジュールを指している場合、古いドライバをシステムに強制的に戻すよりも、そのエントリを削除または修正する方が安全な場合が多いです。SLES 15 SP7 の SUSE のカーネル モジュールの管理に関するドキュメントを参照してください。

成功した修復とはどのようなものか

変更を加える前に、希望する結果を明確に定義してください。修理後:

  • systemctl status systemd-modules-load.service失敗結果を報告すべきではない。
  • 新規起動時には、ジャーナルに同じモジュール読み込みエラーが表示されなくなるはずです。
  • そのモジュールが本当に必要な場合、modprobe MODULE_NAME正常にインストールされ、関連するハードウェアまたは機能が正常に動作するはずです。
  • モジュールが廃止されている場合は、無関係なモジュールに置き換えるのではなく、古いリクエストを削除する必要があります。
  • 問題が起動初期段階に関係している場合は、initramfsを再構築すれば、マシンは正常に再起動を完了するはずです。

これらのチェック項目がすべてお客様の状況に当てはまらない場合は、障害が発生しているコンポーネントに一致する項目を使用してください。たとえば、オプションモジュールが故障していても、サーバーが正常に起動する場合があります。それでもクリーンアップする価値はありますが、ルートファイルシステムが表示されない原因となっているストレージドライバの欠落とは異なります。

ステップ1:故障したユニットを確認し、正確なモジュールエラーを取得します。

スプラッシュスクリーンのメッセージから推測するのではなく、サービス自体から始めてください。

sudo systemctl status systemd-modules-load.service --no-pager

モジュール名と、、、などのエラーメッセージ、またはサポートされていないモジュールが拒否されたことを示すメッセージを探してくださいModule ... not found。No such device表示Operation not permittedされる正確な文言によって、次に取るべき行動が決まります。

SLESターミナルの例:架空のexample_drvモジュールをロードできなかった後、systemd-modules-load.serviceが失敗状態になっていることを示す。
代表的なサービスステータス表示:最終的な失敗状態だけでなく、モジュール名と最初の具体的な負荷エラーに焦点を当てます。

ステータス出力が途中で途切れている場合は、まだ設定を変更しないでください。まず完全なブートログを取得してください。

ステップ2:モジュールファイルを変更する前にブートジャーナルを読み込む

現在の起動時に、このサービスのみを照会します。

sudo journalctl -b -u systemd-modules-load.service --no-pager

モジュールの読み込みに関するカーネルメッセージを調べることもできます。

sudo journalctl -b -k --no-pager | grep -iE 'module|modprobe|firmware|taint'

最初のコマンドは、どの静的ロード要求が失敗したかを示します。カーネルログには、検出されたデバイスを拒否するドライバ、ファームウェアの依存関係、署名の問題、またはその他の低レベルのエラーなど、コンテキストが追加されます。

systemd-modules-load.service 内で発生する架空のカーネルモジュールロード失敗を強調した SLES journalctl の例
サービスジャーナルによって、今回の起動中に失敗したモジュール要求に問題が絞り込まれる。これは、修復方法を選択する前に必要な証拠となる。

のような結果はModule foo not found in directory /lib/modules/...通常、古い構成、カーネル/パッケージの不一致、またはアクティブなカーネル用に再ビルドされていないサードパーティドライバを示しています。No such deviceは異なります。モジュールファイルは存在するかもしれませんが、現在のハードウェアまたは仮想デバイスがドライバの想定と一致しない可能性があります。

ステップ3:SLESにそのモジュールをロードするように要求しているユーザーを特定する

通常の静的ロード場所とmodprobe構成を検索します。

grep -Rns --color=auto 'MODULE_NAME'   /etc/modules-load.d /run/modules-load.d /usr/lib/modules-load.d   /etc/modprobe.d /usr/lib/modprobe.d 2>/dev/null

MODULE_NAMEジャーナルに記載されている名前に置き換えてください。SLES 15 SP7 では、ローカルエントリは/etc/modules-load.d/、起動時にロードする必要のあるモジュールの標準的な管理者管理場所であり、パッケージ化されたエントリは の下に存在できます/usr/lib/modules-load.d/。SUSE は、ほとんどのモジュールは、modules-load.d エントリを手動で作成する必要がないと述べています。

次に、アクティブなカーネルに実際にモジュールが含まれているかどうかを確認します。

uname -r
sudo modinfo MODULE_NAME
sudo modprobe MODULE_NAME
SLESターミナルの例:アクティブなカーネルバージョンと静的modules-load.dエントリ、およびmodprobeモジュールが見つからないエラーを比較する。
設定されているモジュール名と実行中のカーネル名を比較してください。カーネルに存在しないモジュール名が静的エントリに記載されている場合は、設定が古いか、ドライバパッケージが不足している可能性が高いです。

モジュールが廃止された場合

要求元のローカルファイルを削除または無効化してください。/usr/libエラーを解消するためだけにベンダーファイルを削除しないでください。パッケージの更新によって復元される可能性があります。ローカル/etc/modules-load.d/*.confファイルが廃止されたハードウェアまたは古いソフトウェア用に作成されたものであることが判明した場合は、そのローカルエントリを削除して再テストしてください。

モジュールが存在するはずなのに、modinfo で見つからない場合

実行中のカーネルがインストールされているモジュールツリーと一致しているか確認してください。

uname -r
ls -ld /lib/modules/$(uname -r)
rpm -q kernel-default

一般的な品質チェックは簡単です。/lib/modules/$(uname -r)実際に実行中のカーネルのモジュールが存在し、含まれている必要があります。サードパーティ製ドライバが古いカーネル用にコンパイルされている場合は、ベンダーがサポートする手順に従って、現在のSLESカーネルに対してドライバを再インストールまたは再構築してください。何かを見つける.koためだけに、別のカーネルバージョンからファイルをコピーすることは避けてくださいmodprobe。カーネルのABIや署名の違いにより、安全でなかったり、効果がなかったりする可能性があります。

モジュールがブラックリストに登録されている場合

ブラックリストを検索するか、オーバーライドをインストールしてください。

grep -Rns --color=auto -E '^[[:space:]]*(blacklist|install)[[:space:]]+MODULE_NAME'   /etc/modprobe.d /usr/lib/modprobe.d 2>/dev/null

ブラックリストを削除する際は、追加された理由を必ず確認してください。ブラックリストは、競合するドライバからシステムを保護するために設定されている場合があります。SUSEのモジュールガイドには、永続的なブラックリストとGRUB実行時の一時的なブラックリストの両方が記載されているため、ブラックリストを削除するのではなく、静的ロード要求を削除する方が適切な場合もあります。

SLESがサポートされていないモジュールを報告する場合

サポートされていないモジュールのロードを自動的に有効にしないでください。SLES はカーネルモジュールをサポートステータスとしてマークするため、サポートされていないモジュールを強制的にロードすると、サポートに影響が出る可能性があります。SUSE は、テストやベンダーのホットフィックスシナリオにおける例外メカニズムについて、管理ガイドで説明しています。サポートへの影響を理解し、正当なドライバ要件がある場合にのみ使用してください。最新の SUSE ガイドは、SLES 15 SP7 管理ガイドで入手​​できます。

ステップ4:初期ブートに影響する変更の場合のみinitramfsを再構築する

障害が発生したモジュールがinitramfs内で必要な場合、またはそこに反映させる必要のあるブートに不可欠なドライバやブラックリストの設定を変更した場合は、イメージを再生成してください。

sudo dracut -f

SUSE は、ブートに影響するドライバの変更後に initramfs を再構築する手順を具体的に文書化しています。現在のブート プロセス ガイドでは、ドライバを initramfs に追加する必要があるタイミングと、dracutそれを再生成するために使用する方法について説明しています。SLES 15 SP7 のブート プロセスの概要を参照してください。

オプションモジュールのエラーが発生するたびに、この手順をルーチンとして実行しないでくださいdracut -f。通常の起動後モジュールが単に にリストされている場合は/etc/modules-load.d、そのファイルを修正するだけで十分な場合があります。initramfs の再構築が最も重要なのは、不正な設定がブートイメージに組み込まれている場合、または実際のルートファイルシステムが完全にマウントされる前に必要なドライバが利用可能である必要がある場合です。

SLESターミナルの例:dracutによるinitramfsの再構築とそれに続くsystemdモジュールロードサービスの検証
修復が初期起動に影響する場合は、dracut コマンドが正常に実行されただけで元のモジュールエラーが修正されたと決めつけるのではなく、initramfs を再構築してからサービスを検証してください。

インシデントを解決済みとみなす前に、修理状況を確認してください。

安全が確保できる場合は、再起動せずに最初のテストを実施してください。

sudo systemctl restart systemd-modules-load.service
systemctl status systemd-modules-load.service --no-pager
systemctl is-failed systemd-modules-load.service

必要なモジュールをロードする必要がある場合は、確認してください。

lsmod | grep -w MODULE_NAME

その後、適切なメンテナンス期間中に再起動し、新しい起動状態を確認してください。

sudo reboot

ログイン後:

systemctl --failed
journalctl -b -u systemd-modules-load.service --no-pager

最も確実な成功の兆候は、コンソールメッセージが一度消えたことではありません。重要なのは、再起動後に同じモジュールエラーが再発せず、そのモジュールに依存するハードウェアまたはサブシステムが正常に動作することです。

アプローチを変えるタイミング

あなたが見つけたもの次に最適な行動
モジュールが存在しないため、不要になりました。古いローカルブートロード要求を削除します。
モジュールが存在しないが、必須である実行中のカーネルに対応する正しいSLESまたはベンダードライバパッケージを復元してください。ランダムなモジュールバイナリをコピーしないでください。
モジュールは存在するが、「そのようなデバイスはありません」と表示されるハードウェア、VMデバイスモデル、PCI/USB ID、およびドライバがまだ適切かどうかを確認してください。
このモジュールは意図的にブラックリストに登録されています要件が変更されていない限り、ブラックリストは維持し、矛盾する強制ロードエントリは削除してください。
カーネルアップデート後にサードパーティモジュールが停止しました新しいカーネルには、サードパーティベンダーがサポートする再構築/再インストール手順を使用するか、修復中は正常に動作することが確認されているサポート対象のカーネルを起動してください。
ブートに不可欠なストレージ、ファイルシステム、またはマルチパスドライバが関係しています。これはinitramfs/ブートリカバリの問題として扱い、再起動する前にコンソールまたはレスキューアクセスから検証してください。

この修正の限界

「カーネルモジュールのロード開始に失敗しました」というメッセージは、単一の不具合ではなく、症状の一つです。この手順は、静的モジュール要求、モジュールの欠落または不一致、ブラックリスト、およびinitramfsの同期によって発生する障害に対処するものです。ハードウェア診断、サードパーティ製ドライバのサポート、セキュアブートの署名作業、またはルートデバイス自体が利用できない場合のストレージ復旧に代わるものではありません。

本番環境のSLESシステムでは、サポート性を維持するために、SLESカーネルに付属のモジュールを優先的に使用し、サードパーティ製ドライバはベンダーのサポートマトリックスに準拠させ、サービス障害を解消するためだけにチェックをバイパスするのではなく、SUSEのドキュメントに記載されているメカニズムを使用してください。サービスの状態、ブートジャーナル、および依存するハードウェアがすべて問題が解決したと判断した時点で、修復は完了です。

コメントを残す

失われたパーティションとハードディスクデータを安全に復元する方法

失われたパーティションとハードディスクデータを安全に復元する方法

TestDiskとPhotoRecを使って、失われたパーティションやファイルを復元する方法を学びましょう。ソースドライブを保護し、安全にスキャンを行い、復元したデータを別のディスクに保存します。

LinuxデスクトップでQRコードをスキャンする方法

LinuxデスクトップでQRコードをスキャンする方法

CoBangを使えば、Webカメラまたは画像ファイルでLinux上でQRコードをスキャンできます。インストールオプション、セットアップ手順、Flatpakカメラへのアクセスに関する修正方法については、こちらをご覧ください。

Cameractrlsを使ってLinuxでウェブカメラの設定を変更する方法

Cameractrlsを使ってLinuxでウェブカメラの設定を変更する方法

Cameractrlsを使用してLinux上でウェブカメラの設定を変更しましょう。露出、色、フリッカー低減などのサポートされているコントロールを調整し、互換性のあるビデオモードを確認できます。

LinuxにPhpStormをインストールする方法:ツールボックス、Tar.gz、Snap、およびAUR

LinuxにPhpStormをインストールする方法:ツールボックス、Tar.gz、Snap、およびAUR

LinuxにPhpStormをインストールするには、JetBrains Toolboxを使用するか、スタンドアロンのtar.gzアーカイブを使用するか、SnapおよびArch AURオプションを選択してください。Javaは既にバンドルされています。

LinuxにCisco Packet Tracerをインストールする方法

LinuxにCisco Packet Tracerをインストールする方法

Cisco Packet Tracer 9.0.1 を Ubuntu 64 ビット版にダウンロードし、APT を使用して DEB パッケージをインストールし、ターミナルでライセンスに同意してサインインすると、ラボを開始できます。

LinuxでCD-ROMをISOイメージとしてバックアップする方法

LinuxでCD-ROMをISOイメージとしてバックアップする方法

Linux上でGNOME Disksまたはddコマンドを使用してCD-ROM ISOイメージを作成します。光学ドライブを識別し、コピーを監視し、イメージを検証し、破損したディスクやオーディオディスクに別のツールが必要な場合を把握できます。

XFCE 4でデュアルパネルを設定する方法

XFCE 4でデュアルパネルを設定する方法

各ディスプレイごとに個別のXFCE 4パネルを作成し、2番目のパネルを右側の出力に割り当て、位置とサイズを調整し、必要なランチャーとステータス項目を追加します。

LinuxでGIMPを使って画像を切り抜く方法

LinuxでGIMPを使って画像を切り抜く方法

LinuxでGIMPを使って写真の背景を削除する方法:被写体をトレースし、選択した背景を削除し、透明度を保持して、再利用可能なPNG形式でエクスポートします。

FlightGearを無料でダウンロード:公式インストールガイド

FlightGearを無料でダウンロード:公式インストールガイド

FlightGearは公式サイトから無料でダウンロードできます。Windows、macOS、Linuxの各パッケージを比較し、データファイルをインストールして、最初のフライトを開始しましょう。

OKSampler:キーボードビートのための無料かつシンプルな音楽サンプラー

OKSampler:キーボードビートのための無料かつシンプルな音楽サンプラー

OKSamplerはMP3クリップをキーボードのキーにマッピングし、音声をループ再生できます。この旧型フリーウェアの機能、旧機能が失われた箇所、ダウンロード前に確認すべき点について解説します。