某所から送られてきたCD-Rを、Webでアクセスできるようにしようと思い、FreeBSDでマウントしようとしたら、ありゃりゃ、ファイル名がみんな「?????」というように、ハテナマークだらけになっちゃいました。
# ls /cdrom
????????? ????????? ??????????? ?????????????
はぁ?これ、なんですか・・・
日本語のファイル名が使われていると、こうなっちゃうようです。
で、mount_cd9660コマンドのマニュアルを読んで見ますと、ふむ、「-C charset」オプションで、ファイル名で用いる文字コードを変換できるようです。
でも、charsetって何を指定すりゃいいんだよ?!マニュアルには、何にも書かれていないので、わけわかりません。
ちょっと試行錯誤しているうちに、どうやらiconvを使うらしきことがわかりました。というわけで、「iconv -l」で、指定可能な文字コードの一覧が表示されますので、その中にあった「EUC-JP」を指定してみました。
# mount_cd9660 -C EUC-JP /dev/acd0 /cdrom
# ls /cdrom
(ちゃんと日本語で表示されました)
ひょっとして、まだハテナマークで表示されましたか?あ、それは、別のところに問題があるのかもしれません。たとえば、lsコマンドが、日本語を正しく扱えないとか。
# /bin/ls -w /cdrom
とか、
# /bin/ls /cdrom | nkf
とか、いろいろ試してみてください。以前書いた
にも、そのへんのことに触れています。
☆ ☆ ☆ ☆ ☆
さて、「mount_cd9660 -C 文字コード ~」で、うまくマウントできることがわかったのですが・・・これを、/etc/fstabに書くにはどうすればいいのでしょうか?
mount_cd9660 /dev/acd0 /cdrom
というコマンドは、
mount -t cd9660 /dev/acd0 /cdrom
と同じ意味なので、/etc/fstabには、たとえば
# Device Mountpoint FStype Options Dump Pass#
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
みたいに書くことになるのです。まあ、これはよくあるふつうの話。
さて、「-C EUC-JP」をmountコマンドから渡すにはどうすればいいのでしょうか?
mount -t cd9660 -o -C EUC-JP /dev/acd0 /cdrom
かな~?と思ってやってみると、だめでした。
mount -t cd9660 -o "-C EUC-JP" /dev/acd0 /cdrom
ああ、おしいっ!だめでした。
mount -t cd9660 -o -C -o EUC-JP /dev/acd0 /cdrom
ああ、正解から、ちょっと離れてきました。
う~む・・・、「mount -d -v ~」とかやったり、ソースコードをのぞいたりしながら、5分ほど、試行錯誤しているうちに・・・あ!マニュアルに、書いてありました。ちょっとわかりにくいですけど。
こうなります。
mount -o "-C=EUC-JP" -t cd9660 /dev/acd0 /cdrom
うーむ、「-C EUC-JP」が「-C=EUC-JP」になるとは、予想もできませんでした。
「mount_*** -OPTION ~」というように、値を指定しないオプションの場合は、「mount -t *** -o -OPTION」と指定すればよいのですが(-OPTIONが、mountオプションで解釈されない種類なら、mount_***コマンドへそのまま渡される)、「mount_*** -OPTION VALUE」のように、値も指定するオプションの場合は、「-o -OPTION=VALUE」という書式で指定するそうです。
というわけで、/etc/fstabに書くときは、
# Device Mountpoint FStype Options Dump Pass#
/dev/acd0 /cdrom cd9660 ro,-C=EUC-JP,noauto 0 0
みたいな感じになります。
☆ ☆ ☆ ☆ ☆
寅さん、やっぱ、おもしろいなぁ。寅さんって、話が上手なんだよなぁ。あんなふうにできたらいいなぁ。明日もみるぞ、と思ったら、金曜日はやらなくて、土曜日にやるんだと。
0 件のコメント:
コメントを投稿