ページ 11

日本語のファイル名・ディレクトリ名が表示されない

Posted: 08/10/26(日) 04:40
by 暇人
Q  windows領域が起動ドライブになっている場合、日本語のファイル名・ディレクトリ名が表示されない。

A まだ解決されていません。

Posted: 08/12/14(日) 15:59
by ビズアイユ
FATだったらinitスクリプトをいじれば解決するんですけど、
NTFSだと今のところ無理っぽいですね。
mountの前に日本語ロケールを読み込んでいる必要があるそうで…。
さすがにこのレベルの課題はお手上げです(汗

Posted: 09/01/23(金) 19:29
by YoN
ズアイユさんのinitファイルを参考に4.1.2-retro-JPのinitファイルを以下のように変更してみました。
起動時にマウントされたWindowsパーティションにある日本語名のファイルの文字化けが直りました(ただしWindowsパーティションがvfatフォーマットの場合だけのようですね)。
古いPCをvfatフォーマットでお使いの方(私)には朗報と思います。
変更前
画像

変更後
画像

initファイル
1:
95行目

コード: 全て選択

ntfs-3g $MNTPRMS -o umask=0,no_def_opts,noatime,rw 2>/dev/null #default is rw

コード: 全て選択

ntfs-3g $MNTPRMS -o locale=ja_JP.UTF-8,uumask=0,no_def_opts,noatime,rw 2>/dev/null #default is rw
とする。

2:
106行目付近

コード: 全て選択

ntfs-3g $MNTPRMS -o umask=0,no_def_opts,noatime,rw,force 2>/dev/null

コード: 全て選択

ntfs-3g $MNTPRMS -o locale=ja_JP.UTF-8,umask=0,no_def_opts,noatime,rw,force 2>/dev/null
とする。

3:659行目付近

コード: 全て選択

mntfunc -t $PUPSAVEFS -o noatime /dev/$PUPSAVEDEV /mnt/dev_save

コード: 全て選択

if [ "$PUPSAVEFS" = "vfat" ];then
  mntfunc -t $PUPSAVEFS -o shortname=mixed,utf8,noatime /dev/$PUPSAVEDEV /mnt/dev_save
 else
  mntfunc -t $PUPSAVEFS -o noatime /dev/$PUPSAVEDEV /mnt/dev_save
 fi
としました。

修正した4.1.2-retro-JPのinitファイル
(元のファイルをバックアップしてからinitとリネームして下さい)
http://yon8844.googlepages.com/412retro ... fixed.init

そのinitファイルで作った4.1.2-retro-JP用initrd.gzファイル
(元のファイルをバックアップしてからinit.gzとリネームして下さい)
http://yon8844.googlepages.com/412retro ... .initrd.gz

詳しい使い方(導入方法)は説明を省略します(スミマセン)。

initrd.gzファイルの展開の方法(ビズアイユさんより):

コード: 全て選択

# zcat initrd.gz | cpio -i -d
再圧縮の方法(ビズアイユさんより):

コード: 全て選択

# find . | cpio -o -H newc | gzip -9 > ../initrd.gz
コマンドによる、ディレクトリからISOファイルを作成する方法(暇人さんより):

コード: 全て選択

# mkisofs -D -R -o [作成するISOファイル名] -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table [作成ディレクトリ]

以上です。

Posted: 09/01/24(土) 06:06
by 暇人
3:659行目付近

コード: 全て選択

mntfunc -t $PUPSAVEFS -o noatime /dev/$PUPSAVEDEV /mnt/dev_save

コード: 全て選択

if [ "$PUPSAVEFS" = "ntfs" ];then
  mntfunc -t ntfs-fuse  /dev/$PUPSAVEDEV /mnt/dev_save
elseif [ "$PUPSAVEFS" = "vfat" ];then
  mntfunc -t vfat -o shortname=mixed,utf8,noatime /dev/$PUPSAVEDEV /mnt/dev_save
 else
  mntfunc -t $PUPSAVEFS -o noatime /dev/$PUPSAVEDEV /mnt/dev_save
 fi
構文的に合ってる?
やっぱ間違ってる模様、立ち上がらない。

Posted: 09/01/24(土) 07:47
by 暇人
とりあえず

コード: 全て選択

if [ "$PUPSAVEFS" = "ntfs" ];then
  mntfunc -t ntfs-fuse  /dev/$PUPSAVEDEV /mnt/dev_save
#elseif [ "$PUPSAVEFS" = "vfat" ];then
#  mntfunc -t vfat -o shortname=mixed,utf8,noatime /dev/$PUPSAVEDEV #/mnt/dev_save
 else
  mntfunc -t $PUPSAVEFS -o noatime /dev/$PUPSAVEDEV /mnt/dev_save
 fi
と思ったら、grubがntfsに対応してないぜorz
前にwindows2000領域から立ち上げたのは、vfatだったのか....

grub2はntfsに対応している
grub4dosはntfsに対応している(↑)はこれを使用。

Posted: 09/01/26(月) 06:54
by 暇人
ntfs-3g の最新版はデフォでutf-8に対応した。

これを組み込んだinitrd.gzとgrub4dosでntfs領域からブート。
OK 日本語ファイル名が表示された!

おっしゃ

Posted: 09/01/26(月) 10:05
by 暇人
vfatの対策と合わせればこの件は解決ですね。
実に幸せ。

ntfsに対応したgrubもisoにいれなきゃだめか。GRUB2とか
画像
http://nami4.dyndns.org/p_blog/resources/initrd.gz

検証が不十分なのでご注意下さい。
412のinitrd.gzベース、vfatにも対応済み(未検証)