UNICON による Linux 日本語 console
重要なおしらせ
VD UNICON のメンテナンスは 2009/10/26 に 2.6.31 対応 patch を最後に終了しました。長らくのご利用ありがとうございました。 現在、UTF-8 対応コンソールとして utf-8 kernel が開発されています。なお、一切関与していません。
はじめに
UNICON は Linux のフレームバッファ上で CJK(中国語/日本語/韓国語)を表示するための仕組みです (UTF-8 には未対応)。TurboLinux 北京オフィス にて開発されていましたが、長らく更新が停止した状態になっています。dai が非公式に VD UNICON の名称でメンテナンスを続けていましたが、2009/10/26 に 2.6.31 対応 patch を最後に終了しました。
この文章およびパッチなどは無保証です。UNICON による Linux 日本語 console テストに際し、UNICON を使って日本語コンソールを実現しよう および UNICON を参考にさせて頂きました。多謝。
Kernel 編
Kernel にパッチを当てる
- 2.6.31.* 用: vd_unicon-kernel-20091021-2.6.31.patch
-
2.6.30.* 用: vd_unicon-kernel-20090615-2.6.30.patch
- 古いもの: unicon
kernel に フォントのパッチと VD UNICON 本体のパッチの両方を当てる。
これらのパッチは Turbolinux の kernel SRPM に含まれている UNICON パッチを元に、UNICON を使って日本語コンソールを実現しよう、Okpos.com:: Unicon にて提供されているパッチ、dai による修正を加えてある。
% cd /usr/src/linux-2.*.*
# font patch
% bzcat .../vd_unicon-kernel-fonts-YYYYMMDD.patch.bz2 | patch -p1
# unicon patch
% cat .../vd_unicon-kernel-YYYYMMDD-2.*.patch | patch -p1
Kernel の再構築
実験的機能のサポート、ローダブルモジュールのサポート、フレームバッファサポートをそれぞれ有効にし(詳細は Framebuffer HOWTO を参照)、 UNICON サポートを組み込み、表示したい言語のフォントをモジュールとする。
CONFIG_UNICON=y
CONFIG_UNICON_GB=m
CONFIG_UNICON_GBK=m
CONFIG_UNICON_BIG5=m
CONFIG_UNICON_EUCJP=m
CONFIG_UNICON_JIS=m
CONFIG_UNICON_SJIS=m
CONFIG_UNICON_KSCM=m
通常は EUCJP のみでかまわないだろう。 (GB/GBK は簡体字中国語、BIG5 は繁体字中国語、 EUCJP/JIS/SJIS は日本語、 KSCM は韓国語それぞれのフォントサポート)
bootloader の設定
UNICON はフレームバッファ上で動作するため、フレームバッファを利用するように bootloader で設定を行う。詳細は Framebuffer HOWTO、コンソールを高解像度で表示するには(GRUB編, LILO編)を参照。
2.6.24 以降、boot option に「vt.default_utf8=0」が必要となる場合がある。
GNU GRUB では kernel 行に
kernel /boot/vmlinuz root=/dev/sda1 ro video=vesafb vga=0x305 vt.default_utf8=0
LILO では append 行に
append="vt.default_utf8=0"
のように追加する。
Userland 編
unicon-tools を取得
unicon-tools-0.0.0.20050707.tar.gz を拾ってくる。
これは unicon-3.0.4-20010924.tar.gz (Turbolinux 北京オフィスではもう配布されていないようなのでここで配布) に vd_unicon-userland-20031122.patch (UNICON を使って日本語コンソールを実現しよう、UNICON にて提供されているパッチ及び dai による修正)を当て、必要な部分のみを取り出したものである。
unicon-tools の make
% ./configure --prefix=/usr
% make
# make install
デバイスファイルの作成
devfs, udev を使っていれば必要ない。
# mknod /dev/unikey c 10 202
# chmod 640 /dev/unikey
起動設定
以下を適当な boot script に追加。
#!/bin/sh
#
# VD UNICON for EUC-JP
if [ \( -f /lib/modules/`/bin/uname -r`/kernel/drivers/video/unicon/unikey.o \
-o -f /lib/modules/`/bin/uname -r`/kernel/drivers/video/unicon/unikey.ko \) \
-a -x /usr/bin/uniconctrl \
-a -e /dev/fb0 ]; then
/sbin/modprobe unikey
/sbin/modprobe encode-eucjp
# console-tools
if [ -x /usr/bin/consolechars ]; then
/usr/bin/consolechars --sfm /usr/lib/unicon/direct.uni
# kbd
elif [ -x /usr/bin/setfont ]; then
/usr/bin/setfont -u /usr/lib/unicon/direct.uni
# kbd (obsoleted)
elif [ -x /usr/bin/loadunimap ]; then
/usr/bin/loadunimap /usr/lib/unicon/direct.uni
fi
/usr/bin/uniconctrl --eucjp tty1
/usr/bin/uniconctrl --eucjp tty2
/usr/bin/uniconctrl --eucjp tty3
/usr/bin/uniconctrl --eucjp tty4
/usr/bin/uniconctrl --eucjp tty5
/usr/bin/uniconctrl --eucjp tty6
fi
おしらせ等
ライセンス
元々の UNICON が GPL2 なので、この非公式パッチ VD UNICON も GPL2 として公開しています。
制限事項
UTF-8 には対応していません。例えば UTF-8 でのかな漢字は 3バイトありますが、UNICON は実装上の仕様により 2バイトまでしか扱えないため、UTF-8 を扱うことができません。かつて UNICON を Unicode Console と紹介している文書が散見されたことや、UNICON という語感から UTF-8 も扱えるという誤解があるようですが、UNICON は正確には Universal Console です。
リンク
このページへのリンクは https://vdr.jp/d/unicon.html として頂けると覚えやすいし閲覧時の見栄えもよいと思います。
貢献者(順不同,敬称略)
- YAMAGUCHI Shingo
- OHNO Tetsuji
- Katsumi Kikuchi
- Toshi
関連リンク
- UNICON - CJK (Chinese/Japanese/Korean) console input and display system - 更新されていない。ML の紹介もあるが生きていないようだ。
- UNICONで日本語コンソール - 日本語での UNICON ページと言えばここ。
- UNICON を使って日本語コンソールを実現しよう - 山さんのページ。山さんが卒業したのでその後を引き継いだ。
- Okpos.com:: Unicon - Korean patch を配布。
- Bug 4087 UNICON: CJK fonts support on console. - なんと Kernel Bug Tracker に登録されてる。
今後の動向に注目。残念ながら REJECTED WILL_NOT_FIX となった。 - Re: Two questions about console utf8 support - Console/FrameBuffer のメンテナ James Simmons の見解「They unfortunely are hacks that break other things.」
- UNICON が SuSE 9.1 から外された理由 - 公式見解としていいのかわからないけれど、「パッチ自体がかなりひどいでき」とのこと。
- Turbolinux 北京オフィス - すべてはここから始まった…が、現在 UNICON に関する資料等は見当たらない。
- Turbolinux - 現在 UNICON の公式メンテナンスを行っている。
- Linux日本語コンソール - jconsole。
- Japanese text patch for Linux console - jcon。
- utf8-kernel - UTF-8 console の本命か。
変更履歴
- 2009/10/26 - メンテナンス終了。
- 2009/10/21 - kernel patch 2.6 を 20091021 版に更新。
- 2009/06/15 - kernel patch 2.6 を 20090615 版に更新。
- 2009/03/24 - kernel patch 2.6 を 20090324 版に更新。
- 2009/01/23 - kernel patch 2.6 を 20090123 版に更新。
- 2008/10/19 - kernel patch 2.6 を 20081019 版に更新。
- 2008/08/19 - bootloader 設定例を追加。
- 2008/08/06 - boot script にて consolechars (console-tools)、setfont (kbd)、loadunimap (古い kbd) のどれかあるほうを利用するように変更。
- 2008/07/18 - kernel patch 2.6 を 20080718 版に更新。
- 2008/04/18 - kernel patch 2.6 を 20080418 版に更新。
- 2008/01/27 - kernel patch 2.6 を 20080127 版に更新。
- 2007/10/11 - kernel patch 2.6 を 20071011 版に更新。
- 2007/07/09 - kernel patch 2.6 を 20070709 版に更新。
- 2007/04/29 - kernel patch 2.6 を 20070429 版に更新。
- 2007/02/05 - kernel patch 2.6 を 20070205 版に更新。
- 2006/12/01 - kernel patch 2.6 を 20061201 版に更新。
- 2006/11/30 - kernel patch 2.6 を 20061130 版に更新。
- 2006/09/20 - kernel patch 2.6 を 20060920 版に更新。
- 2006/06/18 - kernel patch 2.6 を 20060618 版に更新。
- 2006/03/20 - kernel patch 2.6 を 20060320 版に更新。
- 2006/01/03 - kernel patch 2.6 を 20060103 版に更新。
- 2005/10/29 - kernel patch 2.6 を 20051029 版に更新。
- 2005/08/29 - kernel patch 2.6 を 20050829 版に更新。
- 2005/07/07 - unicon-tools を配布。
- 2005/07/06 - patch を整理。
- 2005/06/29 - kernel patch 2.6 を 20050629 版に更新。
- 2005/04/15 - kernel patch 2.6 を 20050415 版に更新。
- 2005/04/13 - kernel patch 2.6 を 20050413 版に更新。
- 2005/04/12 - kernel patch 2.6 を 20050412 版に更新。
- 2005/01/04 - kernel patch 2.6 を 20050104 版に更新。
- 2004/12/29 - kernel patch 2.6 を 20041229 版に更新。
- 2004/10/19 - kernel patch 2.6 を 20041019 版に更新。
- 2004/08/23 - kernel patch 2.6 を 20040823 版に更新。
- 2004/06/18 - kernel patch 2.6 20040510、20040616 両版を追加。
- 2004/04/04 - kernel patch 2.6 を 20040404 版に更新。
- 2004/03/27 - kernel patch 2.6 を 20040327 版に更新。 /dev/unikey の作成についての説明を追加。
- 2004/02/19 - kernel patch 2.4, 2.6 を 20040219 版に更新。
- 2004/02/16 - boot script にて insmod を modprobe に変更。 /dev/fb0 の存在を調べるように変更。
- 2004/02/01 - kernel patch 2.4 を 20031218 版に更新。
- 2003/11/22 - patch を 20031122 版に更新。
- 2003/11/05 - 2.6 対応に向けて、patch を分割。
- 2003/09/10 - boot script にて loadunimap (kbd) ではなく consolechars (console-tools) を利用するように変更。
- 2003/09/02 - kernel 2.4.22 に対応
- 2003/08/19 - 公開