FreeBSD QandA 1861
Q. MSDOS 用パーティション (FAT) にある日本語ファイル名を扱うことは出来ますか。
A. A1.
FreeBSD 5.2-RELEASE から、 マウントする際に -L と -D オプションを指定
することで、マルチバイト文字を使ったファイル名が扱えます。例えば日本語
ファイル名を扱いたい時は、次のようにします。
# mount_msdosfs -L ja_JP.eucJP -D CP932 /dev/ad1s1 /mnt
ただし、
libiconv.ko
msdosfs_iconv.ko
モジュールを起動時に組み込むか、もしくは、
options LIBICONV
options MSDOSFS_ICONV
を追加してカーネルを再構築する必要があります。またどちらの場合でも、
libiconv (ports/devel/libiconv) のインストールも必要です。
詳細は [FreeBSD-tech-jp 3369] 、リリースノート、及び mount_msdosfs(8)
を参照してください。
A2.
以下の ports/packages にあるアプリケーションで、MSDOS 用パーティション
(FAT) の日本語ファイル名 (Unicode Long File Name) をサポートして
います。
1. ja-msdosfs (ports/japanese/msdosfs)
ports/japanese/msdosfs または packages の ja-msdosfs を導入し、
mount_jamsdos を使って FAT パーティションをマウントしてください。
日本語は EUC で表現されていますので、アプリケーションが EUC を扱
うことができれば、cp や tar などのコマンドを普通に使うことができ
ます。(4.2-RELEASE 以降)
<URL:http://www.linkclub.or.jp/~clover/msdosfs.html>
補足: 起動時にマウントするには...
/modules 以下に msdos_ja.ko が存在していていれば、mount_jamsdos
を実行した時点でモジュールがロードされます。起動時に間違いなくマウント
するためには mount_jamsdos を /sbin に置くべきですが、ports によっ
て /sbin, /modules をいじるのはまずいので、自動ではなく手動
(/usr/local/etc/rc.d/ja-msdosfs.sh) でロードするように作られています。
そこで、ブート時にマウントするのであれば、
# cp -p /usr/local/sbin/mount_jamsdos /sbin
# cp -p /usr/local/lib/ja-msdosfs/msdos_ja.ko /modules
# chmod a-x /usr/local/etc/rc.d/ja-msdosfs.sh
とした後に、/etc/fstab でマウントエントリを書く時に FStype を
jamsdos にしてください。
/dev/da0 /mnt msdos ro,nodev,noexec 0 0
^^^^^ ここを修正
再起動を行うと起動時にマウントされているはずです。
2. ja-mtools (ports/japanese/mtools) [管理番号 640]
GNU の mtools に Unicode LFN サポートを加えたものです。mtools に
含まれるコマンド (mdir や mcopy など) だけで取り扱うことができます。
3. fd (ports/shells/fd)
いわゆる FDclone です。DOS 時代の FD に似た (といっても知らない
人も多いかもしれませんが) CUI ベースのファイル操作ツールです。
<URL:http://hp.vector.co.jp/authors/VA012337/soft/fd/freebsd.html#msdos>
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。