  Automount mini-Howto
  don@sabotage.org
  v0.4, 17 April 1999
  早川 仁 cz8cb01@linux.or.jp
  v0.4j, 1999年10月 2日

  このファイルは autofs オートマウンタとその設定方法、そしていくつかの避
  けるべき問題点について説明します。
  ______________________________________________________________________

  目次

  1. イントロダクション
     1.1 オートマウント - どうしてこれが必要になるの？
     1.2 オートマウントの種類

  2. インストール
  3. 設定
  4. アンマウントまでの長い待ち時間
  5. Questions
     5.1 /auto/floppy のようなマウントポイントが見つかりません
     5.2 マウントの状態を見るには？
     5.3 win95(vfat）フロッピーを入れましたが、単なる FAT のフロッピーとして自動認識されました
     5.4 私の /grumblesmurf というファイルシステムがマウントされましたが kill -SIGUSR1 を送ってもアンマウントされません
     5.5 / ディレクトリをオートマウントするようにしたらどうなります？
     5.6 同じディレクトリに２つのマップファイルを置いておけますか？
     5.7 私は SuSE 6.0 を使っています。--timeout の代わりに ---timeout を使う必要があるんですが
     5.8 ファイルシステム（つまり FAT ですが）にパーミッションと所有権をセットする方法は
     5.9 autofs に感謝するには？
     5.10 オートマウンティングについてもっと知りたいのですが？

  ______________________________________________________________________

  1.  イントロダクション

  1.1.  オートマウント - どうしてこれが必要になるの？

  オートマウンティングとはデーモンによって自動的に実行される、ファイルシ
  ステムのマウンティング（及びアンマウンティング）のプロセスの事です。も
  しアンマウントされているファイルシステムにユーザーがアクセスをしようと
  した場合、自動的に再マウントされます。この動作は大規模なネットワーク化
  された環境や複数のマシン間（特に常時オンラインではないマシン間）での相
  互マウントしたファイルシステムの場合に非常に便利です。これはまたリムー
  バブルな機器の場合や、マウントしたDOS ファイルシステムとの文字コードや
  改行コードなどの変換といった使用方法の場合に非常に便利かもしれません。

  1.2.  オートマウントの種類

  linux のオートマウンタには AMD と autofs の２種類があります。AMD はオ
  ートマウントデーモンで、おそらく SunOS の AMD と同じ様に動作します。こ
  のデーモンはユーザー空間に実装されます。この事は、カーネルの一部では無
  いという事を意味します。AMD デーモン（このデーモンは NFS システム経由
  で、全てのオートマウントされるファイルシステムのトラフィックをルーティ
  ングします）を使用して NFS でローカルホストのマウントを行えば、カーネ
  ルのオートマウンティングに対する設定は必要ありません。Autofs はカーネ
  ルにアシストされる新しいシステムです。この意味は、カーネルのファイルシ
  ステムのコードはオートマウントポイントが他の通常のファイルシステムのど
  こにあるかを知っているという事で、オートマウントプログラムはそのマウン
  トポイントを使用します。この mini-howto では、autofs のみを説明しま
  す。

  2.  インストール

  autofs はカーネル空間に実装されていますので、カーネルはそれをサポート
  するようにコンパイルされている必要があります。カーネル2.0.xxでは、実験
  的オプションでしたが、非常に安定しているようでしたので、2.1.xx（おそら
  く 2.2.xxでも）では普通のオプションとなりました。

  また、オートマウントプログラムとその設定ファイルも必要となりま
  す。rpms（RedHat のパッケージ形式です）を使用するのは非常に良い方法で
  す。オートマウントプログラムは /etc/rc.d/init.d ディレクトリの rc スク
  リプトによって起動されるはずです。rpm はそのスクリプトをインストールし
  ますが、起動されたかどうかは Redhat のコントロールパネルを使用してあな
  たのrc?.d ディレクトリからリンクするか、又は(他のディストリビューショ
  ンの場合)他の好きな方法でそれを起動させて、確認する必要があります。rpm
  を使用していないディストリビューションの場合はそのシステムに適切な方法
  で行ってください。ただし、rcスクリプトが行う事をあまり真剣に読まないで
  下さい。この howto を読んでいる方達は知りたくもないでしょうが。

  3.  設定

  RPM をインストールする事によって簡単に設定を行う事が可能ですが、以前に
  設定を行ったことがない場合は、あまり自信が無い所かもしれません。

  /etc の下には auto.master と auto.misc という２つのファイルがありま
  す。私の auto.master はこのようになっています。

  /auto   /etc/auto.misc  --timeout 60

  最初のエントリーはマウントポイントではなく(二番目のエントリーのファイ
  ル内にある）、いくつかのマウントポイントが設定される場所です。三番目の
  オプションはマウントされたファイルシステムが、使用された後 60 秒経つと
  自分自身をアンマウントしようとすることを示しています。もちろんその時に
  使用中であればアンマウントされません。

  Auto.misc とは"マップファイル"の事です。マップファイルはどのような名前
  でもかまいません。この例ではもともと /misc を操作するものだったので
  auto.misc にします。複数のマップファイルを auto.master の中に定義する
  こともできます。私の auto.misc はこのようになっています：

  kernel          -ro,soft,intr           ftp.kernel.org:/pub/linux
  cd              -fstype=iso9660,ro      :/dev/cdrom
  zip             -fstype=auto            :/dev/hdd4
  floppy          -fstype=vfat            :/dev/fd0

  最初のカラム（これはキーです）はマウントポイントです。上記の場合
  /auto/floppy などです。二番目はオプションの指定です。詳細は mount の
  manpage を参照して下さい。最後のカラムはファイルシステムの場所を示して
  います。上記の "kernel" エントリーは NFS マウントとなっています。その
  他の行の':'はローカル上のデバイスを意味します。

  4.  アンマウントまでの長い待ち時間

  タイムアウトまでの 60 秒間、じっと待っているの人もいるかもしれません
  が、フロッピーが出てくるのを待っているのには長すぎる時間ですね。たぶん
  私は単に sync してマウントされているフロッピーを取り出しちゃいますが、
  そのことに誰も気がつかないでしょう。正しい代替方法を提案させて下さい。
  まず、タイムアウト時間は変更する事ができます。ですが、システムに 15 秒
  やそこらの時間でアンマウントするように指定したからといって、役に立つと
  も思われません。実はオートマウントプログラムにアンマウントするように指
  定する方法があります。kill コマンドで SIGUSR1 シグナルが送られると、オ
  ートマウントプロセスはアンマウント可能なもの全てをアンマウントします。
  でもウィンドウマネージャ上にアンマウントボタンを作りはじめるのはちょっ
  と待ってください。多少の問題があります。

  オートマウントのプロセスは root によって実行されますので、root からの
  signal しか受け取りません。ですが、あなたがオートマウンティングをして
  いる理由の半分は、root にならずにアンマウントされているファイルシステ
  ムをマウントできるからだと思われます。強引にアンマウントさせるために
  suid-root した C プログラムを作るのも簡単なことでしょうけれど、sudo を
  うまく使えば適切な kill シグナルをユーザーが送ってアンマウントさせるこ
  ともできるようになります。この方法のただ一つの問題は、sudo はサブコマ
  ンドを実行する為に ` を使用することを許可しないことです。ですから ` で
  現在の PID を見つけることはできません。あなたはたぶん killall というこ
  の動作を実行してくれるプログラムを持っているはずです (「これを使うと良
  い」と教えてくれた提案に感謝します)。

  ALL     ALL=NOPASSWD:/usr/bin/killall -USR1 automount

  （訳注：この行を /etc/sudoers に書いておくと、誰でも automount にパス
  ワード無しで SIGUSR1 を送れる、ということです。詳しくは man sudo を参
  照してください。ちなみに killall コマンドは Plamo Linux 1.3(Slackware)
  ではコマンドの置き場所が /bin/killall ですが、RedHatとDebian 2.0
  (hamm) では /usr/bin/killall のようです）

  さもなければユーザー全員に、全てのプロセスに対して -SIGUSR1 を送る許可
  を与える必要があるでしょう。それはプログラムに色々な影響を与えます。い
  くつかのウインドウマネージャが再起動や、xemacs が kill されてしまうこ
  となどです。killall にバッファオーバーランが存在しない事を祈ります。

  （訳注： sudo では foo `bar` (bar コマンドの出力を foo コマンドの引数
  にする)ができないので automount の PID を狙い撃ちできません。ですから
  sudo+kill では "すべてのプロセスに SIGUSR1 を送れる権限" を各ユーザに
  与えなければなりませんが、そうすると間違えて SIGUSR1 を WM に送ってし
  まった場合に recycle してしまうし、xemacs だと死んでしまうということで
  しょう。また killall にバッファオーバーランがあると sudo 経由で root
  権限を与えられた killall コマンドがセキュリティホールになる危険性が生
  じてくるので、そういうことが無いように祈ると書かれているのでしょう）

  5.  Questions

  5.1.  /auto/floppy のようなマウントポイントが見つかりません

  オートマウントが正常にセットアップされれば、あなたが必要としているマウ
  ントポイントがどのような物であっても、使おうとすれば見つける事ができま
  す。使用していないときはみえませんけれども。もしもグラフィカルツールで
  ディレクトリを見ている(browsing)場合、手動でディレクトリ名を入力する必
  要があるかもしれません。使用可能なのに見えないマウントポイントを選択で
  きないというのは autofs の大きな欠点かもしれません。もしそれが本当に問
  題なら設定ファイルを編集してください（設定ファイルは .c で終わりま
  す）。

  この問題に対処するために何人かの方が行っている方法は、オートマウントが
  マウントする場所に対してシンボリックリンクを作成することです。これによ
  りディレクトリが存在しないというエラーは無くすことができるでしょう（マ
  ウントが行われたらマウントされた場所を指すようになります）。無頓着な
  ファイラーの場合リンクを参照すると、オートマウントを引き起こすことにな
  ります。

  5.2.  マウントの状態を見るには？

  df コマンドを使用してください。オプション無しの mount コマンドでも構い
  ません。mount 場合はさらにマウントされているオプションも表示します。

  5.3.  win95(vfat）フロッピーを入れましたが、単なる FAT のフロッピーと
  して自動認識されました

  これはオートマウントの問題ではありません。この Howto を書いている時点
  でのファイルシステムの自動認識は、msdos のファイルシステムを正常にマウ
  ントできるまでは vfat でのマウントをしようとしません。VFAT とは（MSDOS
  で使用している）FAT に Win95 と WinNT で使用するロングファイル名を強引
  につめこんだ物の事です。

  （訳注： VFAT とは、従来の FAT16 の FAT の使用されていない部分にロング
  ファイル名（最長 255 文字まで）を格納し、そのファイル名の頭から 6 文字
  ＋~＋通番を、8 + 拡張子 3 文字の従来使用していたファイル名として使用す
  ることによって、DOS との上位互換性を保持しながら無理矢理にファイル長
  8.3 文字の制約を排したものです。これによって、VFAT 対応の OS からはロ
  ングファイル名部分（及び従来のファイル名）を、VFAT 未対応の OS （DOS
  など）からは 8.3 文字のファイル名を見せるようにしています。例えば
  "1234567890" というファイル名は、"123456~1" などというファイル名になり
  ます）

  mount の著者の一人によると、mount はファイルシステムのタイプを指定する
  必要があるシステムコールの単なるラッパーなので、ファイルシステムのタイ
  プの指定をユーザーが行う必要があります。現行の自分自身でファイルシステ
  ムを探す(heuristic)仕様の代わりに mount 自身にファイルシステムのリスト
  を取得させることを現在考慮中です。単純に、msdos fs をカーネルに組み込
  まない人もいます。これにより vfat の前に msdos かどうかをテストされる
  ことを避けられます。多くの人の環境でこれはうまく動くでしょうが、本当に
  msdos fs が必要な場合にモジュールの組み込みが簡単にできないような時に
  は非常にフラストレーションが溜まります。

  mount プログラムの著者（達）を探しだしてコメントを送ると歓迎されるで
  しょう。結論としては msdos をコンパイル時に組み込まない場合を除いて、
  現在のところは他のファイルシステムの自動認識をあきらめない限り、vfat
  をマウントすることはできないということです。この問題が早く解決すればよ
  いのですが。。。それまでの間はファイルシステムのタイプごとに別々のマウ
  ントポイントを作って指定するようにしましょう。

  5.4.  私の /grumblesmurf というファイルシステムがマウントされましたが
  kill -SIGUSR1 を送ってもアンマウントされません

  それは現在使用されているからです。root であったとしても、おそらく手動
  でアンマウントすることはできないでしょう。マウントしたのがあなた（つま
  り、他のユーザーに使われているはずが無い）であるなら、そのディレクトリ
  にあるシェルを探してみてください。もしも見あたらなければ、他の何か（す
  でに終了されたファイラーのような）が、いわゆる痕跡を残していないかどう
  かを調べてみてください。うまく探せなかったら、fuser プログラムを使って
  みてください。
  5.5.  / ディレクトリをオートマウントするようにしたらどうなります？

  え〜と。。。私だけの実験だけじゃぁ何が起きるか予想できませんねぇ。注意
  してくださいよ。たとえば /grumblesmurf なんてのが必要ならシンボリック
  リンクを作成することを勧めます。まだ安全ですから。

  5.6.  同じディレクトリに２つのマップファイルを置いておけますか？

  私の知る限り無理です。個々のエントリーを記述するオプションを利用して１
  つのマップファイルを使うようにしてください。

  5.7.  私は SuSE 6.0 を使っています。 --timeout  の代わりに ---timeout
  を使う必要があるんですが

  え〜と、はい。メモを取りましたよ。"timeout が動作していない" 問題のも
  う一つの解決方法は、-t time オプションを autofs スクリプトに追加するこ
  とです。

  5.8.  ファイルシステム（つまり FAT ですが）にパーミッションと所有権を
  セットする方法は

  mount の man page を参照してください。uid=値 や umask=値 オプションが
  見つかるはずです。FAT ファイルシステム上で動作しないだろうと思われるオ
  プションは mode=値 です。すいません、詳しくはご自分でチェックしてくだ
  さい。

  5.9.  autofs に感謝するには？

  私にではありません。私は autofs に関しては何もしていません。私はただ、
  みんなに autofs の素晴らしい仕事と、なんて簡単に使えるかということに注
  目してもらいたかっただけです。強欲な AMD （例えば unice や有史以前のフ
  リーなツールを非常に高値で販売しています）に比べ、autofs はドキュメン
  トも豊富です。実装者には心から感謝しています。 すべての著作権は
  Transmeta 社が保持しておりますので、すいませんがクレジットリストを書き
  出すことはできませんが、Peter Anvin がかなり多くの部分を持ってると確信
  しています。また Peter は、1999 年 3 月 3 日の linuxworldexpo で
  autofs に関するセッションを行いました。

  （訳注： unice とは、UNIX の複数形です。ただし、同じ種類の UNIX が複数
  あったとしても unice ではありません。AIX, Linux, BSD など複数の種類の
  UNIX を指して unice と言います）

  5.10.  オートマウンティングについてもっと知りたいのですが？

  autofs のチュートリアルが
  <http://www.linuxhq.com/lg/issue24/nielsen.html> にあります。
  <http://www.cs.columbia.edu/~ezk/am-utils> にある am-utils も参考にな
  るでしょう。

  （この URL を教えてくれてありがとう）

