automount など


automount

on-demand つまり, 必要に応じて自動的に, mount するというのが, Linux でもできると聞いて, やってみた. つまり, mount -t vfat /dev/hda0 /mnt とかやんなくてよくなるというわけだ. こりゃあ便利ですよ. かなりお勧めです.

わしがやったのは, カーネルがサポートする automount だ. これに 必要なものは, 次の通り.

それぞれ, 順に説明しよう. まずは, カーネルから. カーネルの, automount に関連する設定項目は, これだ.
Kernel automounter support (experimental)
CONFIG_AUTOFS_FS
  The automounter is a tool to automatically mount remote filesystems
  on demand.  This implementation is partially kernel-based to reduce
  overhead in the already-mounted case; this is unlike the BSD
  automounter (amd), which is only in user space.  To use the
  automounter you also need the user-space tools from
  ftp.kernel.org:/pub/linux/daemons/autofs.  If you are not a part of
  a fairly large, distributed network, you probably do not need an
  automounter, and can say N here.
「でかいネットワークで, nfs による分散ファイルシステムで非常に有用だが, そ うでなければ必要無い」と書いてありますが, そんなことないです. それどころか, デスクトップ環境を実現する上で, 必要不可欠と言える. まず, これを `Y' にしてカーネルをコンパイルしてくれ.

次は, automount daemon だ. ファイルシステムへのアクセスがあったときに, それに応えて mount するとい う操作をやってくれるのが, このプログラム. はずかしながら, 俺は rpm をそのままインストールしたので, 仕組みは良く知らないのだ. その使い方しか判らない. パッケージ名は, autofs だ. rpm をインストールすると, /etc/rc.d/init.d に autofs という スクリプトが入る. 一般には, この, おまけで付いて来るスクリプトを使って, サービスを起動するのがいいだろう.

この daemon の設定は, /etc/auto.master に書く. /etc/auto.master に書くべき項目は,

ここでは, automount で使うマウントポイントは /misc 以下に作り, /etc/auto.misc というファイルで各ボリュームに関する指定をすることにしよ う. それから, オプションとして, 1分のあいだ, マウントされたボリュームが busy でない状態が続いた場合に自動的に umount することにする. 手でいちいち umount しなくても, お留守なファイルシステムは勝手に umount してくれるというわけだ. auto.master は, この例だとこうなる. この 1行きり.
/misc   /etc/auto.misc  --timeout 60

実際にマウントポイントとボリュームを指定しているファイルである /etc/auto.misc の中身は, 俺の場合は, たとえばこんな感じだ.

cd	-fstype=iso9660,ro	:/dev/cdrom
nfscd	-ro,hard,user	mic:/cdrom
tab あるいは スペースで区切られた各フィールドの意味は, 左から, である. マウントポイントは /etc/auto.master で指定したディレク トリからの相対パスになる. この例では, 一番上の行は, /dev/cdrom は /misc/cd に自動マウントする. mount コマンドに渡すオプションは, ファイルシステムが iso9660 で, read only で mount しろ, というものだ. 次は, mic というホストの cdrom を nfs でマウントするというもの. こいつは /mics/nfscd というディレクトリにマウントされることになっている.

マウントポイントは, 作成しなくてもいい. つまり, この例では, /misc/cd は存在する必要は無い. マウントポイントは on-demand で作成される(かっこいい!). マウントするボリュームは, 必ずコロンを含んで記述する. コロンの前になんもないと, それは local のデバイスであると解釈される. このように, automounter は, 基本的に nfs を想定してつくられたもので, その元祖は SunOS らしい.

これで, automount をスタートする. linuxconf を使って, 起動するサービス を定義してもいいし, 手で

/etc/rc.d/init.d/autofs start
とやってもいい. あとは, /misc/cd や misc/nfscd に(たとえば ls とかで)アクセスするだけで, マウントポイントが自動的に作成され, ボリュームがマウントされる. /etc/auto.misc を変更したら, その変更は daemon に直ちに反映される. つまり, automount daemon を HUP したりする必要は無い. 俺の使っているパッケージのインストール形態では, auto.master は, 実際には /usr/sbin/automount を起動する時の コマンドライ ンオプションを与えているだけなので, これを変更したら automount を 一旦停止し, プロセスを再起動する必要がある.

ノートパソコンの場合, ネットワークインターフェースが存在するとは限らない が, 存在しない場合は, 普通に rpc (remode procedure call)のエラーになる. カーネルパニックなどにはならない(少なくとも俺の環境では)ので, 安心だ. これで, 1分ほっとけば勝手に umount されるのだ. こりゃ便利. ただし, ネットワークインターフェースが存在するだけで, 実際に接続していな いという状況で, (たとえば, ケーブルが抜けてるとか) automount の要求が発生すると, エラーが帰って来るまで, nfs の設定にもよるが, かなりの時間がかかる. その間, GNOME のファイルマ ネージャは凍り付いたままなので, あまりよろしくない.

apple の automount は, ボリュームが存在すると, 勝手に認識されて (デスクトップに)マウントされるが, それとは若干操作が異なる. ボリュームが挿入されたことを probe する仕組みが AT互換機には一般に無い (安普請じゃのう). だから, ボリュームの存在というイベントに応じてマウントポイントを生成する というのは, 無理がある. mount するときの操作としては, apple 方式が自然である. 存在しないファイルへのアクセスをシステムが拾って, on-demand でファイル を作成し, そこにボリュームをマウントするというのは, tricky でかっこいい が, 自然とは言いがたい.

使っていないときは, 勝手に umount するというのは, 一長一短だ. umount されたかどうか判らないので, うっかり mount されてるボリュームをひっ こ抜いてしまう可能性もある. scsi の cdrom なんかでこれをやると, カーネルごとぶっ飛ぶ. 一方, いちいち umount する操作は必要無いというメリットもある. 使ってないメディアをひっこ抜くのに, わざわざマシンに命令しなくてもいい というのは, 自明な操作を省略されているので, 悪くない. うっかり mount 中のボリュームをヒッコ抜くのを防ぐには, timeout を短くす るというのもアリだ. もっとも, あまり短いと負荷がかかるし, syslog が膨大 になるし, それに, 使いにくい.

所詮 on-demand な mount コマンド実行 wrapper であるから, single user mode にして, ルートファイルシステム以外を全部 umount し, fsck する, などというハードな操作には, mount コマンドやファイルシス テムそのものに関する多少の技術的なバックグラウンドが不可欠だ. autofs は そういうサバイバル的な状況に於ける操作の支援を目的とした仕組みではない. これを判った上で適切に設定すれば, めんどくせえ mount コマンドからは, ある 程度開放されるので, 一般ユーザには, 便利なサービスだといえるだろう.

俺は, automount の mount point への symlink をデスクトップから作成して いる.

emacs/w3 ブラウザ

emacs-lisp によるブラウザ "W3" は, 今も開発続行中みたいで, 何かややこしいことになっているようである. 最新版は, emacs 19.x ではうごかなかったりするようす. 日本のサイトに, ちょっと古い 3.0.50 というのが置いてあったので, ありがた く頂いた.

コレを使うのは, 久しぶりだ. 一年ぶりくらいかも. 何かの拍子に, せっかくイ ンストールしたのを消してしまい, パッケージもどっかへやってしまって, 開発元では 4.0 に移行していて, 当時使っていた emacs-19.28 では インストールすらできなくなっていて, そのまま放り出していたのだ.

何故か lynx 君が日本語を宇宙語に翻訳してくれるので, テキストベースのブラウザが無くて困っていたのである. しかし, emacs/w3 は, 俺としては lynx よりもずっと気に入っている. なぜかというと, これは info とキーバインドがだいたい同じなのだ. info で cross-reference を辿るのは, w3 で a タグを辿るのと同じ操作なの だ. html を見るのと, info を見るのが同じ感覚でできたら良いなと思う人は, 俺だけではないというわけだ. 当然だな. それに, parse した html を, そのまま mew のドラフトに突っ込めるのも とてもいい. frame を 2つに割って, 片方は html モード. 片方は w3モードで, 片方で書きながら, もう片方で出来上がりを見るというのもできる. もちろん, 検索サイトの入力フォームに日本語入れるのも完璧だしね. W3 と wget , これがあれば, じっさい navigator は不要ともいえる.

gnome-top

俺は, こういうのが欲しかった! ズバリ. gtk で書かれた top である. むちゃくちゃ便利です. まじで. 昔, わしは ikill というしょうもないスクリプトを書きましたが, それというのもこういうプログラムが無いからでした.

とはいえ, いくら shell から ps をじかに叩いてるからといって, さすがに高機能で国際化されてて gtk で書いてある gtop よりは ikill の方が軽いので, xterm なんかから, わざわざ gtop 使うことは無いです よ. でも, 専らマウス使ってるときは, コレですよ.

top の画面みたいのから, 左クリックでプロセスを選んで, 右クリック. すると, そのプロセスに対する操作がメニューとして出現する. 最初に来るのは, やはり 15番(terminate)シグナルを送信するというやつですね. 他には, renice ができるようになっている. これがいい! 現在実行中のプロセスの, リソース利用優先度を変更できるのだ. ちなみに, これは, えぬちー とかで, レジストリいじって使うリソースの設 定を変更するのとは, ちと違う. OS 側がそのプロセスに割り当てるリソース(cpu時間)の設 定である. これが現在実行中のプロセスに対してダイナミックにできるのだ. 最近の UNIX はすごいのう. もちろん「えぬちー」でも, 実行中のプロセスの優先度を変更するくらいは できるぞ. 本当に変更されてるかどうかは別にしてな.

プロセスの, メモリのスナップショットも撮ってくれます. ちょいとした debugger としても使える?

その他

gnome-libs は, 1.0.6 が gtk+-1.2.0 で make できなかったのだが, gtk+-1.2.1 にすると, make できた. なんでしょう? jargon は, かの有名な The Hackers Dictionary であり, 暇なときに拾い読み するのである. 編集は, これまたかの有名な ESR すなわち Eric Raymond さん である. Linux の記事とかは加筆されていて, なかなか良い. 「1999年現在, Microsoft の OS 独占に対する深刻な脅威となっている」なん て書いてあって, 俺が何かしたわけでもないのに, ちょっと得意な気分になって みたりしてな.

この辞書(?)の, back door という項目は, 一見の価値あり. Ken Thompson おそるべし.