hondah
2015年9月29日 19時24分
いつもお世話になっております。
本田と申します。
Armadilloでコンソールポートのパーミッションを変更したいと思うのですが、
何か弊害が発生するでしょうか。
具体的には
/dev/ttymxc1を666(rwrwrw)に変更
使用用途としては、シリアルポートの信号線情報の取得です。
ご教授の方、よろしくお願い致します。
コメント
at_yuma.arakawa
at_yashi
hondah
y.nakamura
中村です。
便乗質問です。
at_yashiさん:
> udevで動的に生成されるデバイスファイル以外は、vendors/AtmarkTechno/*/vendors/AtmarkTechno/*/ に記述があります。
> a440の場合は、vendors/AtmarkTechno/Armadillo-440/ext2_devtable.txt です。
本田さん:
> vendors/AtmarkTechno/Armadillo420(410)/ext2_devtable.txt を
> /dev/ttymxc c 660 0 0 207 16
> /dev/ttymxc c 666 0 0 207 16
> に変更し、Makeし直した所、/dev/ttymxc1は666(crw-rw-rw-)になりました。
これ、できました?
Armadillo-440でやってみましたが、できませんでした。
ext2_devtable.txtについては前から疑問点(確認したい点)があったので、
教えてください。
- udevが動いているときは、このファイルの設定は使われないのではないでしょうか?
- userlandのコンフィグレーションでudevをOFFにすると使われる?
udevがONの場合、dfすると
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/ram0 29356 26487 1392 95% /
udev 63252 4 63248 0% /dev
となって、udevが新しく/devをマウントする(?)ので、
元の/dev(ext2_devtable.txtを元に生成されたもの)が
見えなくなるものと思います。
コンフィグレーションでudevをOFFにすると、
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/ram0 29116 26265 1386 95% /
これだけです。
で、udevをOFFにしてext2_devtable.txtで
> /dev/ttymxc c 666 0 0 207 16
をやってみたところ crw-rw-rw- になりました。
udevを動かすときに、udevによる自動生成ではなくて
手動で/dev以下にデバイスを作るには、/etc/udev/links.confに書けば
いいようですが、links.confではパーミッションを設定できません。
この場合のパーミッションはどうやって設定するのでしょう?
--
なかむら
at_yashi
> これ、できました?
> Armadillo-440でやってみましたが、できませんでした。
あれ、ごめんなさい。
> ext2_devtable.txtについては前から疑問点(確認したい点)があったので、
> 教えてください。
> - udevが動いているときは、このファイルの設定は使われないのではないでしょうか?
使われます。
イメージファイル (romfs.img
)を生成するツール genext2fs
が使うファイルでので、
device node は、udev の有無にかかわらず romfs.img
の中に生成されます。
romfs.img
を loopback で mount
すると見えるはずです。
たしかに中村さんが下記に書いているとおり、udev は /dev
の上にRAMベースのファイルシステムを
mount
するので、そのままでは見えなくなってしまいます。
ただ、udev って、/dev
以下の device node を /dev
に作りなおすかとおもっていたのですが、
ごめんなさい、勘違いかもしれません。
> udevを動かすときに、udevによる自動生成ではなくて
> 手動で/dev
以下にデバイスを作るには、/etc/udev/links.conf
に書けば
> いいようですが、links.conf
ではパーミッションを設定できません。
> この場合のパーミッションはどうやって設定するのでしょう?
あまり良い方法がないですね。
- links.conf
を拡張して、chmod
が動くようにする
- udev の rule の MODE
を使う
- boot script の中で、chmod
する
くらいでしょうか?
y.nakamura
中村です。
at_yashi さん、回答、ありがとうございます。
> > - udevが動いているときは、このファイルの設定は使われないのではないでしょうか?
>
> 使われます。
> イメージファイル (romfs.img
)を生成するツール genext2fs
が使うファイルでので、
> device node は、udev の有無にかかわらず romfs.img
の中に生成されます。
> romfs.img
を loopback で mount
すると見えるはずです。
生成されたimageファイルの中身までは確認していませんが、
ベンダディレクトリのMakefileでgenext2fsで読み込んでいるのを
確認した上での質問でした。
> ただ、udev って、/dev
以下の device node を /dev
に作りなおすかとおもっていたのですが、
> ごめんなさい、勘違いかもしれません。
質問を投稿する前にgenext2fsに
/dev/hoge d 777 - - ...
というようなのを書いて試したのですけど、udevが動いていると(udevが
/devを作っていると)、/dev/hogeディレクトリは作られませんでした。
udevをoffにした(udevを起動させない)イメージを作れば
/dev/hoge というディレクトリができてました。
> > いいようですが、links.conf
ではパーミッションを設定できません。
> > この場合のパーミッションはどうやって設定するのでしょう?
>
> あまり良い方法がないですね。
>
> - links.conf
を拡張して、chmod
が動くようにする
> - udev の rule の MODE
を使う
> - boot script の中で、chmod
する
ありがとうございます。
--
なかむら
y.nakamura
中村です。
投稿する前に/etc/init.d/udevdもチェックしとけばよかった・・・
links.confって、このスクリプトでしか見てませんね。
> > > いいようですが、links.conf
ではパーミッションを設定できません。
> > > この場合のパーミッションはどうやって設定するのでしょう?
> >
> > あまり良い方法がないですね。
> >
> > - links.conf
を拡張して、chmod
が動くようにする
links.confを拡張して、/etc/init.d/udevdスクリプトを改造するのがようさそうです。
/etc/init.d/udevdから抜粋
reate_extra_node() { [ -e /etc/udev/links.conf ] || return 0 grep '^[^#]' /etc/udev/links.conf | \ while read type name arg1; do [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] || continue case "$type" in L) ln -s $arg1 /dev/$name ;; D) mkdir -p /dev/$name ;; M) mknod -m 600 /dev/$name $arg1 ;; *) log_warning_msg \ "links.conf: unparseable line ($type $name $arg1)" ;; esac done }
--
なかむら
y.nakamura
中村です。
たびたびスミマセン。
> links.confを拡張して、/etc/init.d/udevdスクリプトを改造するのがようさそうです。
気になるところがあったので、実際に動かしてみました。
1) /etc/udev/links.conf を次のように修正
修正前
#M ttymxc0 c 207 16 M ttymxc1 c 207 17 M ttymxc2 c 207 18 #M ttymxc3 c 207 19 M ttymxc4 c 207 20
修正後
M ttymxc0 c 207 16 M ttymxc1 c 207 17 M ttymxc2 c 207 18 M ttymxc3 c 207 19 M ttymxc4 c 207 20
2) /etc/init.d/udevdを次のように修正
udevdデーモンを起動る直前に
chmod 666 /dev/ttymxc*
を実行
このようなromfsイメージを作ってブートさせ、telnetからguestでlogin。
/dev/ttymxc*のパーミッションを確認。
[guest@armadillo440-0 (ttyp0) ~]$ ls -l /dev/ttymxc* crw-rw-rw- 1 root root 207, 16 Jan 1 09:00 /dev/ttymxc0 crw--w--w- 1 root root 207, 17 Jan 1 09:00 /dev/ttymxc1 crw-rw---- 1 root root 207, 18 Jan 1 09:00 /dev/ttymxc2 crw-rw-rw- 1 root root 207, 19 Jan 1 09:00 /dev/ttymxc3 crw-rw---- 1 root root 207, 20 Jan 1 09:00 /dev/ttymxc4
udevが自動では作らないttymxc0とttymxc3は666(rw-rw-rw-)になりましたが、
/etc/udev/links.confに記述がなくてもudevが自動で作るttymxc2と4は
udevによってrw-rw----にされてしまいました。
ttymxc1はudevのあとgettyが動いてrw--w--w-になっているものと思います。
[guest@armadillo440-0 (ttyp0) ~]$ ps | grep getty
1306 root 652 S /sbin/getty -L 115200 ttymxc1 vt102
1324 guest 692 S grep getty
ということで、
> links.confを拡張して、/etc/init.d/udevdスクリプトを改造するのがようさそうです。
でchmodする方法はNGでした。
udevが動いたあと(ttymxc1はgettyも動いたあと)、
rc.localなどでchmodするのが簡単確実っぽいです。
--
なかむら
hondah
いつもお世話になっております。本田です。
> 本田さん:
> > vendors/AtmarkTechno/Armadillo420(410)/ext2_devtable.txt を
> > /dev/ttymxc c 660 0 0 207 16
> > /dev/ttymxc c 666 0 0 207 16
> > に変更し、Makeし直した所、/dev/ttymxc1は666(crw-rw-rw-)になりました。
>
> これ、できました?
> Armadillo-440でやってみましたが、できませんでした。
中村様
申し訳ありません。/etc/config/rc.localに追記していた、chmodの記述を消し忘れておりました。
確かにvendors/AtmarkTechno/Armadillo-440/ext2_devtable.txtの変更だけでは、
パーミッションは変更されておりませんでした。
hondah
2015年9月29日 19時30分
追記
デフォルトの/dev/ttymxc1は611(rw--w--w-)のみで、
rootユーザーのみ、信号線情報を取得できます。
root以外のユーザーで取得できればと考えております。
以上、よろしくお願いいたします。