NTFSをマウントして日本語も表示する
# mount_ntfs -C eucJP /dev/ad0s1 /mnt
丸ごと引用ですみません。引用の範囲を超えているのですが、メモに残したくて。
http://iris.homeunix.net/yayoi/freebsd/japanese/jamount.asp
Windows領域の日本語ファイル名をFreeBSDで扱う
FreeBSD 5.2-RELEASEにて、CD9660、MSDOSFS、NTFS、UDFファイルシステムがマルチバイト文字変換に対応しました。
これによって文字コードの異なる日本語ファイルシステムをFreeBSD上でEUC-JPとして扱うことが可能になります。
平たく言ってしまえばWindows領域に日本語のファイル名が存在した場合に、以前だと文字化けして扱えなかったものが日本語で扱えるようになるということです。
同様のことが4.xの頃にja-msdosfsによって実現していましたが、ja-msfsdosはFAT、FAT32のみでしたが今回はNTFSやCDにも対応しています。
また日本語だけでなく、ロシア語や韓国語などiconvに対応した言語ならどれでも相互変換が可能となっています。
ちなみにCD9660はISO9660規格のCD(通常のCDはこれです)、MSDOSFSはFATやFAT32、UDFはパケットライトCDのファイルシステムです。
NTFSはそのままなので説明する必要は無いでしょう。
ファイルシステムのマルチバイト変換を実現するには、kernelのコンフィグファイルに、
options LIBICONV
と、対応させたいファイルシステムのオプションが必要です。
それぞれのファイルシステムごとにマルチバイト変換をサポートするためのオプションが以下のように存在します。
options CD9660_ICONV
options MSDOSFS_ICONV
options NTFS_ICONV
options UDF_ICONV
ただし、これはマルチバイト変換をサポートするためのみのオプションですので、ファイルシステム自体に対応するオプションも必要です。
例えばCD9660_ICONVを使いたい場合は、
options LIBICONV
options CD9660
options CD9660_ICONV
の3つが必要ということです。
全てのファイルシステムのマルチバイト変換を有効にしたい場合は、
options LIBICONV
options CD9660
options CD9660_ICONV
options MSDOSFS
options MSDOSFS_ICONV
options NTFS
options NTFS_ICONV
options UDF
options UDF_ICONV
がコンフィグファイルにある必要があります。
必要なものをコンフィグファイルに追加できたら、kernelの再構築を行ってください。
なお、kernelの再構築をする代わりにkernelモジュールを起動時にロードしても使えます。
例えば以下のように、
# vi /boot/loader.conf
libiconv_load=”YES”
msdosfs_iconv_load=”YES”
を記述すれば、MSDOSFSのマルチバイト変換が利用可能になります。
FAT領域をマルチバイト変換してマウントする
マルチバイト変換をサポートしたkernelでFreeBSDを起動できたら、早速マウントしてみましょう。
FAT(MSDOS)領域をマルチバイト変換してマウントするには、mount_msdosfsコマンドに-Lと-Dオプションを付けて実行します。
-Lオプションが変換先の文字コード(日本語であればja_JP.eucJP)、-Dオプションが変換元の文字コード(日本語であればCP932(ShiftJIS))です。
# mount_msdosfs -L ja_JP.eucJP -D CP932 /dev/ad0s2 /mnt
のように実行します。
正常にマウントできていれば、FAT領域(ShiftJIS)の日本語名ファイルがFreeBSD上(EUC-JP)で扱えるようになります。
これを/etc/fstabに記述し起動時にマウントさせるには、
/dev/ad0s2 /mnt msdosfs -L=ja_JP.eucJP,-D=CP932,rw 0 0
NTFS領域をマルチバイト変換してマウントする
NTFSはMSDOS領域と違い、文字コードはどの言語であってもUnicode(UTF-8)です。
そのためNTFS領域をマルチバイト変換してマウントするには、変換先の文字コード(日本語であればeucJP)のみを指定してマウントすれば良いです。
NTFS領域をマルチバイト変換してマウントするには、mount_ntfsコマンドに-Cオプションを付けて実行します。
-Cオプションが変換先の文字コード(日本語であればeucJP)です。
# mount_ntfs -C eucJP /dev/ad0s1 /mnt
のように実行します。
正常にマウントできていれば、NTFS領域の日本語名ファイルがFreeBSD上(EUC-JP)で扱えるようになります。
これを/etc/fstabに記述し起動時にマウントさせるには、
/dev/ad0s1 /mnt ntfs -C=eucJP,rw 0 0
のようにします。
なお-Cを付けてNTFS領域をマウントすると自動的に読み取り専用でマウントされます。
ISO9660領域をマルチバイト変換してマウントする
同様にCD(ISO9660)の領域をマルチバイト変換してマウントするには、mount_cd9660コマンドに-Cオプションを付けて実行します。
-Cオプションが変換先の文字コード(日本語であればeucJP)です。
# mount_cd9660 -C eucJP /dev/acd0 /cdrom
のように実行します。
正常にマウントできていれば、CDの日本語名ファイルがFreeBSD上(EUC-JP)で扱えるようになります。
これを/etc/fstabに記述するには、
/dev/acd0 /cdrom cd9660 -C=eucJP,ro,noauto 0 0
のようにします。
これで
# mount /cdrom
を実行すれば日本語ファイル名を表示可能な状態でマウントされます。
UDFなCD領域をマルチバイト変換してマウントする
同様にUDFなCD領域をマルチバイト変換してマウントするには、mount_udfコマンドに-Cオプションを付けて実行します。
-Cオプションが変換先の文字コード(日本語であればeucJP)です。
# mount_udf -C eucJP /dev/acd0 /udf_cdrom
のように実行します。
正常にマウントできていれば、UDFなCDの日本語名ファイルがFreeBSD上(EUC-JP)で扱えるようになります。
これを/etc/fstabに記述するには、
/dev/acd0 /udf_cdrom udf -C=eucJP,ro,noauto 0 0
のようにします。
これで
# mount /udf_cdrom
を実行すれば日本語ファイル名を表示可能な状態でマウントされます。