いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.116 / 読者数:1133名

こんばんは、うすだです。

今、愛知県の山奥にある田舎に来ています。(義母の実家です。)

自然がいっぱいの中、ひとりノートパソコンに向かって、黙々とこの文章を書いています。

というのは真っ赤な嘘で、アケビを見に行ったり、ミョウガを引っこ抜きに行ったり、 夏休みの宿題をやっている息子にちょっかいを出したりしているうちに、 夕方になってしまいました。

結局、まったくと言っていいほど筆が進まず、いつものように、 お尻の火が燃えさかる夜中に、もんもんとこれを書いております。

まあ、夏休みの宿題と同じで、物事というものは、 予定していたようには進んでいかないってことでしょうか。ああ…。

相変わらずせっぱつまってますが、今週も、はりきってまいりますよ。

今週のお題 - udev をもっとカスタマイズする

前回、前々回とお送りしてきました udev も、今回で最後です。

Vol.114 - udev の仕組みを理解する
http://www.usupi.org/sysad/114.html
Vol.115 - udev の設定をカスタマイズする
http://www.usupi.org/sysad/115.html

いままでにご紹介しきれなかったことと、恒例の、メールによる通知を、 性凝りもなくご紹介したいと思います。


その前に、ありもののデバイスではなにかと問題が起こりそうですので、 ニセモノのデバイスを用いて、以降を試していきたいと思います。

その、ニセデバイス用のドライバは、なにもしない無害なものを、 適当にでっちあげました。自分でも試してみたいという貴兄は、ご面倒ですが、 以下から入手してください。

http://www.usupi.org/sysad/116_mod.tgz

ダウンロードしたら、適当な場所で展開して、make コマンドを実行すると、 ニセデバイス用のドライバ・モジュールが作成されます。

  % tar xvfz 116_mod.tgz
  % cd 116_mod
  % make
  ...中略...
  % ls -l usodev.ko
  -rw-r--r-- 1 usu adm 7481  8月26日 22:06 usodev.ko

できたモジュールを、insmod コマンドでロードしたり、 rmmod コマンドでアンロードしたりして、確認することができます。

  (udev のルールを書く。)
  # insmod usodev.ko
  (作成されたデバイスファイルを確認。)
  # rmmod usodev
  (デバイスファイルが消えることを(あるいは消えないことを)確認。)

ただし、コンパイルには、カーネル・ソースが必要です。
カーネル・ソースをお持ちでないかたや、入手困難なかたは、申し訳ありませんが、 実際に試すのを諦めて、想像しながら以降をお読みください。
(あるいは、ホンモノのデバイスをうまく利用して、お試しください。)


まずは、OPTIONS です。
いくつか指定できますが、ここではそのうちの3つを、ご紹介します。

 

OPTIONS="last_rule" を指定しますと、以降の行の条件にマッチしても、 設定が反映されません。
たとえば、以下のような設定ファイルを作成したとします。

  # cat /etc/udev/rules.d/88-uso.rules
  KERNEL=="uso*",  GROUP="adm", MODE="0666" OPTIONS="last_rule"
  SUBSYSTEM=="misc",  MODE="0660"

この場合、1行目に OPTIONS="last_rule" がありますので、 1行目の条件にマッチすると、2行目の条件にマッチしても、すっとばされてしまい、 2行目の設定は反映されません。

以下のように実際に試しますと、先ほどのニセデバイスは、両方の条件を満たしますが、 1行目の設定しか反映されていないことがわかります。

  # insmod usodev.ko
  # ls -l /dev/uso_device
  crw-rw-rw- 1 root adm 10, 63  8月26日 22:35 /dev/uso_device
  # rmmod usodev.ko

 

OPTIONS="ignore_remove" を指定しますと、 デバイスがなくなったときもデバイスファイルを削除しません。
たとえば以下のように実行しますと、rmmod コマンドでモジュールをアンロードしても、 デバイスファイルが存在しつづけることがわかります。

  # cat /etc/udev/rules.d/88-uso.rules
  KERNEL=="uso*",  GROUP="adm", MODE="0666" OPTIONS="ignore_remove"
  # insmod usodev.ko
  # ls -l /dev/uso_device
  crw-rw-rw- 1 root adm 10, 63  8月26日 22:50 /dev/uso_device
  # rmmod usodev.ko
  # ls -l /dev/uso_device
  crw-rw-rw- 1 root adm 10, 63  8月26日 22:50 /dev/uso_device

 

OPTIONS="ignore_device" を指定しますと、 デバイスファイルそのものが作成されなくなります。
たとえば、以下のように実行しますと、insmod コマンドでモジュールをロードしても、 デバイスファイルが作成されないことがわかります。

  # cat /etc/udev/rules.d/88-uso.rules
  KERNEL=="uso*",  GROUP="adm", MODE="0666" OPTIONS="ignore_device"
  # insmod usodev.ko
  # ls -l /dev/uso_device
  /bin/ls: /dev/uso_device: No such file or directory
  # rmmod usodev.ko

つぎに、GOTO と LABEL です。

GOTO="名前" を指定しますと、条件にマッチしたとき、 LABEL="名前" の行までジャンプします。
たとえば、以下のような設定ファイルを作成したとします。

  # cat /etc/udev/rules.d/88-uso.rules
  KERNEL=="uso*",  NAME="usodev", GROUP="adm", GOTO="ijiwaru"
  SUBSYSTEM=="misc",  MODE="0660"
  LABEL="ijiwaru"

この場合、1行目の条件にマッチしますと、GOTO="ijiwaru" がありますので、 3行目の LABEL="ijiwaru" までジャンプします。

以下のように実際に試しますと、先ほどのニセデバイスは、両方の条件を満たしますが、 2行目の設定がすっとばされているのがわかります。

  # insmod usodev.ko
  # ls -l /dev/usodev
  crw------- 1 root adm 10, 63  8月26日 23:15 /dev/usodev
  # rmmod usodev.ko

さて、いよいよ最後になりました。RUN をご紹介しましょう。

RUN="実行するコマンド" を指定しますと、条件にマッチしたとき、 指定したコマンドが実行されます。
たとえば、以下のような設定ファイルを作成したとします。

  # cat /etc/udev/rules.d/88-uso.rules
  KERNEL=="uso*",  NAME="usodev", GROUP="adm", MODE="0660", \
    RUN+="/bin/sh -c 'printenv | Mail -s udev:%k root'"

この条件にマッチしますと、root 宛に以下のメールが届きます。

  To: root
  Subject: udev:uso_device

  SUBSYSTEM=misc
  DEVPATH=/class/misc/uso_device
  MINOR=63
  ACTION=add
  PWD=/
  UDEV_LOG=3
  MAJOR=10
  UDEVD_EVENT=1
  DEVNAME=/dev/usodev
  SHLVL=1
  SEQNUM=622
  _=/usr/bin/printenv

printenv の出力結果をメールしているだけですので、ややわかりにくいですが、 uso_device が追加され、デバイスファイル /dev/usodev が作成された、 ということはわかるのではないかと思います。


以上、udev の残りのもろもろを、ご紹介しました。

ちなみに、デバイスの条件に悩んでしまったときは、udevinfo コマンドを、 以下のように実行してみてください。

  # insmod usodev.ko
  # udevinfo -a -p /sys/class/misc/uso_device
  ...中略...
    looking at device '/class/misc/uso_device':
      KERNEL=="uso_device"
      SUBSYSTEM=="misc"
      DRIVER==""
      SYSFS{dev}=="10:63"

-p オプションで sysfs 上のデバイスのパスを指定しますと、上記のように、 マッチする条件を提示してくれます。
KERNEL 以外にも、いくつか条件が考えられると思います。 ちょうどよいと思われる条件を、上記を参考にして、考えてみてください。

宿題の答え

先週の宿題は、

  複数の行の条件が成り立つ場合にどうなるか、試してみましょう。

でした。

基本的には、重複しなければいずれの設定も有効になりますが、 後の行と設定がかぶっていると、後の設定が有効になります。
たとえば、以下のような設定の場合、

  KERNEL=="uso*",  NAME="usodev", GROUP="adm"
  ...中略...
  KERNEL=="uso*",  GROUP="test", MODE="0660"

NAME や MODE は重複しないため、どちらも有効になりますが、 GROUP は後者の test が有効になります。

  # ls -l /dev/usodev
  crw-rw---- 1 root test 10, 63  8月25日 21:35 /dev/usodev

もし上書きされたくなければ、= の代わりに := を使いましょう。

  KERNEL=="uso*",  NAME="usodev", GROUP:="adm"
  ...中略...
  KERNEL=="uso*",  GROUP="test", MODE="0660"

すると、グループは、test ではなく adm になります。

また、今週のお題でご紹介しましたが、OPTIONS="last_rule" や GOTO を使用して、 後の設定を見ないようにしてしまう方法もあります。

以上、さまざまな選択肢が考えられます。いろいろ試してみてください。

今週の宿題

今週の宿題は、

  デバイスが追加されたときに、その旨をメールでわかりやすく知らせて
  ください。

です。

またですか! 的宿題で、申し訳ありません…。
printenv ではそっけないですので、なにか工夫をしてみてください。
工夫する内容は、どのようなものでも構いません。
来週の答えも、自由にやらせていただこうと思っております。

あとがき

最近、前に読んだ「影響力の武器」という本を、ふたたび読んでいます。

わたしたちは、日常生活の中で、いろんなセールスのひとから、 言葉巧みに誘導されたり、いつの間にかだまされたりすることがあると思います。
この本は、その手口のうち代表的なものの原理や防衛策を、具体的な例を交えて、 わかりやすく説明してくれます。

たとえば、「返報性のルール」は、相手から好意を受けると、 それと同等かそれ以上のお返しをするという、 人間関係を良好に維持するために必要とも言えるルールです。
しかし、これを悪用されると、 望んでいないことをしてもらってもお返しをしてしまったり、 要求を引き下げられただけでもその要求を受け入れてしまったり、 ということが起こりえます。

他にも、思い当たる手口がいくつも載っていて、 ちょっとブルーになってしまうこともありますが、基本的には、 なるほどと思わされることが満載の、面白い本です。

装丁や価格は堅苦しく、ボリュームもありますが、内容はわかりやすいので、 興味のあるかたは、一度図書館などで借りて読んでみてください。

影響力の武器
http://www.amazon.co.jp/exec/obidos/ASIN/4414302692/usupiorg06-22

あ、いまアマゾンで確認してみたら、第二版が出るようですね。
書籍も、ソフトみたいに、アップグレード版を安く販売してくれたらいいのになあ、 と思います。(ああ、読みたいなあ…。)

影響力の武器[第二版]
http://www.amazon.co.jp/exec/obidos/ASIN/4414304164/usupiorg06-22

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−ウィークリーまぐまぐ掲載前の水準に戻りました…。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本