FreeBSDでは、先日の[MSDOSFSの件と同じく](http://d.hatena.ne.jp/flageo/20090112/p1)、NTFS上の日本語ファイル名の扱いにも問題がある。
こちらもEUC-JPでマウントすれば一応は問題が解消されるが、俺はFreeBSDの環境をUTF-8にしているので、もともとUTF-8のNTFSを、EUC-JPにして読み込むのは実に馬鹿馬鹿しい。
そこで、MSDOSFSの件で発見した、[http://people.freebsd.org/~imura/kiconv/](http://people.freebsd.org/~imura/kiconv/)で公開されているパッチを使用する。
ただ、こういうのも何だが、文字コードを変換してマウントする場合、現時点では読み込みのみがサポートされ、書き込みは不可であることを考える*1と、一時的な用途であればLinuxを使った方がはるかに早い。例えば、死んでしまったWindowsのディスクからファイルを復旧したいといったケースには、LinuxのLiveCDを使うほうが手軽。
また、カーネルとユーザランドへのパッチなので、ソースをアップデートする度にパッチを当てなおさなければならないのは、かなりのデメリット。継続的にNTFSをマウント(加えて読み取りのみ)する必要がある場合に限ったほうがいいと思う。
さておき。まず、上記のサイトから、1.,2.のパッチと、3.のNTFS向けパッチをダウンロードする。
/usr/src直下でpatchコマンドにこれらのパッチを食わせればよい。本番前に-Cオプションを付けて実行し、様子を見るのが吉。
◎実行例
# pwd
/usr/src
# patch -C < ~/ntfs.patch/01.k.patch
(略)
# patch < ~/ntfs.patch/01.k.patch
(略)
次に、kernelの再構築と、libkiconvのmake install。
上記のパッチは、kernelに対するものと、libkiconvに対するものの二つであるため。
kernelは、特別なことはなにもせず、再インストールすればいいだけ。(/usr/src配下でmake buildkernel, make installkernel)
libkiconvは/usr/src/lib/libkiconvでmake, make installする。
◎実行例
# pwd
/usr/src/lib/libkiconv
# make clean
rm -f kiconv.3.gz kiconv.3.cat.gz
(略)
# make
cc -O2 -fno-strict-aliasing -pipe -I/usr/src/lib/libkiconv/../../sys -c /usr/src/lib/libkiconv/sysctl.c
(略)
# make install
install -C -o root -g wheel -m 444 libkiconv.a /usr/lib
(略)
あとは再起動して新しいkernelを読み込ませ、mout_ntfsに-CUTF-8オプションを与えるだけ。
◎実行例
# mount_ntfs -o ro -CUTF-8 /dev/da0s1 /mnt
FreeBSD初心者スレにもちょうど同じ話題があったのでコピーしておく。シンクロニシティ・・。
初心者もOK! FreeBSD質問スレッド その99
445 : 名無しさん@お腹いっぱい。 : sage : 2009/01/13(火) 08:13:53
.UTF-8 で ntfs のこと:
[http://people.freebsd.org/~imura/kiconv/](http://people.freebsd.org/~imura/kiconv/)
の、1. 2. と3. の ntfs ぶん当てて kernel と libkiconv 作り直して、
% grep ntfs /etc/fstab
/dev/ad0s3 /diske ntfs ro,-CUTF-8 0 0
で、日本語 file name 読めた。
% uname -rp
7.1-RELEASE-p1 i386
へけけ