VPSサーバーでWebサイト公開 備忘録 ~Linux、MySQLからAJAXまで

Linuxのudevdプロセスの概要

CentOS6.5ではデフォルトでudevdというデーモンプロセスが実行されています。このプロセスの概要についてまとめました。

※目次をクリックすると目次の下部にコンテンツが表示されます。

udevdとは?
1)psコマンドの出力内容は?
 
$ ps -ef
root       425     1  0 Jul25 ?        00:00:00 /sbin/udevd -d

 
2)どのパッケージに属する?
 
$ rpm -qf /sbin/udevd
udev-147-2.51.el6.x86_64
 
3)udevパッケージの設定ファイル一覧
 
$ rpm -qc udev
/etc/scsi_id.config
/etc/sysconfig/udev
/etc/udev/udev.conf
 
4)udevパッケージの文書ファイル一覧
 
$ rpm -qd udev
/usr/share/doc/udev-147/COPYING
/usr/share/doc/udev-147/ChangeLog
/usr/share/doc/udev-147/NEWS
/usr/share/doc/udev-147/README
/usr/share/doc/udev-147/README.keymap.txt
/usr/share/doc/udev-147/TODO
/usr/share/doc/udev-147/writing_udev_rules/index.html
/usr/share/man/man7/udev.7.gz
/usr/share/man/man8/scsi_id.8.gz
/usr/share/man/man8/udevadm.8.gz
/usr/share/man/man8/udevd.8.gz
 
5)udevパッケージの概要
 
“yum info udev”コマンドでパッケージの概要を確認しました。
 
①サマリー
A userspace implementation of devfs
 
②URL
http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
 
③説明
udevパッケージは、ユーザースペース内でsysfs、netlinkを使ったdevfsの実装を含む。
 
※sysfs
・Linuxカーネル 2.6 によって提供される仮想ファイルシステム。
・デバイスやドライバについての情報をカーネルモデルからユーザ空間へエクスポートし、設定するためにも使用される。
 
※netlink
・カーネルモジュールとユーザー空間のプロセス間で情報をやり取りする。
・ユーザープロセスに対しては標準的なソケットベースのインタフェースを使用。
 
※devfs
・カーネルが管理するデバイス関係の情報をファイルシステムに見せかけて扱うことができる

udevdの概要
udevdの概要をmanを見て確認しました。
 
・udevdは、イベントを管理するデーモン。
 
・udevdは、カーネルのueventをリッスンし、受け取ったイベントをudevに引き渡す。
 正しいイベントの順序を保証して対処する。子デバイスのイベントは、その親のイベントがデバイスのハンドリングを完了するまで遅延される。
 
・実行中のデーモンの振る舞いは、udevadmによる制御で変更できる。
udevdの起動スクリプトの概要
1)起動スクリプトの説明
 
・ファイルのパスは、/etc/rc.d/init.d/udev-post。
・ファイルシステムマウント後、udev用のスクリプトをPostする。
・生成したudevルールを/etc/udev/rules.dディレクトリに移動する。
 
2)/etc/udev/rules.dディレクトリ内のファイル一覧
 
私の環境(CentOS6.5)には下記ファイルがありました。
 
$ ls /etc/udev/rules.d
60-fprint-autosuspend.rules 70-persistent-net.rules 99-fuse.rules
60-raw.rules 90-alsa.rules
70-persistent-cd.rules 90-hal.rules
 
3)起動スクリプトの概要
 
①設定ファイル読込
. /etc/sysconfig/udev
 
②失敗したudevイベントを再トリガー
/sbin/udevadm trigger –type=failed
 
③udevのパーシステントルールを追加
for file in /dev/.udev/tmp-rules--*; do
        dest=${file##*tmp-rules--}
        # check, if anything is todo
        [ "$dest" = '*' ] && exit 0
        echo -n $STRING
        cat $file >> /etc/udev/rules.d/$dest
        rc=$(($rc+$?))
        rm -f $file
done
udevadmの概要
udevadmの概要をmanで確認しました。
 
1)概要
 
・udevadmは、udevの管理ツール。
・udevadmは、コマンドとそのオプションを指定して実行する。
・udevのランタイムの振る舞いをコントロールし、カーネルイベントをリクエストしたり、イベントキューを管理したりする。さらに簡単なデバッグ機能を提供する。
 
2)コマンドの構文
 
udevadm [–debug] [–version] [–help]
udevadm info options
udevadm trigger [options]
udevadm settle [options]
udevadm control command
udevadm monitor [options]
udevadm test [options] devpath
 
①udevadm info options
 
・udevデータベース内に保存されているデバイス情報を問い合わせ。
 
②udevadm trigger [options]
 
・カーネルからデバイスイベントをリクエスト。通常、システムのcoldplug時にイベントをリプレーするのに使用される。
 
③udevadm settle [options]
 
・udevイベントキューを監視し、すべてのカレントイベントが処理されると終了する。
 
④udevadm control command
 
・実行中のudevデーモンの内部状態を変更する。
 
⑤udevadm monitor [options]
 
・カーネルのueventとudevルールによって送信されたイベントをリッスンし、コンソールにイベントのdevpathを出力する。
 カーネルのueventとそのudevイベントのタイムスタンプを比較することによってイベントタイミングを分析するのに使用される。
 
⑥udevadm test [options] devpath
 
・指定したデバイスのudevイベントの実行をシミュレートし、デバッグを出力する。
モバイルバージョンを終了