[[diary/Kojima]]

・作業メモ

Plamoで使っているudevはudev-175とかなり古いバージョンなんだけど、
最近のudevはsystemdと一緒に配布されていてudevだけを更新するというのは大変そう。

どうしたものかなぁ、、と調べていたら、Gentooあたりで[[eudev:https://wiki.gentoo.org/wiki/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に更新したところで何が変わるわけでもないので、更新するかどうかは決めかねているけど、更新するにはカーネルレベルで設定が必要なことは忘れないようにメモしておく。
- もう一件、eudev は動作時に /run 以下に作業ファイルを置くのだけど、 eudev が動作する時点では /run も含め / は ro なんで、tmpfs あたりを被せてやるか、ビルド時に rootrundir を /dev にでもしてやる必要がありそう。 -- [[kojima]] &new{2015-12-17 (木) 11:46:01};

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS