2006年4月14日金曜日

FreeBSDで、日本語のファイル名を使ったCD/DVDのマウント

某所から送られてきた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

とか、いろいろ試してみてください。以前書いた

続・VMware+Windows+gpartでパーティションテーブルの修復

にも、そのへんのことに触れています。





☆ ☆ ☆ ☆ ☆



さて、「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 件のコメント:

コメントを投稿