最近要在Linux做基于frame Buffer的图形显示,不论我在独立分区的Linux FC6系统中,还是在装有Red hat9的VPC中,都无法打开/dev/fb0。从网上找了很多资料,都没能解决。经过几天的的郁闷之后,终于解决了这个问题。先记录如下:

    1、首先确认对Frame Buffer的支持是否编译到Linux的内核中。在安装的Linux中,默认都会把这个支持打开编译到内核中。但是如果自己重新编译了内核,或者升级内核,得确认把Frame Buffer的支持编入内核,并且还要把Console display driver support编译到内核中,还要把Logo configuration编译到内核中。这些选项都在Device drivers下的graphics support选项下。
    2、在启动项中打开对Frame Buffer的支持。由于虽然把对Frame Buffer的支持编译到内核中了,但是默认下是没有打开的。故要修改/boot/grub/menu.lst文件。在该文件的kernel那一行后面加上vga=0xXXX,0xXXX表示的是屏幕的分辨率和色彩数。
    其中vga=0x后面的数值可以从下表中查出。
色彩数 640 X 480 800X600 1024X768 1280X1024
256 0x301 0x303 0x305 0x307
32k 0x310 0x313 0x316 0x319
64k 0x311 0x314 0x317 0x31A
16M 0x312 0x315 0x318 0x31B
    我原先的/boot/grub/menu.lst文件如下:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to
this file
# NOTICE:  You have a /boot
partition.  This means that
#         
all kernel and initrd paths are relative to /boot/, eg.
#         
root (hd0,0)
#         
kernel /vmlinuz-version ro root=/dev/hda3
#         
initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
  root (hd0,0)
  kernel /vmlinuz-2.6.18 ro
root=LABEL=/ 
  initrd /initrd-2.6.18.img
title Red Hat Linux (2.4.20-8)
  root (hd0,0)
  kernel /vmlinuz-2.4.20-8 ro
root=LABEL=/ 
  initrd /initrd-2.4.20-8.img
   
因为我对red
hat9升级了一个2.6.18的内核,故有两个启动项。修改后,如下:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to
this file
# NOTICE:  You have a /boot
partition.  This means that
#         
all kernel and initrd paths are relative to /boot/, eg.
#         
root (hd0,0)
#         
kernel /vmlinuz-version ro root=/dev/hda3
#         
initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
  root (hd0,0)
  kernel /vmlinuz-2.6.18 ro
root=LABEL=/ vga=0x311
  initrd /initrd-2.6.18.img
title Red Hat Linux (2.4.20-8)
  root (hd0,0)
  kernel /vmlinuz-2.4.20-8
ro root=LABEL=/ vga=0x311
  initrd /initrd-2.4.20-8.img
 
   
3、重启系统。然后运行cat
/dev/fb0,如果发现有一堆乱码输出在屏幕上,则表示找到了/dev/fb0这个设备。如果没有,则可能是你的显卡不支持。
   
通过上述操作以后,我的虚拟机中的Linux和独立分区装的Linux都可以打开/dev/fb0了。最后还说一句,打开/dev/fb0是在控制台下打开,在XWindow界面下能打开,但是操作屏幕缓存区画图的时候,会不正确。
 
 
解决方法:
解决方法如下:
目前可得到的绝大多数linux版本所发行的内核中,已经预编译了FrameBuffer支持,通常不需要重新编译内核就可以使用,但要进行一些配置才能使用.

具体如下:

如果你是安装了grub,那就进入boot\grub里面, 在一个启动选项里面加入vga = xxx,这样就可以应用framebuffer了。
例如:

title Debian (2.4.20 Framebuffer + RUwireless)

kernel (hd0,0)/bzImage-2.4.20fbruwireless root=/dev/hda7 hdc=ide-scsi vga=791 console=tty1

设置vga的值要注意了,这个值是要与分辨率对应的,具体对应值看后面.当你配置成功之后,重启之后就可以看到屏幕出现了一个小企鹅.

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

colour depth ¦ 640x480 800x600 1024x768 1280x1024

256 (8bit) ¦ 769 771 773 775

32000 (15bit) ¦ 784 787 790 793

65000 (16bit) ¦ 785 788 791 794

16.7 Mill. (24bit) ¦ 786 789 792 795

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

注意:当你设置得系统不支持的分辨率或色深时,会造成不能显示图形界面的,那怎么办呢?所以要配置时,最好就新建一个启动选项title,这样在设置失败之后,重启都可以利用以前的配置进入系统,重新配置.

 
以上是别人的解决方案,下面是我的:
我用的是debian,参照上面的方法,我修改了 /boot/grub/grub.cfg文件,修改如下内容:
 
 
 
 
然后重新启动系统即可在/dev下看到fb0这个设备结点。
 

解决/dev/fb0无法打开的问题的更多相关文章

  1. /dev/fb0入门练习

    转:http://hi.baidu.com/fsx92/item/bdbf90d8adab409f260ae738 大家都知道Unix/Linux系统是由命令驱动的.那么最基本的系统是命令行的(就是想 ...

  2. atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php

    atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 .打开浏览服务器文件夹java .net php 1. 环境:::项目java web,需要打开浏览服 ...

  3. 解决双击excel文件打开多个excel.exe进程的问题

    解决双击excel文件打开多个excel.exe进程的问题有些时候,双击两个excel文件,会打开多个excel进程,不同进程之间不能复制粘贴公式,只能粘贴数值,很不方便.怎么样双击多个excel文件 ...

  4. 解决“google快照无法打开”的简单而有效的方法~

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/yangle20081982/article/details/25892553        解决&q ...

  5. [vuejs] 终端npm run dev 不能自动打开浏览器运行项目解决办法

    终端执行: npm run dev 出现: I Your application is running here: http://localhost:8080 但并没有打开浏览器运行项目 解决办法: ...

  6. vue中npm run dev 不能自动打开浏览器运行项目

    最近用vue2.0 + webpack搭建了环境创建新的项目.出现一个很蹩脚的问题: 在终端输入 npm run dev 的时候,不能自动打开浏览器运行项目. 这段话的意思是:你的应用程序运行地址是: ...

  7. 解决vs创建或打开C++浏览数据库文件*.sdf时发生错误的问题

    VS2012,  创建或打开C++浏览数据库文件*.sdf时发生错误. IntelliSense 和浏览信息将不能用于C++项目. 请确保已安装 Microsoft SQL Server Compac ...

  8. 解决vs崩溃 无法打开工程 新建工程显示未找到约束

    一般是因为windows更新引起的,可以删除与.net framework有关的更新补丁如果补丁太多可以试试如下方法: 解决方法: 1.关闭VS: 2.去C:/Users/<your users ...

  9. 解决windows 10无法打开.hlp帮助文件的问题

    最近学习UML,使用的Rational Rose 7.0,使用帮助时,才发现windows 10无法打开.hlp的帮助文件.虽然win10默认定向到微软支持页面,但发现通过下载补丁来查看hlp文件,实 ...

随机推荐

  1. java版云笔记(七)之事务管理

    事务管理 事务:程序为了保证业务处理的完整性,执行的一条或多条SQL语句. 事务管理:对事务中的SQL语句进行提交或者回滚. 事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的 ...

  2. C++随笔(2)

    在牛客网上刷题,遇到的一些需要注意的题 1.这题需要注意的是strcpy复制的时候什么时候停止 2.这题是关于strlen的,它不统计‘\0',但复制的时候仍会复制. 3.这题是写strcpy函数的, ...

  3. HDU-2222

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. Jmeter----连接mysql数据库及常见问题处理

    jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包,(注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连接失败报错) 本人的数据为5.7.18, ...

  5. Python 的十个自然语言处理工具

    原文 先mark,后续尝试. 1.NLTK NLTK 在用 Python 处理自然语言的工具中处于领先的地位.它提供了 WordNet 这种方便处理词汇资源的借口,还有分类.分词.除茎.标注.语法分析 ...

  6. 监控属性数组(Observables Arrays )

    如果你想发现并响应一个对象的改变,就应该用监控属性(observables).如果你想发现并响应一个集合的变化,就该用监控属性数组 (observableArray).监控属性数组在显示或编辑多个值以 ...

  7. elementUI 学习入门之 inputNumber 计数器

    InputNumber 计数器 基础用法 <el-input-number v-model="num2"></el-input-number> v-mode ...

  8. 2017年浙江中医药大学大学生程序设计竞赛(重现赛)D - CC的神奇背包

    题目描述 cc最近收到了好多礼物,对着满地大小不一的礼物,她想要一个包来装,于是dd就掏出了一个会说话的神奇背包给cc装礼物.cc为了一次性装尽可能多的礼物,于是跟这个背包定下了一个规则,对每个礼物, ...

  9. 请画出Servlet 2.2以上Web Application的基本目录结构

    Java web工程下的webapp或WebContent就是工程的发布文件夹,发布时会把该文件夹发布到tomcat的webapps里. 一个web应用必须要有的目录文件如下: webapp/WebC ...

  10. TCP 的那些事儿-1

    TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是推荐你去 ...