slax-ja 5.1.8-2リリース

2チャンネルで指摘してもらったliblinuxliveのバグ修正と本家で報告があったSamba kioslaveの修正版モジュールを収納したものを、slax-ja 5.1.8-2としてリリース。これが5.xの最終版で、osc2006 tokyo/fallで配布するものになるかな。
liblinuxliveは、CD-R/USB内にある/tools配下と、/boot/initrd.gzと/base/02_core.moにアーカイブされているものがあって、なぜか内容がちょっと違うが、修正箇所は以下のとおり

# add special options for NTFS
if [ "$FS" = "ntfs" ]; then
   OPT=",ro"
   #if [ "$IOCHARSET" != "" ]; then OPT="$OPT,nls=$IOCHARSET"; fi
   if [ "$IOCHARSET" != "" ]; then
      OPT="$OPT,nls=$IOCHARSET"
   else
      OPT="$OPT;nls=utf8"
   fi
fi

# add special options for VFAT
#if [ "$FS" = "vfat" -a "$IOCHARSET" != ""  ]; then OPT=",iocharset=$IOCHARSET"; fi
if [ "$FS" = "vfat" -a "$IOCHARSET" != ""  ]; then
   OPT=",iocharset=$IOCHARSET"
else
   if [ "$FS" = "vfat" ]; then 
      case $LANG in 
         ja_JP* ) CODEPAGE="codepage=932" ;; 
         ko_KR* ) CODEPAGE="codepage=949" ;; 
         zh_CN* ) CODEPAGE="codepage=936" ;; 
         zh_TW* ) CODEPAGE="codepage=950" ;; 
      esac 
      OPT=",iocharset=utf8,$CODEPAGE" 
   fi 
fi

これでWindowsの日本語ファイル名が文字化けせずに読めるはずなんだけど、どうやって使えばいいんだろうか。
/tools/liblinuxliveは直接修正できるので楽だが、/base/02_core.moにアーカイブされているものは、slaxに用意されているコマンドmo2dirで伸張してから修正しなければならない。

# mkdir 02_core
# mo2dir 02_core.mo 02_core/
# cd 02_core
# cd usr/lib
# LC_ALL=C vim liblinuxlive
# cd ../..
# makepkg ../02_core.tgz
# cd ..
# tgz2mo 02_core.tgz 02_core.mo

/boot/initrd.gzにアーカイブされているものは、もうちょっと難しい。例えば、ハードディスクの~/slax-ja5.1.8にコピーして次のように修正する。

# cd ~/slax-ja5.1.8/boot/
# gzip -cd initrd.gz > initrd
# losetup /dev/loop0 initrd
# mkdir /mnt/loop0
# mount /dev/loop0 /mnt/loop0
# cd /mnt/loop0
# LC_ALL=C vim liblinuxlive
# cd ~/slax-ja5.1.8
# umount /mnt/loop0
# gzip -c initrd > initrd.gz
# losetup -d /dev/loop0

今回はとっても勉強になった。slackware/slaxのinitrdは、FedoraCoreアーカイブするようなcpioを使わない旧型の方法だったというのも、ある意味新鮮。