
i815でframebufferコンソールを使う。
本当は日本語化もしたかったのだが、とりあえず今日はここまで。
こちらを参考にしてKernelにパッチを当てる。
0.0.23より後のバージョンは、0.0.23へのパッチとなっているので、必ず0.0.23も入手すること。
0.0.23は、Linux-2.4.20まではパッチが用意されているが、それ以降のKernelへのパッチは無い。Linux-2.4.21へは、Linux-2.4.20用のパッチを適用する。但し、当たらない部分があるので、それを手で書き換える必要がある(困難な作業ではない)。
また、0.0.23より後のパッチはKernel-2.4.21であっても、当たらない部分は無かった。
Kernelの再構築時に、
Character devices --->
/dev/agpgart (AGP Support)
Intel I810/I815/I830M (on-board) support
を有効にしないと、frame bufferのオプションにi810/i815が現れない。古いKernelの設定を.configをコピーすることで引き継いだ場合などで注意が必要。
Kernelへの引数指定は、
video=i810fb:xres=1152:yres=864:vyres=864:bpp=16:hsync1=30:hsync2=100:vsync1=85:vsync2=85:accel:mtrr:rotate=1
のように行う。moduleとして組み込む時とは引数の区切り方が違うので注意。
画面の解像度は、1280x1024は選べない。
rotate=1やrotate=3等を試してみると面白い。
「UNIXはこうでなくっちゃ」と (
中途半端に) 思えるような画面となる。
framebufferが動作していると、最初のバックスクロールで表示が乱れる。
また、viやless等で画面の大きさを正しく取得できないようだ。
いずれも、バックスクロールを行ってロゴを消せば表示が乱れなくなるが、気持ち悪いので対策することにした。
ロゴの表示が影響していると思われるので
こちらを参考に、最初からロゴを非表示にすることにする。
/usr/src/linux/drivers/video/fbcon.cで
#defineしている
LOGO_Hおよび
LOGO_Wを0にする。
grepしてみると
/usr/src/linux/drivers/video/newport_con.cにも同様の箇所があったので、そちらも0にしてみた。
追加
rotate=1またはrotate=3を指定した場合は、xresとyresを逆に指定しなければならない。但し、hsyncとvsyncはそのままでよい。