Linux MintでKernelを更新しようとしたらエラーが出る問題を解決した

Linux

いつものように 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

これで無事、全て解決しました…。再インストールも考えていたので本当に良かったです。

参考にさせていただいたサイト様

Error! Bad return status for module build on kernel
While installing the nvidia-460 driver in Ubuntu 18.04, I get the following error. Error! Bad return status for module b...
Ubuntu 依存関係の問題により linux-generic の設定ができません - ラブラドールレトリバー「忠太の心の声」
Ubuntu12.04で、アップデート時にエラーがでました。※私はlinuxの素人です。それを前提にお読みください。--------------------------------------------------dpkg:依存関係の問題...
パッケージ依存関係が修復できない時の対処法 - Qiita
まずは dpkg --audit で問題を確認する。その後、それらのパッケージを強制的にアンインストールした後で再インストールするsudo dpkg -P --force-depends パッケ…
dpkgやapt-get関連でエラーが出た時の対処法 - Qiita
サイトのSSL(Let's Encrypt)を更新しようとしたらエラーが出て大変だったのでメモ。エラーメッセージ一覧サブプロセス インストール済みの post-installation スクリプ…

コメント