Tiny Core Linux 4.7.7をHDDにインストール&日本語入力でインストールしたLinuxでUSBメモリをマウントしてみたところ日本語が化けているようです。unicode対応のrxvtをインストールしてbusyboxをunicode対応にしても、USBメモリはFATでSJIS(cp932)だったため化けてしまうようです。cp932に対応するにはcp932に対応したカーネルモジュールを作成しインストールする必要がある事が分かりましたので、作成&インストールに挑戦してみたいと思います。
※Tiny Core Linuxでは起動時にホームディレクトリのパーミッションやオーナーを強制的に変更してしまいます。作業ディレクトリとしてホームディレクトリ/home/tcを使う場合は気をつけて下さい。可能であれば別のディレクトリを使う事をお勧めいたします。
事前準備
カーネルモジュールをコンパイルするために必要なソースコードとパッケージをダウンロード&インストールします。
カーネルモジュールのコンパイルにはcompiletc.tczがあればOKなようですのでインストールします。
$ tce-load -wi compiletc
カーネルモジュールのソースコードを取得します。
$ wget http://distro.ibiblio.org/tinycorelinux/4.x/x86/archive/4.7.7/src/kernel/linux-3.0.21-patched.txz
$ wget http://distro.ibiblio.org/tinycorelinux/4.x/x86/archive/4.7.7/src/kernel/config-3.0.21-tinycore
カーネルモジュールのソースコードを解凍します。
$ tar xvf linux-3.0.21-patched.txz
cp932対応にするために設定ファイルを変更します。
$ cd linux-3.0.21
$ cp ../config-3.0.21-tinycore .config
$ vi .config
@@ -4317,7 +4317,7 @@
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
+CONFIG_NLS_CODEPAGE_932=m
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
コンパイルします。
$ make oldconfig
$ make fs/nls/nls_cp932.ko
パッケージの作成とインストール
パッケージに必要なファイルを集めます。
$ cd ..
$ mkdir -p nls_cp932/lib/modules/`uname -r`/kernel/fs/nls
$ cp linux-3.0.21/fs/nls/nls_cp932.ko nls_cp932/lib/modules/`uname -r`/kernel/fs/nls
$ mkdir -p nls_cp932/usr/local/tce.installed/
インストールスクリプトを作成します。
$ vi nls_cp932/usr/local/tce.installed/nls_cp932
# !/bin/sh
echo kernel/fs/nls/nls_cp932.ko: >> /lib/modules/`uname -r`/modules.dep
/sbin/insmod /lib/modules/`uname -r`/kernel/fs/nls/nls_cp932.ko
sed -i "s/umask=000/umask=000,iocharset=utf8/" /usr/sbin/rebuildfstab
sed -i "/vfat/ s/umask=000/umask=000,codepage=932/" /usr/sbin/rebuildfstab
インストールスクリプトに実行権限を付与します。
$ chmod 755 nls_cp932/usr/local/tce.installed/nls_cp932
パッケージ化します。
$ rm -f nls_cp932.tcz
$ mksquashfs nls_cp932 nls_cp932.tcz
$ md5sum nls_cp932.tcz > nls_cp932.tcz.md5.txt
起動時にパッケージが読み込まれるようにします。
$ /bin/cp -f nls_cp932.tcz* /mnt/sda1/tce/optional/
$ echo nls_cp932.tcz >> /mnt/sda1/tce/onboot.lst
動作チェック
再起動し、USBメモリをマウントしls -Alなどのコマンドを試して日本語が化けていない事を確認します。この時、ターミナルはurxvtである必要があります。