Tiny Core Linux4.7.7で日本語入力

軽いで有名な[Tiny Core Linux](http://tinycorelinux.net/)ですが、[Tiny Core Linux日本語化プロジェクト](https://osdn.jp/projects/tinycore-jp/)で公開されているバージョンは4.5.2-jaで止まっているみたいですので、4.5.2-jaから日本語部分を取り出して4.7.7で日本語入力ができるようにしてみようと思います。

## squashfs-tools-4.xのインストール
tczファイルの解凍と作成のためにsquashfs-tools-4.xをインストールしておきます。

```console
$ tce-load -wi squashfs-tools-4.x
```

## 4.5.2-jaから日本語関係のモジュールをインストール
Tiny Core Linux 4.7.7のインストールが完了したら4.5.2-jaから日本語関係のモジュールを取り出してインストールします。

[Tiny Core Linux 日本語化プロジェクト]( http://sourceforge.jp/projects/tinycore-jp/)から TinyCore-4.5.2-ja.iso をダウンロードします。

```console
$ wget http://jaist.dl.sourceforge.jp/tinycore-jp/55908/TinyCore-4.5.2-ja.iso
```

解凍します。

```console
$ 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のパッケージをそのまま使用）
```console
$ /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のパッケージをそのまま使用）
```console
$ /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を使うために必要となるパッケージをダウンロード＆インストール。

```console
$ tce-load -wil libiconv.tcz
$ tce-load -wil gtk2.tcz
$ tce-load -wil libxcb.tcz
```

### M+フォントのインストール

日本語ビットマップフォントであるM+フォントをインストールします。M+フォントはXlibs-jaに含まれているため、Xlibs-jaを解凍します。

```console
$ unsquashfs -d Xlibs-ja TinyCore-4.5.2-ja/cde/optional/Xlibs-ja.tcz 
```

M+フォントのパッケージを作成します。mplus-fontsフォルダを作成しそこに必要なファイルを集めます。

```console
$ 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+フォントのインストールスクリプトを書きます。

```console
$ mkdir -p mplus-fonts/usr/local/tce.installed/
$ vi mplus-fonts/usr/local/tce.installed/mplus-fonts
```

```text: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+フォントをパッケージ化します。

```console
$ 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+フォントをインストールします。

```console
$ /bin/cp -f mplus-fonts.tcz* /mnt/sda1/tce/optional/
$ echo mplus-fonts.tcz >> /mnt/sda1/tce/onboot.lst
```

### Xlocaleのインストール
Xlocaleの役割は私自身よく分かっていないのですが、このファイルがないと日本語入力ができないようです。

Xlocaleのパッケージを作成します。

```console
$ 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をインストールします。

```console
$ /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のパッケージ作成

```console
$ 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では必要ありませんのでインストールはせずコピーだけしておきます。

```console
$ /bin/cp -f libpng12.tcz* /mnt/sda1/tce/optional/
```

### 日本語キーボードレイアウトパッケージの作成とインストール
kmapsをインストールすればキーボードレイアウトがインストールされますが日本語レイアウト以外は不要なので、軽量化のために日本語キーボード（jp106）のみのレイアウトファイルを作成します。

kmapsのインストール

```console
$ tce-load -wil kmaps
```

日本語キーボードレイアウトパッケージの作成

```console
$ 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
```

```text: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
```

```console
$ 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
```

日本語キーボードレイアウトのインストール

```console
$ /bin/cp -f kmap-jp106.tcz* /mnt/sda1/tce/optional/
$ echo kmap-jp106.tcz >> /mnt/sda1/tce/onboot.lst
```

### 日本語ロケールパッケージの作成とインストール
ロケールファイルを作成するためには`localedef`というコマンドを使うようです。`localedef`はgetlocaleパッケージに含まれるみたいですので、getlocaleをインストールします。

```console
$ tce-load -wil getlocale.tcz
```

日本語ロケールパッケージの作成

```console
$ 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
```

```text: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
```

```console
$ chmod 755 locale-ja/usr/local/tce.installed/locale-ja
$ vi locale-ja.tcz.dep
```

```text:locale-ja.tcz.dep
libiconv.tcz
glibc_gconv.tcz
```

```console
$ rm -f locale-ja.tcz
$ mksquashfs locale-ja locale-ja.tcz
$ md5sum locale-ja.tcz > locale-ja.tcz.md5.txt
```

日本語ロケールパッケージのインストール

```console
$ /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`を指定したら再起動します。

```console
$ vi /mnt/sda1/tce/boot/extlinux/extlinux.conf
```

```text:/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`に変更してエラーが出ていないかチェックします。