カーネルモジュールが壊れているため、OSをロードすることすらできないため、削除または修正できません。カーネルのパラメータなどを使用して、起動時にこのモジュールをスキップすることは可能ですか?
前の回答で述べたようにモジュールをブラックリストに登録することは、カーネルモジュールを完全に回避するための最良の方法です。ブラックリストに登録する以外に、モジュールを無効にする一般的な方法はありません。
一部のLinuxディストリビューションは、このようなことを行うためのカーネルブートパラメーターを提供します。
load_modules=off
udevに自動読み込みをスキップさせます。これにより、モジュールをロードせずに起動し、問題の原因となっているモジュールをブラックリストに登録し、問題のあるモジュールをロードせずに通常どおり再起動できます。詳細については、 カーネルパラメータのドキュメント を参照してください。特定のサブシステムを無効にするためのパラメーターがあります。例えば:
nousb
はカーネルUSBサポートを無効にしますcgroup_disable=[name]
特定のコントローラーを無効にします。ただし、特にサポートされているのは「メモリ」だけです。libata.noacpi
libata(SATAコントローラー)でのACPIの使用を無効にします。これは、カーネルを介してモジュールパラメータを渡す例です。特定のモジュールを無効にすることはブートローダーから可能ですが、実際にはディストリビューションに依存しているように見えます。
一方では、 Linuxカーネルパラメータ ドキュメントには、2016年8月の時点で次のように記載されています。
module_blacklist=
[KNL]モジュールのコンマ区切りリストをロードしないでください。問題のあるモジュールのデバッグに役立ちます。
一方、openSUSE 42.1(Linux 4.1.31)で機能したオプションは、 Arch Kernel modules wikiで説明されています。
ブートローダーからモジュールをブラックリストに登録することもできます。追加するだけです
modprobe.blacklist=modname1,modname2,modname3
カーネルパラメータで説明されているように、ブートローダーのカーネルラインに。複数のモジュールをブラックリストに登録する場合は、コンマのみで区切ることに注意してください。スペースやその他のものは、おそらく構文を壊す可能性があります。
(これを指摘してくれた nix.SE の@gertvdijkに感謝します。)
また、言及する価値があるのは 次の方法 :
Grubコマンドラインを使用して特定のモジュールがカーネルによってロードされないようにするには、以下の構文を使用して、それらをパラメーターとしてカーネルラインに渡す必要があります。
$module_name.blacklist=yes
彼らがどこからそれを入手したのか、私には考えがありませんが、他のすべてが失敗した場合でも、他の方法を試してみても害はありません。
/etc/modprobe.d/blacklistまたはブラックリスト 'modulename'に追加できるはずです。