軽いで有名なTiny Core Linuxですが、Tiny Core Linux日本語化プロジェクトで公開されているバージョンは4.5.2-jaで止まっているみたいですので、4.5.2-jaから日本語部分を取り出して4.7.7で日本語入力ができるようにしてみようと思います。
squashfs-tools-4.xのインストール
tczファイルの解凍と作成のためにsquashfs-tools-4.xをインストールしておきます。
$ tce-load -wi squashfs-tools-4.x
4.5.2-jaから日本語関係のモジュールをインストール
Tiny Core Linux 4.7.7のインストールが完了したら4.5.2-jaから日本語関係のモジュールを取り出してインストールします。
Tiny Core Linux 日本語化プロジェクトから TinyCore-4.5.2-ja.iso をダウンロードします。
$ wget http://jaist.dl.sourceforge.jp/tinycore-jp/55908/TinyCore-4.5.2-ja.iso
解凍します。
$ sudo mount -t iso9660 -o loop TinyCore-4.5.2-ja.iso /mnt/sr0
$ mkdir TinyCore-4.5.2-ja
$ sudo cp -rp /mnt/sr0/* TinyCore-4.5.2-ja
$ umount /mnt/sr0
unicode対応rxvtのインストール(4.5.2-jaのパッケージをそのまま使用)
$ /bin/cp -f TinyCore-4.5.2-ja/cde/optional/rxvt-unicode.tcz* /mnt/sda1/tce/optional/
$ echo rxvt-unicode.tcz >> /mnt/sda1/tce/onboot.lst
IME(scimとanthy)のインストール(4.5.2-jaのパッケージをそのまま使用)
$ /bin/cp -f TinyCore-4.5.2-ja/cde/optional/scim-anthy.tcz* /mnt/sda1/tce/optional/
$ /bin/cp -f TinyCore-4.5.2-ja/cde/optional/scim.tcz* /mnt/sda1/tce/optional/
$ /bin/cp -f TinyCore-4.5.2-ja/cde/optional/anthy.tcz* /mnt/sda1/tce/optional/
$ echo scim-anthy.tcz >> /mnt/sda1/tce/onboot.lst
IMEを使うために必要となるパッケージをダウンロード&インストール。
$ tce-load -wil libiconv.tcz
$ tce-load -wil gtk2.tcz
$ tce-load -wil libxcb.tcz
M+フォントのインストール
日本語ビットマップフォントであるM+フォントをインストールします。M+フォントはXlibs-jaに含まれているため、Xlibs-jaを解凍します。
$ unsquashfs -d Xlibs-ja TinyCore-4.5.2-ja/cde/optional/Xlibs-ja.tcz
M+フォントのパッケージを作成します。mplus-fontsフォルダを作成しそこに必要なファイルを集めます。
$ mkdir -p mplus-fonts/usr/share/fonts/
$ cp Xlibs-ja/usr/lib/X11/fonts/misc/mplus_*.pcf mplus-fonts/usr/share/fonts/
$ gzip mplus-fonts/usr/share/fonts/mplus_b_12.pcf
$ gzip mplus-fonts/usr/share/fonts/mplus_r_12.pcf
$ mkdir -p mplus-fonts/usr/lib/X11/fonts/misc/
$ ln -sf /usr/share/fonts/mplus_b_12.pcf.gz mplus-fonts/usr/lib/X11/fonts/misc/
$ ln -sf /usr/share/fonts/mplus_r_12.pcf.gz mplus-fonts/usr/lib/X11/fonts/misc/
M+フォントのインストールスクリプトを書きます。
$ mkdir -p mplus-fonts/usr/local/tce.installed/
$ vi mplus-fonts/usr/local/tce.installed/mplus-fonts
# !/bin/sh
FONTS_DIR_FILE="/usr/lib/X11/fonts/misc/fonts.dir"
FONT_NUM=`head -1 $FONTS_DIR_FILE`
FONT_NUM_NEW=`expr $FONT_NUM + 2`
/bin/cp -f $FONTS_DIR_FILE $FONTS_DIR_FILE
cat <<'EOF' >> $FONTS_DIR_FILE
mplus_b_12.pcf.gz -mplus-m+gothic-bold-r-normal--12-120-75-75-c-120-iso10646-1
mplus_r_12.pcf.gz -mplus-m+gothic-medium-r-normal--12-120-75-75-c-120-iso10646-1
EOF
sed -i "1 s/$FONT_NUM/$FONT_NUM_NEW/" $FONTS_DIR_FILE
M+フォントをパッケージ化します。
$ chmod 755 mplus-fonts/usr/local/tce.installed/mplus-fonts
$ rm -f mplus-fonts.tcz
$ mksquashfs mplus-fonts mplus-fonts.tcz
$ md5sum mplus-fonts.tcz > mplus-fonts.tcz.md5.txt
$ echo Xlibs.tcz > mplus-fonts.tcz.dep
M+フォントをインストールします。
$ /bin/cp -f mplus-fonts.tcz* /mnt/sda1/tce/optional/
$ echo mplus-fonts.tcz >> /mnt/sda1/tce/onboot.lst
Xlocaleのインストール
Xlocaleの役割は私自身よく分かっていないのですが、このファイルがないと日本語入力ができないようです。
Xlocaleのパッケージを作成します。
$ mkdir -p Xlocale-ja/usr/share/X11/locale/
$ /bin/cp -rf Xlibs-ja/usr/share/X11/locale/ja_JP.UTF-8 Xlocale-ja/usr/share/X11/locale/
$ rm -f Xlocale-ja.tcz
$ mksquashfs Xlocale-ja Xlocale-ja.tcz
$ md5sum Xlocale-ja.tcz > Xlocale-ja.tcz.md5.txt
$ echo Xlibs.tcz > Xlocale-ja.tcz.dep
Xlocaleをインストールします。
$ /bin/cp -f Xlocale-ja.tcz* /mnt/sda1/tce/optional/
$ echo Xlocale-ja.tcz >> /mnt/sda1/tce/onboot.lst
libpng12のパッケージ作成とインストール
Tiny Core Linux 5.xではlibpngのバージョンが16に上がっているため今のバージョンのパッケージを作成しておきます。IMEまわりが使っていたような気がしますので…。16と12で互換性があればシンボリックリンクを張って何とかなるかもしれませんが、何とかならなかった時のために作成しておきます。
libpng12のパッケージ作成
$ mkdir -p libpng12/usr/lib
$ /bin/cp -fd Xlibs-ja/usr/lib/libpng12* libpng12/usr/lib
$ rm -f libpng12.tcz
$ mksquashfs libpng12 libpng12.tcz
$ md5sum libpng12.tcz > libpng12.tcz.md5.txt
libpng12はTiny Core Linux 5.xでは必要になるかもしれませんが、4.7.7では必要ありませんのでインストールはせずコピーだけしておきます。
$ /bin/cp -f libpng12.tcz* /mnt/sda1/tce/optional/
日本語キーボードレイアウトパッケージの作成とインストール
kmapsをインストールすればキーボードレイアウトがインストールされますが日本語レイアウト以外は不要なので、軽量化のために日本語キーボード(jp106)のみのレイアウトファイルを作成します。
kmapsのインストール
$ tce-load -wil kmaps
日本語キーボードレイアウトパッケージの作成
$ mkdir -p kmap-jp106/usr/share/kmap/qwerty/
$ cp /tmp/tcloop/kmaps/usr/share/kmap/qwerty/jp106.kmap kmap-jp106/usr/share/kmap/qwerty/
$ mkdir -p kmap-jp106/usr/local/tce.installed/
$ vi kmap-jp106/usr/local/tce.installed/kmap-jp106
# !/bin/sh
USER=`cat /etc/sysconfig/tcuser`
if [ -n "$USER" ]; then
install -o $USER -g staff -m 755 -d /home/$USER/.X.d
cat <<__EOF__ > /home/$USER/.X.d/kmap-jp106
setxkbmap -rules xorg -layout jp -model jp106
xmodmap -e "keycode 49 = Zenkaku_Hankaku"
__EOF__
fi
$ chmod 755 kmap-jp106/usr/local/tce.installed/kmap-jp106
$ rm -f kmap-jp106.tcz
$ mksquashfs kmap-jp106 kmap-jp106.tcz
$ md5sum kmap-jp106.tcz > kmap-jp106.tcz.md5.txt
日本語キーボードレイアウトのインストール
$ /bin/cp -f kmap-jp106.tcz* /mnt/sda1/tce/optional/
$ echo kmap-jp106.tcz >> /mnt/sda1/tce/onboot.lst
日本語ロケールパッケージの作成とインストール
ロケールファイルを作成するためにはlocaledefというコマンドを使うようです。localedefはgetlocaleパッケージに含まれるみたいですので、getlocaleをインストールします。
$ tce-load -wil getlocale.tcz
日本語ロケールパッケージの作成
$ sudo mkdir -p /usr/lib/locale/
$ sudo rm -f /usr/lib/locale/locale-archive
$ sudo localedef -i ja_JP -c -f UTF-8 ja_JP.UTF-8
$ mkdir -p locale-ja/usr/lib/locale
$ cp -a /usr/lib/locale/locale-archive locale-ja/usr/lib/locale
$ vi locale-ja/usr/local/tce.installed/locale-ja
# !/bin/sh
PROFDIR="/etc/profile.d"
if [ -d "$PROFDIR" ]; then
cat <<EOS > "$PROFDIR/locale-ja.sh"
export G_FILENAME_ENCODING=@locale
EOS
fi
$ chmod 755 locale-ja/usr/local/tce.installed/locale-ja
$ vi locale-ja.tcz.dep
libiconv.tcz
glibc_gconv.tcz
$ rm -f locale-ja.tcz
$ mksquashfs locale-ja locale-ja.tcz
$ md5sum locale-ja.tcz > locale-ja.tcz.md5.txt
日本語ロケールパッケージのインストール
$ /bin/cp -f locale-ja.tcz* /mnt/sda1/tce/optional/
$ echo locale-ja.tcz >> /mnt/sda1/tce/onboot.lst
ブートオプションの設定
タイムゾーン、ロケール、日本語キーボードレイアウトをカーネルオプションで指定します。tz=JST-9 noutc lang=ja_JP.UTF-8 kmap=qwerty/jp106を指定したら再起動します。
$ vi /mnt/sda1/tce/boot/extlinux/extlinux.conf
DEFAULT core
LABEL core
KERNEL /tce/boot/vmlinuz
APPEND initrd=/tce/boot/core.gz quiet tz=JST-9 noutc lang=ja_JP.UTF-8 kmap=qwerty/jp106 home=sda1 opt=sda1 ...
動作確認
ここまでできたら再起動します。再起動後、urxvtを起動して、[全角/半角]キーを押して日本語入力ができれば、まずは成功です。うまくいかない場合は、ブートオプションのquietをshowappsに変更してエラーが出ていないかチェックします。