LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 9284|回复: 20

关于用 framebuffer 驱动,在console 模式下的分辨率的参数及配置

[复制链接]
发表于 2005-7-30 14:21:04 | 显示全部楼层 |阅读模式
写在前面的话:关于这方面的文章太多了,但还是写一个,主要是把大家的写的东西系统一下。为了照顾初学的弟兄。

提要:通过用 framebuffer 驱动,让console模式看上去更舒服一些;

正文;

在console模式(也就上文本显示,也是text模式),说直接一点,就是全屏是黑色的,象DOS那样的界面的,在桌面环境下,按CTRL+ALT+F2 或者F3 等,就进入console模式了。就是完全文本命令操作的那种非图形桌面环境。

用  framebuffer 驱动及配置,主要是能让text模式下找到更适合的观感。

一、让console 模式下分辨率起作用的主要配置文件是 lilo.conf 或者 grub.conf , lilo.conf 是lilo系统引导管理器的配置文件,如果您用这个来引导系统,就要配置 lilo.conf文件;grub.conf 是另一个系统引导管理器grub的配置文件。这两个系统引导管理器,其作用是一样的,只是实现的方法不太一样。这两个管理器不能同时使用。

二、framebuffer console的参数如下,主要是分辨率;

#   Colours   640x480 800x600 1024x768 1280x1024 1600x1200
#  --------+---------------------------------------------
#  256     |   769     771      773      775       796
#  32,768  |   784     787      790      793       797
#  65,536  |   785     788      791      794       798
#  16.8M   |   786     789      792      795       799

如果看不懂上面的这个,就看下面的这个,对照着看吧

# Normal VGA console
# vga = normal
# VESA framebuffer console @ 1024x768x64k
# vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
# vga=773
# VESA framebuffer console @ 800x600x64k
# vga=788
# VESA framebuffer console @ 800x600x32k
# vga=787
# VESA framebuffer console @ 800x600x256
# vga=771
# VESA framebuffer console @ 640x480x64k
# vga=785
# VESA framebuffer console @ 640x480x32k
# vga=784
# VESA framebuffer console @ 640x480x256
# vga=769

三、配置[对于大多数Linux发行版,如果您是用系统自带的内核,内核是支持 framebuffer 驱动的。您可以用直接用下面的方法来做]

1.对于grub系统引导管理器的配置方法;

如果您用 grub来引导,要修改  /etc/grub.conf  或者  /boot/grub/menu.lst  ,其实这两个文件都是一样的,因为  grub.conf 是  menu.lst的链接。

比如我没有修改过的grub.conf 是这样的:

说明一下:我的机器目前安装了三个操作系统,一个是xp  另一个是Fedora core 4.0 ,还有一个是 Slackware 10.1

  1. default=1
  2. timeout=5
  3. splashimage=(hd0,7)/boot/grub/splash.xpm.gz
  4. #hiddenmenu

  5. title Fedora Core (2.6.11-1.1369_FC4)
  6.         root (hd0,7)
  7.         kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet  
  8.         initrd /boot/initrd-2.6.11-1.1369_FC4.img

  9. title Slack
  10.         root (hd0,8)
  11.         kernel /boot/vmlinuz ro root=/dev/hda9  

  12. title WinXp
  13.         rootnoverify (hd0,0)
  14.         chainloader +1
复制代码


我们要参照上面的参数表,对照看着在您要改变的 Linux 的 console分辨率的那个 kernel 一行的后面加上 vga=xxx ,这里的 xxx,就是通过上面的参数表中查出来的。

比如我是 15寸的液晶显示器,我看看一下 1024x768x256是不是适合,所以我就在 kernel 那行的后面打一个空格后,加上了 vga=773


  1. default=1
  2. timeout=5
  3. splashimage=(hd0,7)/boot/grub/splash.xpm.gz
  4. #hiddenmenu

  5. title Fedora Core (2.6.11-1.1369_FC4)
  6.         root (hd0,7)
  7.         kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet vga=773
  8.         initrd /boot/initrd-2.6.11-1.1369_FC4.img

  9. title Slack
  10.         root (hd0,8)
  11.         kernel /boot/vmlinuz ro root=/dev/hda9 vga=773

  12. title WinXp
  13.         rootnoverify (hd0,0)
  14.         chainloader +1
复制代码


这样改过保存后,重启系统,进入相应的 Linux ,就知道是不是起作用了。比如发现 vga=773对我来说有点不适合。可以再找上面的参数来改一下就行了。

2.对于 lilo引导管理器的配置方法;

我们要改 /etc/lilo.conf这个文件 ;lilo的配置比较简单,因为vga=xxx是独立的一行。并且lilo.conf中有详细的配置参数,也就是我上面列出的那些,就是来自 lilo.conf的。想打开哪个参数,就把vga=xxx前面的#号去掉就行,当然不能同时打开多个。

注意的是:如果改了lilo.conf后,得执行 lilo -v


四、对于自编译内核的,需要注意以下几点。

1.在编内核时,要选中如下的选项;以加入  framebuffer 驱动的支持;

  
  • VGA text console
      
  • Video mode selection support
      
  • Support for frame buffer devices (EXPERIMENTAL)
      
  • VESA VGA graphics console
      
  • Advanced low level driver options
       <*> 8 bpp packed pixels support
      <*> 16 bpp packed pixels support
      <*> 24 bpp packed pixels support
      <*> 32 bpp packed pixels support
      <*> VGA characters/attributes support
       
  • Select compiled-in fonts
       
  •    VGA 8x8 font
       
  •    VGA 8x16 font



    2,我们还要知道自己所用的显示卡,也有 framebuffer的驱动,所以也要一并选中,比如
         <*>   nVidia Framebuffer Support     
         <*>   ATI Radeon display support

    在查看内核选项是,用 shift键+?号的组合键,就能看到详细情况;


    后记:我对 framebuffer原理不明白,以我的水平也根本懂不了;我写的东西可能在句法中不通或者说是一点也不对。我只能以我应用的来说明,仅此而已;一切都是为了应用;

    请弟兄们补充和订正,谢谢~

    参考资料:
    lilo说明文档,内核说明文档;grub说明文档等;
  • 发表于 2005-7-30 15:41:16 | 显示全部楼层
    补充一下,这种方法只适合老式的vesa设备,现在内核中已经添加了vesa-tng 设备,解决了字符界面下刷新率的问题,推荐使用,见内核说明:
    [PHP]CONFIG_FB_VESA_TNG:                                                     
      │                                                                        
      │ This is the frame buffer device driver for generic VESA 2.0            
      │ compliant graphic cards. It is capable of taking advantage of           
      │ VBE 3.0 features. With this driver you will be able to adjust           
      │ the refresh rate (VBE 3.0 compliant boards only) and change            
      │ the graphic mode on-the-fly.                                            
      │                                                                        
      │ You will also get a boot time penguin logo at no additional cost. Pleas
      │ read <fileocumentation/fb/vesafb.txt>.                                
      │                                                                        
      │ Symbol: FB_VESA_TNG [=y]                                                
      │ Prompt: vesafb-tng                                                      
      │   Defined at drivers/video/Kconfig:509                                 
      │   Depends on: <choice> && !X86_64
           Location:                                                            
            -> Device Drivers                                                   
              -> Graphics support                                             
                -> Support for frame buffer devices (FB [=y])                  
                  -> VESA VGA graphics support (FB_VESA [=y])                  
                    -> VESA driver type (<choice> [=y])                        
          Selects: FB_MODE_HELPERS[/PHP]

    当使用vesa-tng时,vga参数不再起作用,应使用如下格式
    [PHP]video=vesafb:mtrr,ywrap,pmipal,1024x768-16@85[/PHP]
    含义位1024x768分辨率,16位色,85Hz刷新率

    欢迎批评指正
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2005-7-30 15:59:47 | 显示全部楼层
    谢谢兄弟补充。

    兄弟能否说一下 vesa-tng 至少在哪个版本以上的内核存在吗?

    我刚才看了一下 FC4,系统自带的内核,没有发现
    回复 支持 反对

    使用道具 举报

    发表于 2005-7-30 16:08:34 | 显示全部楼层
    呵呵,忘了说了,这个需要打补丁,如果你用gentoo,用gentoo-sources就有,别的可以下载补丁,这个补丁可以用在2.6.12的内核上,别的版本没试过

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2005-7-30 20:50:47 | 显示全部楼层
    Post by meteoren
    呵呵,忘了说了,这个需要打补丁,如果你用gentoo,用gentoo-sources就有,别的可以下载补丁,这个补丁可以用在2.6.12的内核上,别的版本没试过

    谢谢啊,我的兄弟。

    这样这个帖子就差不多补全了吧。

    回复 支持 反对

    使用道具 举报

    发表于 2005-7-31 11:06:36 | 显示全部楼层
    再补充一 点:

    与 framebuffer 配套的有一个 fbset 工具,启动 fb 之后可以使用它更改显示模式。

    比如在 grub 里面设置为 1024x768,在需要的时候可以改为 800x600:

    # fbset 800x600-75

    详细说明见 man fbset。
    回复 支持 反对

    使用道具 举报

    发表于 2005-7-31 14:12:55 | 显示全部楼层
    太感谢了,我说怎么设置了video=。。  不管用呢, 原来是内核版本不对.
    其实也可以加载模块来实现。比如我的sis730集成显卡,
    在/etc/rc.d/rc.modules加上
    modprobe sisfb mode=1024x768x16 rate=75 mem=12288
    sisfb是sis显卡的framebuffer模块,需要依据自己的情况修改
    回复 支持 反对

    使用道具 举报

    发表于 2005-8-31 08:59:12 | 显示全部楼层

    如何使得字符界面的分辨率达到1024x768?

    在X下,我们用xorg.conf来控制分辨率。
    但是,现在我的机器在进入字符界面的时候(比如说,init 3),
    分辨率很低,有哪位兄弟知道如何调整?
    我该修改哪个文件?
    回复 支持 反对

    使用道具 举报

    发表于 2005-8-31 10:43:23 | 显示全部楼层
    我看了看文档,如果你的机器安装了对应显卡的驱动,
    似乎不能用video=vesafb,
    比如说,如果你是intel 915
    那么应该用video=intelfb:800x600-32@75,accel,hwcursor,vram=8,类似这样的模式。
    具体的说明在/usr/src/linux/Document/fb下。
    回复 支持 反对

    使用道具 举报

    发表于 2005-8-31 11:35:03 | 显示全部楼层
    Post by peter_huang
    在X下,我们用xorg.conf来控制分辨率。
    但是,现在我的机器在进入字符界面的时候(比如说,init 3),
    分辨率很低,有哪位兄弟知道如何调整?
    我该修改哪个文件?

    ------------------------------------------

    xorg.conf 是用来控制x窗口模式的 分辨率 对字符模式
    无效,还是要设置好framebuffer才可以。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表