宽屏指东之intel+lcd完美控制台

CPU/显卡/打印机/USB设备等硬件问题
panchoat
帖子: 90
注册时间: 2007-10-19 21:15

宽屏指东之intel+lcd完美控制台

#1

帖子 panchoat » 2007-10-24 18:32

前言:
还记得915resolution吗?在2.0版本的i810驱动下,在X环境中我们已经不需要它了。但是,兄弟们大概不知道,915resolution还可以帮助我们实现控制台宽屏终端哦!再也不用看那被拉长的字体了~

检查:
首先,看看你的显卡video bios是不是支持宽屏:
32位系统:google搜索lrmi包,下载后编译,得到vbetest,root权限执行,如果在这里面有你使用的分辨率,恭喜!你中奖了!你的显卡bios天然的支持宽屏!此时,你所要做的就是在/boot/grub/menu.lst的kernel启动行中,添加这样的内容

代码: 全选

video=intelfb:mode=1280x800-16@60,mtrr,ywrap vga=你刚刚得到的数字+512
此时,只要你重启系统,就是完美的宽屏高分辨率终端了。

64位系统,不能用vbetest,不过可以用suse开发的hwinfo

代码: 全选

hwinfo --vbe
同样的,也是看mode中有没有宽屏。这个数字转化成vga=的参数,就是直接由16进制变成10进制即可。

注意!initelfb不支持lcd上的改变分辨率,并且必须用vga=模式代码 的形式加载。否则无效。

下一楼接着发
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#2

帖子 BigSnake.NET » 2007-10-24 18:34

nv独显可以吗?..
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
panchoat
帖子: 90
注册时间: 2007-10-19 21:15

#3

帖子 panchoat » 2007-10-24 18:56

上面说的情况其实可以说,基本上是不靠谱的。因为厂商对集成显卡的video bios通常都不会费时费力的去添加非标准的模式。绝大绝大多数的劳苦大众,都是vbios中没有宽屏选项的。遇到这种情况,怎么办?靠天靠地靠厂商,不如靠自己。

我们知道,915resolution能做什么?它能将在内存中的vbios hack掉,也就是让显卡读的是内存中的已经改过的“支持宽屏”的vbios。我们要做的,就是在framebuffer的显卡驱动没有加载之前,让915resolution先把模式改掉,然后加载framebuffer显卡驱动时,以为自己的模式是宽屏。

但是,终端不止有分辨率的问题,还有刷新率的问题,而传统的vesafb不能控制刷新率,intelfb虽然可以控制刷新率,但是由于intelfb本生的问题,只能在启动是内核指定参数,我们对vbios之后的hack它根本就无视,问题来了,怎么办?
panchoat
帖子: 90
注册时间: 2007-10-19 21:15

#4

帖子 panchoat » 2007-10-24 18:58

BigSnake.NET 写了:nv独显可以吗?..
nv的驱动和它的fb的驱动冲突,不过由于不采用,使用vesa-tng或uvesafb,所以完全可以用。
当然,也可以不用3d加速,那这样直接可以用nvidiafb
panchoat
帖子: 90
注册时间: 2007-10-19 21:15

#5

帖子 panchoat » 2007-10-24 19:08

接三楼,所以,只能使用gentoo中的vesa-tng或者是它的继任者,uvesafb。下面这篇文章的作者设立了一个打上了补丁的debian的源。
http://jeandamiendurand.free.fr/debian/splashutils/
同样的,在ubuntu论坛上也有有篇howto
http://ubuntuforums.org/showthread.php?t=178439

你可以用上面的两种方式之一,构建你的基本的uvesafb known kernel。
panchoat
帖子: 90
注册时间: 2007-10-19 21:15

#6

帖子 panchoat » 2007-10-24 19:38

上面的文章很新,23号刚刚更新。而且作者还在持续的更新中,有什么问题也好反馈。建议用源安装。

下面讲我们的hack的过程。

如果只是要能够看到终端宽屏,那么可以在915resolution修改后重新modprobe uvesafb,指定参数,即可。
如果要尽可能早的起效,那么可以用early usermode的方法。

对已经可以引导的initramfs文件,进行解包:

代码: 全选

mkdir xx
cd xx
zcat yy.img.gz |cpio -i
这样,所有的文件都会被展开。
下面准备静态连接的915resolution
解包915resolution的gz包,然后编辑Makefile,增加下面一行
LDFLAGS:=-s -static
然后make,得到静态连接的915resolution。
编辑init文件,尽可能早的执行915resolution来更改模式。
将v86d的静态连接版本也放进去。uvesafb需要它。
手动更改init脚本,insmod下面几个module
cfbcopyarea
cfbfillrect
cfbimgblt.ko
fbcon
uvesafb
当然,要记得带上正确的参数。
这样,在initrd载入后,直接就可以参看宽屏的终端了。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#7

帖子 eexpress » 2007-10-24 19:41

把fb搞得支持宽屏,不就得了。
● 鸣学
panchoat
帖子: 90
注册时间: 2007-10-19 21:15

#8

帖子 panchoat » 2007-10-24 19:41

忘了,可以用/usr/src/linux/scripts/gen_initramfs_lists.sh和/usr/src/linux/usr/gen_init_cpio来生成重新打包的initramfs。
这种生成方式的好处是,这个makefile保存相对容易,适合脚本进一步的编辑,完成自动化。
panchoat
帖子: 90
注册时间: 2007-10-19 21:15

#9

帖子 panchoat » 2007-10-24 19:43

eexpress 写了:把fb搞得支持宽屏,不就得了。
vesa是不会支持非标准屏的。intelfb对lcd的支持一直没有改变。似乎作者也没有什么改进的动力。ee大虾有兴趣可以试试阿!
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#10

帖子 eexpress » 2007-10-24 19:46

有钱就有动力。好多软件都是荒废了,尤其老式底层软件,作者都不愿意跟进了。
● 鸣学
magichere
帖子: 13
注册时间: 2007-10-28 10:05

我总也 启动不了 我的 i810fb

#11

帖子 magichere » 2007-10-28 10:43

我根据楼主 的方法:
./vbetest
VBE Version 3.0
Intel(r)845G/845GL/845GE/845GV Graphics Chip Accelerated VGA BIOS
[316] 1920x1440 (256 color palette)
[333] 1920x1440 (5:6:5)
[348] 1920x1440 (8:8:8)
[314] 1600x1200 (256 color palette)
[331] 1600x1200 (5:6:5)
[346] 1600x1200 (8:8:8)
[263] 1280x1024 (256 color palette)
[282] 1280x1024 (5:6:5)
[283] 1280x1024 (8:8:8)
[261] 1024x768 (256 color palette)
[279] 1024x768 (5:6:5)
[280] 1024x768 (8:8:8)
[274] 640x480 (8:8:8)
[276] 800x600 (5:6:5)
[277] 800x600 (8:8:8)
[257] 640x480 (256 color palette)
[259] 800x600 (256 color palette)
[273] 640x480 (5:6:5)


然后我在 /boot/grub/menu.lst
kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/hda5 ro video=i810fb:mode=1600x1200-24@60,mtrr,ywrap vga=858

858 346+ 512 ([346] 1600x1200 (8:8:8))

目录:
/lib/modules/2.6.8-2-386/kernel/drivers/video/

aty cfbimgblt.ko cyber2000fb.ko kyro pm2fb.ko sstfb.ko vesafb.ko vgastate.ko
cfbcopyarea.ko cirrusfb.ko hgafb.ko matrox riva tdfxfb.ko vfb.ko
cfbfillrect.ko console i810(目录下有 i810fb.ko) neofb.ko sis tridentfb.ko vga16fb.ko


fbset -i

mode "1600x1200-77"
# D: 192.012 MHz, H: 94.494 kHz, V: 77.201 Hz
geometry 1600 1200 1600 1200 32
timings 5208 200 32 16 4 200 4
rgba 8/16,8/8,8/0,8/24
endmode

Frame buffer device information:
Name : VESA VGA
Address : 0xd8000000
Size : 8192000
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 0
YPanStep : 0
YWrapStep : 0
LineLength : 6400
Accelerator : No

难道 要 insmod?

为什么不启动 i810fb 呢?
magichere
帖子: 13
注册时间: 2007-10-28 10:05

美驱动器来,

#12

帖子 magichere » 2007-10-28 10:50

panchoat
我没有 驱动器起来!。555,帮我分析一下原因!
panchoat
帖子: 90
注册时间: 2007-10-19 21:15

Re: 我总也 启动不了 我的 i810fb

#13

帖子 panchoat » 2007-10-28 11:36

magichere 写了:我根据楼主 的方法:
./vbetest
VBE Version 3.0
Intel(r)845G/845GL/845GE/845GV Graphics Chip Accelerated VGA BIOS
[316] 1920x1440 (256 color palette)
[333] 1920x1440 (5:6:5)
[348] 1920x1440 (8:8:8)
[314] 1600x1200 (256 color palette)
[331] 1600x1200 (5:6:5)
[346] 1600x1200 (8:8:8)
[263] 1280x1024 (256 color palette)
[282] 1280x1024 (5:6:5)
[283] 1280x1024 (8:8:8)
[261] 1024x768 (256 color palette)
[279] 1024x768 (5:6:5)
[280] 1024x768 (8:8:8)
[274] 640x480 (8:8:8)
[276] 800x600 (5:6:5)
[277] 800x600 (8:8:8)
[257] 640x480 (256 color palette)
[259] 800x600 (256 color palette)
[273] 640x480 (5:6:5)


然后我在 /boot/grub/menu.lst
kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/hda5 ro video=i810fb:mode=1600x1200-24@60,mtrr,ywrap vga=858

858 346+ 512 ([346] 1600x1200 (8:8:8))

目录:
/lib/modules/2.6.8-2-386/kernel/drivers/video/

aty cfbimgblt.ko cyber2000fb.ko kyro pm2fb.ko sstfb.ko vesafb.ko vgastate.ko
cfbcopyarea.ko cirrusfb.ko hgafb.ko matrox riva tdfxfb.ko vfb.ko
cfbfillrect.ko console i810(目录下有 i810fb.ko) neofb.ko sis tridentfb.ko vga16fb.ko


fbset -i

mode "1600x1200-77"
# D: 192.012 MHz, H: 94.494 kHz, V: 77.201 Hz
geometry 1600 1200 1600 1200 32
timings 5208 200 32 16 4 200 4
rgba 8/16,8/8,8/0,8/24
endmode

Frame buffer device information:
Name : VESA VGA
Address : 0xd8000000
Size : 8192000
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 0
YPanStep : 0
YWrapStep : 0
LineLength : 6400
Accelerator : No

难道 要 insmod?

为什么不启动 i810fb 呢?
830以上均为intelfb.
i810fb只针对810 815
具体看内核源码树下的Documents/fb/的内容
头像
Beetle
帖子: 1637
注册时间: 2005-10-14 16:55
系统: OS X
来自: 江苏
联系:

#14

帖子 Beetle » 2007-10-28 13:42

哈~成功!! :D
magichere
帖子: 13
注册时间: 2007-10-28 10:05

你怎么搞成功的?

#15

帖子 magichere » 2007-10-28 17:47

Beetle
改了什么?
回复