ttt

getttyent

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

2006-04-13 23:48:26 | デジタル・インターネット

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

みたいな感じになります。

☆ ☆ ☆ ☆ ☆

寅さん、やっぱ、おもしろいなぁ。寅さんって、話が上手なんだよなぁ。あんなふうにできたらいいなぁ。明日もみるぞ、と思ったら、金曜日はやらなくて、土曜日にやるんだと。


コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。