Tiny Core Linux 4.7.7で日本語入力で4.7.7をインストールして日本語入力できるようになったのですが、urxvtで日本語入力して削除すると半分ずつ文字が削除されてしまうようです。どうもbusyboxがunicode対応でないのが原因ぽいようです。busyboxをunicode対応にしてみたいと思います。※busyboxをunicode対応にする以外にもbashを使うという手もあるようです。
※Tiny Core Linuxでは起動時にホームディレクトリのパーミッションやオーナーを強制的に変更してしまいます。作業ディレクトリとしてホームディレクトリ/home/tcを使う場合は気をつけて下さい。可能であれば別のディレクトリを使う事をお勧めいたします。
事前準備
必要なパッケージのインストールと必要なファイルをダウンロードし解凍します。
コンパイルに必要となるパッケージをインストールします。
$ tce-load -wi compiletc
$ tce-load -wi ncurses-dev
busyboxのソースコードをダウンロードします。
$ wget http://distro.ibiblio.org/tinycorelinux/4.x/x86/archive/4.7.7/src/busybox-1.20.2-config
$ wget http://distro.ibiblio.org/tinycorelinux/4.x/x86/archive/4.7.7/src/busybox-1.20.2.tar.bz2
$ wget http://distro.ibiblio.org/tinycorelinux/4.x/x86/archive/4.7.7/src/busybox-1.20.2_depmod.patch
busyboxのソースコードを解凍しパッチをあてます。
$ tar xvfj busybox-1.20.2.tar.bz2
$ cd busybox-1.20.2
$ patch -p1 < ../busybox-1.20.2_depmod.patch
コンパイル
コンパイルの前にunicode対応にするために設定ファイルを変更します。この時点で不要となるモジュールを無効にして小さくする事もできます。例えばinetdやnfsは通常なら使わないと思いますので、無効すると少し小さくなります。
$ cp ../busybox-1.20.2-config .config
$ vi .config
@@ -26,13 +26,13 @@
CONFIG_FEATURE_INSTALLER=y
# CONFIG_INSTALL_NO_USR is not set
CONFIG_LOCALE_SUPPORT=y
-# CONFIG_UNICODE_SUPPORT is not set
-# CONFIG_UNICODE_USING_LOCALE is not set
+CONFIG_UNICODE_SUPPORT=y
+CONFIG_UNICODE_USING_LOCALE=y
# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
CONFIG_SUBST_WCHAR=0
CONFIG_LAST_SUPPORTED_WCHAR=0
-# CONFIG_UNICODE_COMBINING_WCHARS is not set
-# CONFIG_UNICODE_WIDE_WCHARS is not set
+CONFIG_UNICODE_COMBINING_WCHARS=y
+CONFIG_UNICODE_WIDE_WCHARS=y
# CONFIG_UNICODE_BIDI_SUPPORT is not set
# CONFIG_UNICODE_NEUTRAL_TABLE is not set
# CONFIG_UNICODE_PRESERVE_BROKEN is not set
コンパイル。コンパイル時にエラーぽいメッセージがが出るものの、busyboxは作成されているようなのでとりあえずこのまま使ってみます。
$ make
(省略)
LINK busybox_unstripped
Trying libraries: crypt m
Library crypt is needed, can't exclude it (yet)
Library m is needed, can't exclude it (yet)
実行できるようにパーミッションを設定します。
$ sudo chown root busybox
$ sudo chmod 4775 busybox
パッケージ化とインストール
作成したbusyboxをパッケージ化するためのファイルを集めます。
$ cd ..
$ mkdir -p busybox-ja/usr/local/bin/
$ sudo cp -p busybox-1.20.2/busybox busybox-ja/usr/local/bin/
$ mkdir -p busybox-ja/usr/local/tce.installed/
インストールスクリプトを作成します。
$ vi busybox-ja/usr/local/tce.installed/busybox-ja
#!/bin/sh
/usr/local/bin/busybox cp /usr/local/bin/busybox /bin
インストールスクリプトに実行権限を付与します。
$ chmod 755 busybox-ja/usr/local/tce.installed/busybox-ja
パッケージ化します。
$ rm -f busybox-ja.tcz
$ mksquashfs busybox-ja busybox-ja.tcz
$ md5sum busybox-ja.tcz > busybox-ja.tcz.md5.txt
作成したパッケージが起動時に読み込まれるようにします。
$ /bin/cp -f busybox-ja.tcz* /mnt/sda1/tce/optional/
$ echo busybox-ja.tcz >> /mnt/sda1/tce/onboot.lst
動作チェック
再起動し、urxvtを起動して日本語を入力し[Back Space]キーで削除してみます。一文字ずつ削除されれば成功です。