[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:29770] udev and /dev/cdrom, /dev/dvd, etc..



本多です

udev周りなのですが、defaultの状態だと次のような奇妙な現象が発生すると
思います。

条件: plamo-4.6で/etc/udev/rules.d/以下を変更していない。
#(但し、60-plamo_local.rulesの最初の数行(pmount関連)をcomment outしているのは可)
# udevのversionは137 - 142まで全て

現象: 
1. cd等を挿入していない状態で起動。
2. /dev/cdrom, /dev/cdrw, /dev/dvd等が存在する事を確認。
3. cd (dvd)等を挿入。 mount,再生等はしない。挿入するのみ。
4. 不思議な事に/dev/cdrom, /dev/cdrw, /dev/dvdが消えています。

# よってdefaultでこれらを見に行くprogramsは動かない。
# net関連のdevciesでも以下の理由で不具合が発生する可能性があると思います。

理由:
これらはudevのcd/net generator_rulesが上手く動かないため、
   /etc/udev/rules.d/70-persistent-cd.rules, 70-persistent-net.rules
に起動時attachされたcdとnet devicesが登録されない為です。
#実際 /etc/udev/rules.d/以下に70番台のfilesは出来ていないはずです
(通常は出来ていなくてはならない)。

詳細な過程を述べると、
1) rc.S の udevadm --triggerの時はrootfsはread onlyの状態です。
2) udevはtriggerによって、75番代のgenerator rulesを実行し
   staticにattachされたcd/netのdevices情報を70-persistent-cd/net.rulesに
   登録しようとします。しかし rootfsはread onlyなのでrule filesを/dev/.udev/以下に
   作ります。(/lib/udev/rule_generator.fuctionsを参照)
3)cdが挿入されるとeventが発生して udevdが呼ばれます。
   この時点では, rootfsはread可能な状態なので、udevは/etc/udev/rules.d/以下の
   70-persistent-cd/net.rulesを確認しますが (本来はここにはsymlinkの操作が記述される)
   これが空なのでsymlinkを削除してしまいます。

対策:
要はudevがtriggerされる時に,/etc/udevが書き込み可能な状態であるべきです。
rc.Sの起動順序を以下のように変更すると問題は解決します。

1) mount -w -n -t sysfs /sys /sys まではそのまま。
2) ここでrootfsのfsckとwrite update remountを実行
   つまり、rc.Sのwrite test以降からremountまでの部分をここにもってくる。
3) mount -w -n -o mode=0755 -t tmpfs /dev /devを実行し
   /devのstatic devicesを作成
4) udevを起動


Naofumi Honda


Follow-Ups
[plamo:29771] Re: udev and /dev/cdrom, /dev/dvd, etc.., cho
[plamo:29774] Re: udev and /dev/cdrom, /dev/dvd, etc.., Mikio Tomioka
[plamo:29776] Re: udev and /dev/cdrom, /dev/dvd, etc.., Mikio Tomioka
[plamo:29778] Re: udev and /dev/cdrom, /dev/dvd, etc.., 名倉昭一

[検索ページ] [メール一覧]
Plamo ML 公開システム