CentOS6の練習-#2(uhelperの話)。

 ちょっと内蔵フロッピィを使おうとしただけなのに,こーんなにハマったというお話(爆)。

 あるデータをフロッピィに移そうとして気づいたのだが,内蔵のフロッピィドライブが見えていない。どうやら,floppy moduleがロードされていないようだ。
   $ modprobe floppy
でmoduleをロードしてやろうとすると,
   FATAL: Error inserting floppy (/lib/modules/2.6.32-220.23.1.el6.i686
   /kernel/drivers/block/floppy.ko): Operation not permitted
と怒られるが,rootならロード可能。この間 sudoers file をいじって,sudoを使えるようにしたところなので,
   $ sudo modprobe floppy
で,moduleをロードする。

 デスクトップのコンピュータ内に「フロッピー・ドライブ: フロッピーディスク」というなんか鬱陶しい名前のアイコンが現れた。

 この段階では未マウントなので,mountではフロッピィに関して何も見つからないが,
   $ sudo parted -l
で,すべてのパーティションを表示させてみると,
   エラー: /dev/fd0: ディスクラベルが認識できません。
というように表示される。フロッピィディスクを挿入し,mount pointを作ろうとすると,どういうわけかファイルが存在すると蹴られる。ではというわけで,存在すると蹴られたmouny point名を使って,sudo mount /media/disk でマウントしてみたが,
   mount: /etc/fstab や /etc/mtab 内に /media/disk を見つけられません
というエラーが戻ってきた。

 しかし,/etc/fstab や /etc/mtabにはなくても,さっきのメッセージから考えて,「何かフロッピィ関係で変化があってるはずだ」と思いながらゴソゴソやっていて,「フロッピー・ドライブ: フロッピーディスク」アイコンのコンテキストメニューに「マウント」があるのに気づいた。それっと,クリックしてみたらダメだったが,「メディアを検出」というのを先にやったらマウントできた。mountで確認してみると,
   /dev/fd0 on /media/disk_ type vfat (rw,nosuid,nodev,uhelper=udisks)
となっている。アンマウントもデスクトップ上で,コンテキストメニューから出来た。

 これを参考に,下記で端末からマウントしてみたら出来た。
   sudo mount -o rw,nosuid,nodev,uhelper=udisks /dev/fd0 /media/disk

 mountで確認してみると,下のようになっていて「同じだぁ」と思ったんだが,ちょっと違った。まず,デスクトップ上でアンマウントしようと思うと,さっきと違ってrootのパスワードを要求される。
   /dev/fd0 on /media/disk type vfat (rw,nosuid,nodev,uhelper=udisks)

 よく見ると,上は disk_ になっている。もう一回これでやってみた。
   sudo mount -o defaults,nosuid,nodev,uhelper=udisks /dev/fd0 /media/disk_
 なんとというか当然というか,
   mount: マウントポイント /media/disk_ が存在しません
と蹴られた。

 端末からのマウントに成功した,さっきの
   sudo mount -o rw,nosuid,nodev,uhelper=udisks /dev/fd0 /media/disk
の方なんだが,
   sudo mount -o rw,nosuid,nodev /dev/fd0 /media/disk
というように,uhelper=udisksがない形でやっても,動きは同じ見たいなんだよな。で,ググって見ました。

 uhelper=udisksというのはなかったんだけど,uhelper=halという題名で,uhelperのことを書いているページが見つかった。uhelper は unprivileged umount request helper ということで,特権なしでアンマウントするときのヘルパーとらしい。というわけで,これがちゃんと動いているときはrootのパスワードなしでアンマウントできたわけだ。

 しかし,manに記載がないのはどうしてだろうかと,uhelperでググってみたら,UMOUNT(8)があった。man mount には書いていないが,man umount に書いてあるじゃないのと,UMOUNTを見たら記載がない。英日のLinux Programmer’s Manual の バージョンも日付(26-July-1997)も同じようなのに何でだろう。単なる訳落ちですか。

 ちなみに,CentOS6の英語manと日本語manを調べてみたが,これの場合も日本語manにおいて,下記の訳がそっくりなかった。日本語訳はすべて訳が終わっているわけでは無いので,ページごとそっくりないほうが納得いくんだが……部分だけって何でだろう。
——————————————————————————————————————
   NOTES
      The syntax of external umount helpers is:

      /sbin/umount.<suffix> [-nlfvr] dir | device

      where the <suffix> is filesystem type or a value from “uhelper=” mtab
      option.

      The uhelper (unprivileged umount request helper) is possible used when
      non-root user wants to umount a mountpoint which is not defined in the
      /etc/fstab file (e.g devices mounted by HAL).
——————————————————————————————————————

 ところで,上記の場合,どっちのマウントでもroot権限になってしまい使いにくいので,実際には,下記でマウントする形にした。メディアを検出をやっていない場合は,-t オプションも必要なようだ(多分)。
   sudo mount -t vfat -o rw,uid=xxx,gid=xxx /dev/fd0 /media/disk