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のドキュメントに記載されているメカニズムを使用してください。サービスの状態、ブートジャーナル、および依存するハードウェアがすべて問題が解決したと判断した時点で、修復は完了です。

コメントを残す

Pardus LinuxクライアントをActive Directoryドメインに参加させる方法

Pardus LinuxクライアントをActive Directoryドメインに参加させる方法

Pardus Domain Joinerを使用して、Pardus LinuxをActive Directoryに参加させます。DNSと時刻を確認し、CLIをインストールし、SSSDを使用して参加し、ドメインへのログインアクセスを確認します。

カスタムOS展開のためのPardus Image Creatorの設定方法

カスタムOS展開のためのPardus Image Creatorの設定方法

Pardus Image Writerの機能、インストール方法、検証済みのカスタムISOイメージをUSBメモリに安全に展開する方法について学びましょう。ビルドとテストに関するガイダンスも含まれています。

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

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

SLES 上で systemd-modules-load.service の障害が発生した場合、問題のあるモジュールを特定し、ブート構成を修正し、必要な場合にのみ initramfs を再構築することで、障害を診断および修正します。

DebianデスクトップをOSTreeで不変OSに移行する方法

DebianデスクトップをOSTreeで不変OSに移行する方法

1つのパッケージをインストールするだけでDebianをOSTree不変にすることができない理由を学び、その後、安全にOSTreeデスクトップに移行したり、カスタムDebianイメージを計画したりしましょう。

Ubuntu 24.04のWayland環境でタッチパッドジェスチャーが動作しない問題を修正する

Ubuntu 24.04のWayland環境でタッチパッドジェスチャーが動作しない問題を修正する

Ubuntu 24.04 Wayland で、3本指タッチパッドジェスチャーが機能しない問題を修正するには、GNOME の設定、libinput のイベント、アップデート、および拡張機能を確認してください。

DebianでPipeWireオーディオ出力切り替えスクリプトを設定する方法

DebianでPipeWireオーディオ出力切り替えスクリプトを設定する方法

wpctlを使用して、Debian上で信頼性の高いPipeWire出力切り替えスクリプトを作成します。スピーカー、Bluetooth、USB、HDMIなどの出力先を、IDをハードコーディングすることなく切り替えることができます。

HamoniKR OSでCUPSを使用してプリンターを設定する方法

HamoniKR OSでCUPSを使用してプリンターを設定する方法

HamoniKR OS上でCUPSを使用してUSBプリンターとネットワークプリンターを設定します。キューを追加し、ドライバーレスIPPまたはモデルドライバーを選択し、デフォルト設定を行い、テストページを印刷します。

UbuntuでCgroupsを使用してプロセスのCPUとRAMの使用を制限する方法

UbuntuでCgroupsを使用してプロセスのCPUとRAMの使用を制限する方法

Ubuntuでsystemd cgroupsを使用して、コマンドまたはサービスのCPU時間とメモリ使用量を制限します。一時的なスコープ、永続的な制限、および重要なトレードオフを比較してください。

Gooroom OSのUI要素を英語に翻訳する方法

Gooroom OSのUI要素を英語に翻訳する方法

言語サポートが利用可能になったら、Gooroom OSのメニューを英語に切り替えてください。GNOMEの設定手順、Debianのロケールフォールバック、およびトラブルシューティングのチェック手順に従ってください。

Ubuntuでapt-Get Lockがロック/var/lib/dpkg/lock-frontendを取得できない問題を修正

Ubuntuでapt-Get Lockがロック/var/lib/dpkg/lock-frontendを取得できない問題を修正

Ubuntuのapt-get lockエラーを修正する方法を学びましょう。アクティブなパッケージプロセスを確認し、安全に待機し、アップデートが中断された場合にのみdpkgを修復します。