hix (3507) の日記

2003 年 08 月 26 日
午前 06:26

大画面

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はそのままでよい。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

ソースを見ろ -- ある4桁UID

処理中...