<< 2007/01/ 1 1. Spyc 0.2.5
2. kipmsg だそうで
2 3 1. メールってやっぱめんどくさい
4 1. Diigolet が使えないと困る
5 1. FDclone と Emacs の dired で cp
6 1. getmail + maildrop は確かに便利そう
7 1. 爆弾低気圧直撃食らいました
8 9 1. iPhone かぁ
10 1. VMware を使って内部サーバの仮想化を試みる決意をする
11 1. 仮想マシンのディスクの構成で悩む
12 1. ほぉおおぉお < テキストファイル@POSIX
2. ネットワーク上のマウントポイントの確認方法
13 1. しっぱい
2. 入門段階を済ませてから?
14 15 1. cron + dRuby ってできるかな?
16 1. crontab と dotfile について考える
2. 安パーツで高可用性 PC サーバ
3. フジのデジカメプリントは拡張子 .JPEG を認識しない
17 1. Ruby のモジュールをつらつらと
18 1. pear ってなんでミラーがないの
2. prototype.js 1.5 and prototypejs.org
19 1. crontab コマンドでの設定内容を自動バックアップ
20 1. 正規表現の //、コメントの //
21 1. クーラーをファンレスにしたが効果なかった
2. Frenzy 1.1 は SLAX のようなカスタマイズが可能に?
3. netselect であれこれ
22 1. NHKスペシャル『Google革命の衝撃』
23 1. cron, crontab, and more
24 1. cron ジョブに複雑な条件を与えやすくする
25 26 27 28 1. gem の検索って不便だな
29 1. rote いいかもしんない。
30 1. Web検定のサイトが分からない
31 1. DOS/Windows 領域の mount がめんどくさい
>>
トップ «前の日記(2007-01-30) 最新 次の日記(2007-02-01)» 編集

2007-01-31 [長年日記]

_ DOS/Windows 領域の mount がめんどくさい

考えるのが面倒で避けてきた日本語ファイル名を含む (V?FAT|NTFS) 領域の mount についてやっと分かってきたので整理。

※ 例によって嘘八百書いている可能性があるのでツッコミ希望*1

まとめ

mount の option の効きどころ

  • mount の option で与える charset/locale は、mount する領域のファイル名のものではなく、「これに変換して扱う」という意味
    • 環境変数の言語設定に暗黙に従うのだと思っていたけど、これがそもそも間違っているらしい
  • ntfs の場合、ファイル名の保持は必ず Unicode(utf-16le?) で行われるので、codepage を指定する必要がない*2
    • 恐らく iocharset/locale の設定によらず、ファイル名そのものは見える
    • つまり設定ミスに気づきにくい
      • → ext3 や ufs の領域にコピーしたらファイル名が読めない!という事態に
    • Windows を使っていてファイル名が SJIS に見えるのは Windows の API を経由したときに変換されているのか?
  • msdosfs/vfat の場合は fat 領域の codepage を指定するオプションがある
    • この codepage が DOS/Windows のバージョン(≒言語)によって異なる
    • 従って codepage が正しくセットされていないと日本語ファイル名が読めないという状況になる
      • → 逆に言うと日本語ファイル名が読めなくなることで mount option が間違っていることに気づきやすい
    • vfat も long filename の部分は Unicode で、short filename の部分で codepage を使う、という構造になっているらしい

オプションの記述方法

例えば日本語EUCの場合

locale ja_JP.eucJP
charset euc-jp

codepage については共通のはず。

FreeBSDの場合

FAT -L ja_JP.eucJP -D CP932 など
NTFS-C eucJP など

ntfs の charset は eucJP などのように書くらしい。euc-jp じゃないのか? locale の方になんとなく合わせてある? つか FreeBSD で charset つったらそういうもんだっけ。

FreeBSD 6.1-R の時点で、標準で利用できる mount ではマルチバイト文字を含むファイル名で書き込みはできない。

Linuxの場合

FAT -o iocgarset=euc-jp,codepage=cp932 など
NTFS-o iocharset=euc-jp など

実際には使うドライバ?によって違う。Linux の場合は ntfs を mount するためのツールがいっぱいあるので、それによっても変わってくると思う。(ますます面倒くさい。)

*1 と書いておいてもめったにツッコまれないのはきっと読んでいる人がいないんだろな。

*2 だから msdosfs/vfat に比べてオプションが減っている