drm-kmod? あなたはどこの誰ですか

 

今日は2025年6月29日(日曜)。 個人の翻訳事務所ヒノトリホンヤクの本店がある東京都日野市の天候は晴れ。強い晴れ。最高気温34℃の予報です。
6月だというのに。ナニソレ。(笑)

夏が来るのは毎年のことで、秋が来るまではアイツ(夏)がいることはわかっているのですが、わかっていてもやりきれないです。
夏は嫌いです。暑いのが嫌なので。

 
今日はFreeBSDの14.3-RELEASEが公開されたときのトラブルについて。覚書です。
 
まとめを先行して書いてしまいますが、今後はfreebsd-updateコマンドになんと推奨されようと、マイナーバージョンアップグレードは極力回避します。
 
 
マイナーバージョンアップグレードとは、今回のケースで言うと
FreeBSD 14.2-RELEASE -> FreeBSD 14.3-RELEASE
のような、マイナーバージョン変更です。

 

FreeBSD本家のリリースアナウンスメント
https://www.freebsd.org/releases/14.3R/announce/

によると、

Date: June 10, 2025

“The FreeBSD Release Engineering Team is pleased to announce the availability of FreeBSD 14.3-RELEASE.”

 

と言っています。 2025年6月10日に公開されたのか……。

さあ。 2025年6月24日からウチのLenovo ThinkPad L450 のマイナーバージョンアップグレードをしました。(アップグレード前は、FreeBSD 14.2-RELEASE, 元はといえばNomadBSD 141R + Xfce)

……アップグレードしようとしました。
 
 

後悔しています。 



ああ、申し遅れましたが、ハードウェア的にはLenovo ThinkPad L450は下の画像のようなモノです。 元気なときは、こんなでした。
かっこいいですね。

 
 
 
 
 
マイナーバージョンとはいえアップグレードです。(アップグレード処理により、カーネルが変わります)

rootになって、こういうコマンドを叩きました。

 

# freebsd-update -r 14.3-RELEASE upgrade

# freebsd-update install

# shutdown -r now

# (リブートします)

# freebsd-update install

 

結果として、Xにもsddm(ディスプレイマネージャー)にも到達できず。

またしてもお手上げです。

どうやらグラフィクスドライバーがうまく動作していないようです。ずっと、カーネルモジュールを読み込んでいるあたりで停まっています。
 
 
これだと、rootでログインして設定ファイル(/etc/rc.confなど)を編集することもできないんですよね。

重症です。

もう慣れっこになってきてますが、困りました。慣れたといっても、困ることは困るのです。

 

 
素人なりに調べたのですが、グラフィクス関係のドライバというか、ドライバのカーネルモジュールと、カーネル自体のバージョンが不一致で、不具合を起こしているようです。
カーネルモジュールのコンパイルが間に合ってないとか、カーネルモジュールの方がカーネルよりも先に行ってしまっているとか、色々ですね。



本家のFreeBSDのフォーラム
https://forums.freebsd.org/threads/possible-solution-to-the-drm-kmod-kernel-mismatch-after-upgrade-from-bapt.96058/
によると、(2024年12月のスレッドなのですが)

 

Possible solution to the drm-kmod kernel mismatch after upgrade from (someone)

 

There are a lot of threads on this subject. It’s a thorny problem that often comes up after upgrades from a minor version that has not reached EOL yet.

 

などと言っています。
本当にthorny(やっかいな)問題です。

 

このdrm-kmodというのは、いかにも初心者殺しですが

 

Direct Rendering Managerのkernel module
ということを暗示しています。

 


 

The Direct Rendering Manager (DRM) is a subsystem of the Linux kernel responsible for interfacing with GPUs of modern video cards. DRM exposes an API that user-space programs can use to send commands and data to the GPU and perform operations such as configuring the mode setting of the display.

 

とあります。 Linux由来のテクノロジーなのです。

そもそもの話、Direct Rendering Moduleの記事はWikipedia日本語版にはまだないという時点で、根が深い問題です。

 

 
グラフィクス関係のドライバを開発するリソースは、Linuxは圧倒的にすごいですからね。(ユーザー数が多いので、開発者の数も多い)
FreeBSDは、その成果を使用させてもらっているようです。

問題はLinuxのドライバはエライ勢いでバージョンが変わっているのに、FreeBSDのカーネルの開発スケジュールはそれと同期していないということです。

今回の不具合は、14.2-RELEASEから14.3-RELEASEにfreebsd-updateをしたことで、FreeBSDのカーネルが新しくなった。だが、DRMのカーネルモジュールがまだビルドされていないということらしい。

それで、挙動がおかしくなってグラフィクスが機能しない。
(sddmもXfceも起動しない)
ports collectionを使って新しいFreeBSDカーネルを使ってカーネルモジュールをコンパイル(というかビルドというかmakeというか)してportsからインストールすれば正しく機能するそうです。 
(やはり卑しくもFreeBSD使いたるものはsourceとportsをインストールしてやっとイチニンマエなのでしょう)

 

 
最終的には、私はfreebsd-updateによるよるマイナーバージョンアップグレードを諦めました。

 

homeディレクトリの中のデータはNASにバックアップをとってあります。昔に比べれば楽なものです。
挫折したThinkPad L450にはNomadBSDを再インストールしました。
(2024年7月に出ていた、NomadBSD-141Rというやつです。
NomadBSD 141R-20240711 (64-bit/x86-64/amd64, ZFS)

NomadBSDの本家Webページからダウンロードしました。)
 
 
諦めて再インストールしたわけですが、今回、14.1-RELEASEインストール後に14.2-RELEASEにアップグレードした後に
pkg update -f
をしてもDRMの挙動が不審になりました。
カーネルのバージョンを上げない方が安全なようです。
再々インストールして、14.1-RELEASEで凍結しました。
いちおうpkg update -fはやりましたが。pkg upgradeはすべて禁忌としました。

 

それから、万一のことを考えてdrm-kmod系のPackageを、改変されないようにロックしました。

 

# pkg lock graphics/drm-kmod

 
このあと、pkg search drmをやって、drm-kmodの配下にいるdrm系のカーネルモジュールを全部ロックしました。
graphics/drm-61-kmodとか、graphics/drm-515-kmodです。

(他人には推奨しません。私の個人的なおまじないです。詳細をわかってないので)



 
やれやれ。
無事に再々インストールが終わって、使いやすいThinkPad L450 with FreeBSD 14.1-RELEASE (Xfce)が帰ってきましたよ。
もう、これからは、いくらfreebsd-updateコマンドにアップグレードを推奨されても、軽く華麗にスルーします。
「14.1-RELEASEはサポート終了だよ」と言われても、無視します。
 
ターミナルコマンドによるマイナーバージョンアップグレードは諦めました。
どうしても15.*-RELEASEなどを使いたいという事態にならない限り、このままでいきます。
やっぱり、OSはログインできなきゃ。
(あたりまえ)