備忘録: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
うーん、コードを記述すると、どうしても行数が増えるなぁ。