備忘録:liblinuxlive

slax-ja-5.1.8.1-4のときに、codepageとiocharsetを全面的に見直したのを忘れていた。こういうのは、ちゃんとメモとして残しておかなくちゃな。分かっているんだけどなかなかできない。植木均は的を射ている。
このやり方ならば、国毎の設定は必要ない。もっとも開発者は、自国のiocharsetの数字を覚えておかなくてはならないけど、開発者ならば期待できるだろうと。
で、最初にfstab_update()の冒頭で、IOCHARSETを読み込むところがあるので、同じように CODEPAGEを読み込ませる。

fstab_update()
{
   IOCHARSET="`cmdline_value iocharset`"
   CODEPAGE="`cmdline_value codepage`"
   FSTAB="$1/etc/fstab"
   mkdir -p $1/etc $1/mnt
   cat $FSTAB 2>/dev/null | grep -v "$FSTABLLFLAG" >$FSTAB~
   ....

これをfstabに書き込む前に次の処理をしてあげる。

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

      # add special options for VFAT
      #if [ "$FS" = "vfat" -a "$IOCHARSET" != ""  ]; then OPT=",iocharset=$IOCHA
RSET"; fi
      if [ "$FS" = "vfat" ]; then
         if [ "$IOCHARSET" != ""  ]; then
            if [ "$CODEPAGE" != ""  ]; then
               OPT=",iocharset=$IOCHARSET,codepage=$CODEPAGE"
            else
               OPT=",iocharset=$IOCHARSET"
            fi
         else
            OPT="$OPT,nls=utf8"
         fi
      fi

ここで重要なのは、これの呼び出し方。isolinux.cfgではこんな感じで呼び出している。

display boot/splash.cfg
default linux
prompt 1
timeout 60
F1 boot/splash.txt
F2 boot/splash2.txt
F3 boot/splash.cfg

label slax
kernel boot/vmlinuz
append vga=769 changes=slaxsave.dat max_loop=255 initrd=boot/initrd.gz init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw autoexec=startx iocharset=utf8 codepage=932

label slax2
kernel boot/vmlinuz
append vga=769 changes=slaxsave.dat max_loop=255 initrd=boot/initrd.gz init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw autoexec=xconf;startx iocharset=utf8 codepage=932

label linux
kernel boot/vmlinuz
append vga=769 changes=slaxsave.dat max_loop=255 initrd=boot/initrd.gz init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw iocharset=utf8 codepage=932

label memtest
kernel boot/memtest

うーん、コードを記述すると、どうしても行数が増えるなぁ。