Linuxの古いカーネルが残って調子が悪いの対応

PCの調子が悪い
©いらすとや.

自分がメインで使っているデスクトップ用PCはKDE neonというLinuxが動いている。ハードウエアは何年も前のAtom系Pentiumを搭載したローエンドなもの。デスクトップは性能要らなくて省電力サイコーな考え方なので。

で、そのKDE neonなのだが、最近すこぶる調子が良くない。OSの起動時間は以前は電源投入から2分半程度だった(回転数の低いハードディスク使用)のが4分近くかかるし、オーディオデバイスを認識しないとかUSB接続のカメラを認識しないという「認識しない」系の発生頻度が高くなっていた。
今日はいよいよ何度再起動してもオーディオデバイスを認識しない、カメラも認識しないという状態。

マザーボードが古い(来月で満5年)なのでハードウエアの故障の可能性もあるかもしれないが、OS側も何か怪しい。
そこで、KDE Neonのフォーラムで似たような内容で困っている人がいないか探してみた。

そしたら、見つけたのがKDE neon does not fully remove old kernelsというスレッド。

KDE neonを使っているうちにハードディスクを使う量が増えていることに気づきました。 /usr/lib/modules/XXX-XX-generic に古いカーネルのフォルダが残っていることに気づきました。カーネルは apt autoremove (パッケージ管理のaptで不要なパッケージを自動削除)を使って削除済みです。muonを使用してカーネルパッケージを手動で削除できますが、対応するカーネルが削除されたときに自動削除をして欲しいです。これに対する簡単な修正はありますか?
Autoremove(sudo apt autoremove --purge)は、自動インストールとしてマークされたカーネルのみを削除します。アップグレード後、古いカーネルは手動でインストールされたと見なされるようです。これはバグとして扱うものですか?わかりません。
とにかく、解決策は、新しい方から2つ、使用中(最新)のカーネルと最新から2番目のカーネルを除く古いカーネルを消去することです。
将来的には、古いのは自動的に削除されるでしょう。
カーネルが自動的に削除されないという以前の投稿の情報の後に、起動時に実行する用のスクリプトを作成しました。これまでのところ、悪影響はありません。

#!/bin/bash
apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$")
apt-get -y autoremove --purge

このスレッドを読んで、そういえば最近2回ほどカーネルの更新あったな。もしかして古いカーネルモジュールのせいで起動が遅かったり何かのコンフリクト等で調子が悪くなってるのかなと思って、3つめの引用の2行を実行してみた。

$ sudo -s  #行儀悪いけど管理者になった。または以下sudoで
$ apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$")
$ apt autoremove -y --purge

結構時間はかかったが、多くの古いカーネルモジュールが削除された。一部古いバージョンの残骸が残ったけどそれは手動で削除した。 rm -R /usr/lib/modules/5.4.0-42-generic など。なお、最新バージョンと2番目に新しいバージョンには触らないこと。

OSの起動時間は気持ち速め(1分は誤差?)程度だが、オーディオデバイスの認識とUSBカメラの認識は失敗しなくなった。
効果ありと言える。
KDE neonはベースがUbuntuなのでUbuntuでも通用するTipsかな?

理屈で言えば、古いカーネルそのものはパッケージ管理で削除されていて、残っている古いカーネルモジュール等はそこに存在しているだけ、使われてはいない筈で、それらが何か悪さをするというのはヘンな話。素人でも納得できる理屈があれば教えていただければと思います。




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です