カーネルモジュールフォルダが uname -r と一致しません。

カーネルモジュールフォルダが uname -r と一致しません。

Arch Linuxを新しくインストールしました。modprobe.dllを使用してカーネルモジュールを設定することはできません。たとえば、実行するとsudo modprobe r8169エラーが発生しますmodprobe: FATAL: Module r8169 not found in directory /lib/modules/4.8.13-1-ARCH

コンテンツ/lib/modules:

$ ls -1 /lib/modules
4.10.8-1-ARCH
extramodules-4.10-ARCH

結果uname -r:

$ uname -r
4.8.13-1-ARCH

単に一致するようにモジュールディレクトリの名前を変更するのは安全ですかuname -r

答え1

/lib/modulesインストールされている各カーネルバージョンのサブディレクトリがあります。明らかに、最後の再起動後にカーネルをアップグレードし、4.8.13-1を実行していて4.10.8-1にアップグレードしました。カーネルのアップグレードは、再起動後にのみ適用されます。

モジュールはまったく同じカーネルバージョンにロードされ、同じオプションでコンパイルする必要があります。 (例外もありますが、これを行うにはモジュールを慎重に設計する必要があります。カーネル自体に付属のモジュールは、他のカーネルで動作できるようにするリングを超えていません。)

したがって、まだ実行中のカーネルバージョンを削除しないでください。実行中のカーネルを含むファイルを削除することは有害ではありません。ファイルは起動時にのみ使用されます。ただし、カーネルパッケージを削除すると、モジュールも削除されます。つまり、新しいドライバをロードできません。

実行中のカーネルのバージョンを削除しないもう1つの理由は、インストールした新しいカーネルにバグがある場合は、テスト済みの古いカーネルを使用して起動を続行できることです。明らかに、カーネルはデプロイされる前にテストされますが、ハードウェア関連のバグが原因でカーネルが抜けてしまうことがあります。

自動アップグレードスクリプトを含むディストリビューションは、通常実行中のカーネルを削除しないように注意してください。これがArchでどのように機能するかはわかりませんが、Archは非常に実用的であるため、手動で処理する必要があります。正しいカーネルバージョンを再インストールしてもモジュールをロードできます。

関連情報