軽いで有名なTiny Core Linuxですが、現在Tiny Core Linux日本語化プロジェクトの公開されているバージョンは4.5.2-jaで止まっているようです。4.5.2でも十分な気もするのですが、今回は5.xを想定して、4.5.2-jaから日本語部分を取り出し、4.7.7-jaみたいなものを作ってみちゃおうと思います。
CorePlus-4.7.7のダウンロード&ブートCDの作成
Tiny Core Linux 3.xでは大変だったハードディスクへのインストールですが4.xではtc-installというツールを使って簡単にインストールできるようになりました。CorePlusならはじめからtc-installがインストールされていますので今回はCorePlusを使います。
1. CorePlus-4.7.7のダウンロード
Tiny Core Linuxのサイトを見てみると5.xがリリースされた事によって最新版しかダウンロードできないように見えるのですが、Downloadsのページをよく見ると過去のバージョンもしっかりとダウンロードする事ができます。
過去のバージョンのダウンロードはTiny Core Linuxの公式サイト から Downloads -> Archive of past base releases: 4.x -> 4.7.7 から CorePlus-4.7.7.iso をダウンロードします。
2. CorePlus-4.7.7のライブCD作成
ダウンロードしたCorePlus-4.7.7.isoをCD-Rに焼いてライブCDを作成します。
3. CorePlus-4.7.7のインストール
ブートCDからCorePlus-4.7.7を起動し、tc-install 又は tc-install.sh を使ってHDDにインストールします。インストール途中の「Enter space separated boot options」のところでhome=sda1 opt=sda1 を追加します。このオプションを追加するとhomeとoptディレクトリをメモリ上ではなくHDDを使うようになります。
(省略)
Enter space separated boot options:
Example: vga=normal syslog showapps uaitusb=5
home=sda1 opt=sda1
(省略)
4. ハードディスクからブート
ブートCDを取り出しハードディスクから起動します。私の場合、結構な割合でブートできない事がありました。その場合は再度インストールしてみると出来たりします。それでもできない場合はcfdiskコマンドとかを使ってがんばると出来る事もあります。その方法はTiny Core Linux3.2 日本語版のインストールあたりが参考になるかもしれません。
5. homeディレクトリのバックアップ無効化
Tiny Core LinuxはCDやUSBメモリから起動することを前提に設計されているせいか、インストールしてすぐの状態ではhomeやoptディレクトリがHDDであっても終了時にhomeとoptディレクトリを圧縮して保存するような動きをします。しかし今回はhomeとoptディレクトリはメモリ上ではなくHDD上になるため、バックアップしないようにします。
$ echo > /opt/.filetool.lst
4.5.2-jaのダウンロードと解凍
Tiny Core Linux 4.7.7のインストールが完了したら4.5.2-jaから日本語関係のモジュールを取り出すためにISOファイルをダウンロードして解凍します。
Tiny Core Linux 日本語化プロジェクト から TinyCore-4.5.2-ja.iso をダウンロードします。
$ wget http://jaist.dl.sourceforge.jp/tinycore-jp/55908/TinyCore-4.5.2-ja.iso
ダウンロードした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
日本語関係のパッケージのコピー
ダウンロードしたisoファイルから日本語関係のパッケージを取り出します。unicode対応rxvt(rxvt-unicode)と日本語入力システム(scim, anthy)はそのまま使えそうなのでそのままコピーします。
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
日本語入力システムをインストール(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
つづけて日本語入力システムを使うために必要となるパッケージをダウンロード&インストールします。
$ tce-load -wil libiconv.tcz
$ tce-load -wil gtk2.tcz
$ tce-load -wil libxcb.tcz
パッケージ作成の準備
unicode対応rxvtと日本語入力システムをインストールしただけでは日本語入力はできないみたいです。4.5.2-jaから更に必要なモジュールを取り出します。後々を考えると必要なファイルやプログラムはパッケージにしておくとインストール&アンインストールがとても楽に行えますので可能な限りパッケージ化していきたいと思います。
まずはパッケージの解凍と作成のために必要となるsquashfsをインストールします。
$ tce-load -wi squashfs-tools-4.x
M+フォントのパッケージ作成とインストール
日本語ビットマップフォントであるM+フォントをインストールするパッケージを作成します。
Xlibs-jaを解凍します(M+フォントはXlibs-jaに含まれているため)。
$ unsquashfs -d Xlibs-ja TinyCore-4.5.2-ja/cde/optional/Xlibs-ja.tcz
M+フォントをコピーします。
$ 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/
$ 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
パーミッションを設定して実行できるようにします。
$ 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
インストールします。
$ /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に上がっているため今のバージョンのパッケージを作成しておきます。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
$ sudo mkdir -p locale-ja/usr/lib/locale
$ sudo cp -a /usr/lib/locale/locale-archive locale-ja/usr/lib/locale
インストールスクリプトを作成します。
$ sudo 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 home=sda1 opt=sda1 ...
+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に変更してエラーが出ていないかチェックします。
実はまだ先が…
ここまでがんばっても日本語関係でまだおかしなところがありますので、さらに以下の変更も必要となります。日本語って本当大変なんですね。