いつものように Linux Mint を sudo apt update && sudo apt -y upgrade で更新しようとしたら「E: Sub-process /usr/bin/dpkg returned an error code (1)」やら「dpkg: 依存関係の問題により linux-headers-generic の設定ができません」やらが出てカーネルが更新できない問題に直面しました。
色々とやっている内になんとか解決したので、その格闘を備忘録として残しておきます。環境は Linux Mint 22 “Wilma” MATE Edition です。
問題のカーネル
エラーが出る問題のカーネルはバージョン 6.8.0-44 で、それ以下の 6.8.0-41 や 6.8.0-40 では大丈夫でした。当たり前ですが、問題のカーネルで Linux Mint を起動しようとしましたが、画面が真っ暗なまま何も進みませんでした。
該当パッケージの.postinst と .postrm と .prerm の削除 (解決せず)
とりあえずエラーの内容をもとに Google で検索してみました。まず以下のコマンドを実行して原因を探ってみます。
$ sudo dpkg --audit
どうやら うまく設定ができていないみたいです。このように dpkg や apt 関連でエラーが出た場合 /var/lib/dpkg/info 以下の3つ (xxxxxは該当パッケージ) を削除して sudo dpkg –configure すると解決するらしいとのこと。
- xxxxxx.postinst
- xxxxxx.postrm
- xxxxxx.prerm
早速やってみましたが、解決しませんでした。カーネルを更新しようとするとエラーが出ます。
$ sudo rm linux-image-6.8.0-44-generic.postinst linux-image-6.8.0-44-generic.postrm linux-image-6.8.0-44-generic.prerm
$ sudo dpkg --configure
該当パッケージを強制的に削除後、再インストールする (解決せず)
一度、linux-generic 削除してから再度インストールすると解決すると書いてあったのでやってみました。
$ sudo dpkg -P --force-depends linux-headers-6.8.0-44-generic linux-headers-generic linux-generic linux-image-6.8.0-44-generic
$ sudo apt install -f linux-headers-6.8.0-44-generic linux-headers-generic linux-generic linux-image-6.8.0-44-generic
が、再インストールでまた同じエラーが出ます。
エラーをよく見直してみる
何か解決の手がかりはないかと端末のエラー内容をよく見直してみると、気になるエラーが出ていました。
Error! Bad return status for module build on kernel: 6.8.0-44-generic (x86_64)
Consult /var/lib/dkms/amdgpu/6.8.5-2009582.24.04/build/make.log for more information
/var/lib/dkms/amdgpu/6.8.5-2009582.24.04/build/make.log?
amdgpu-dkms が絡んでいるのでしょうか…? 「でも今まで問題なかったんだけどなぁ…」と思いつつ amdgpu-dkms とエラーが出るカーネルを削除します。
$ sudo apt purge amdgpu-dkms
$ sudo apt autoremove linux-headers-6.8.0-44-generic linux-headers-generic linux-generic linux-image-6.8.0-44-generic
そして問題のカーネル(バージョン6.8.0-44)を再度インストールしてみます。
$ sudo apt -f install linux-headers-6.8.0-44-generic linux-headers-generic linux-generic linux-image-6.8.0-44-generic
なんと無事にインストールされました。
試しに再起動をして 6.8.0-44 で Linux Mint を起動してみたら無事に立ち上がりました。
/lib/modules/6.8.0-41-generic の削除
念の為、パッケージを更新してみます。
$ sudo apt update
$ sudo apt upgrade
「apt autoremove を利用してください」とのことなので実行すると「ディレクトリ /lib/modules/6.8.0-41-generic が空でないため削除できませんでした」と警告が出ました。
カーネルが更新できない問題はすでに解決していますが、警告が出るのも何か嫌なので /lib/modules/6.8.0-41-generic を手動で削除します。
$ sudo rm -r /lib/modules/6.8.0-41-generic
これで無事、全て解決しました…。再インストールも考えていたので本当に良かったです。
コメント