・作業メモ
Plamoで使っているudevはudev-175とかなり古いバージョンなんだけど、 最近のudevはsystemdと一緒に配布されていてudevだけを更新するというのは大変そう。
どうしたものかなぁ、、と調べていたら、Gentooあたりでeudevというsystemdのudevをforkしたパッケージを見つけた。
これは使えそうだ、とさっそく試してみたところ、udevd や udevadm はちゃんと動いて、ちゃんとカーネルからイベントを受けとっているものの /dev 以下にデバイスファイルが作成されない。
ちゃんとログも吐くのになぁ、、と悩むこと半日、あれこれ調べていたら、最近は /dev に devtmpfs という専用のtmpfsを利用するようになっていることを思い出し、このオプションを指定してカーネルをビルドし直して、そのカーネルを使ってみたら問題なく動作するようになった。
devtmpfs というのは、tmpfs 上にカーネルが認識しているハードウェア情報をデバイスファイルとして生成するようにした仮想ファイルシステムで、カーネルのビルドオプションでこの機能を有効にしておくと、rootfs をマウントした後、自動的に /dev にマウントして、カーネルが認識しているデバイスファイルを動的に作成してくれるらしい。昔、devtmpfs についての記事で「devfsの再来」と書いてあったことを思いだして、なるほど、これは確かに今風のdevfsだと思った次第。
実のところ、eudevを使わなくても必要なデバイスファイルはdevtmpfsの機能で作成されるものの、カーネルが作ったデバイスファイルは root.root になるので、適当な group に設定したり、シンボリックリンクを貼ったりするのが eudev の仕事になっているらしい。
udev-175で特に不便はないし、eudevに更新したところで何が変わるわけでもないので、更新するかどうかは決めかねているけど、更新するにはカーネルレベルで設定が必要なことは忘れないようにメモしておく。