VMware虚拟机跑Linux系统无/dev/fb0解决办法

2019-07-13 01:09发布

在Ubuntu 10.10版本中如何利用framebuf来驱动fb0设备

[日期:2011-04-10] 来源:Linux社区  作者:aahhddjj [字体:  ] 在利用framebuffe来虚拟出个显示器设备fb0,这个问题想了很久,终于在网上找到答案并且试验成功记录下来,以防以后再忘了。 虽然framebuffer有很多局限性,比如在内核启动之后就无法修改分辨率,但是通过framebuffer这个内核抽象出来的设备文件可以很方便的控制显卡,显示图像。   由于framebuffer是显卡的抽象,因此向 /dev/fb0(假设是fb0),就相当于向显存写数据,因此无论你是在什么环境下屏幕都会被覆盖掉,但是同时还有其他进程和你争抢显卡的显示权,因此需要一种方式独占显卡的使用权限,这个也是我找了很久才发现的。 对framebuffer的操作很容易从网上找到例子,我这里简单说一下   1.在未开启framebuffer的linux系统下开启framebuffer(以Ubuntu 9.04alpha6为例)   开启framebuffer需要修改以下几个文件,你可以在在命令行里用vi编辑,也可以个用gedit,我个人还是推荐后者。 注意在进行下一步操作之前必须先改一下文件的权限,默认是只读。   sudo gedit /etc/initramfs-tools/modules   在最后面新起两行加入   fbcon   vesafb 在这个文件中里面好多#,记住上面要加的两行前面不能有#,否则给注释掉了。   sudo gedit /etc/modprobe.d/blacklist-framebuffer.conf   执行上面指令之前必须先得修改权限。默认是只读的。     注释掉(前面添加一个#)   blacklist vesafb 这个很容易发现,直接注释掉就可以。   同时还要注释掉你的显卡驱动,我的是nVidia 补充:找不见可以用该指令查看:sudo lshw 这里再补充说一下,你可以在windows下查看自己的显卡型号(N或T)在里面找到注释掉就可以了。   sudo gedit /boot/grub/menu.lst 这一行指令,在ubuntu10.10版本中没有meun.lst了现在改成了grub.cfg,所以在这必须这样来:sudo gedit /boot/grub/grub.cfg   在kernel启动参数的行末尾添上 vga=0x317 (1024x768,16位,你也可以使用别的分辨率模式) 注:vga=0×314 即为800*600 16位
终端的分辨率可以用fbset设置。
   |640x480 800x600 1024x768 1280x1024
----+-------------------------------------
256 | 0x301   0x303 0x305 0x307
32k | 0x310   0x313 0x316 0x319
64k | 0x311   0x314 0x317 0x31A
16M |0x312  0X315  0x318 0X31B 上面这些我没有测试过,我用的是0X31B,你们自己根据自己显卡设置。 在ubuntu10.10中的grub.cfg中没有了kernel了,在里面找到这条语句: linux   /boot/vmlinuz-2.6.35-25-generic root=UUID=cabcaf02-31fd-487d-b90c-08c8faaaa2d8 ro   quiet splash (vga=0x31B)括号里面是自己加上的,估计这个文件也得改权限。特别提示在里面找可以用“splash”作为关键词查找或定位。
  然后   sudo update-initramfs -u   重新启动就可以了! 到这基本就搞定了。



 

VMware虚拟机跑Linux系统无/dev/fb0解决办法

标签: devfb0linuxLinuxLINUXubuntuUbuntu  780人阅读 评论(0) 收藏 举报  分类: 版权声明:本文为博主原创文章,未经博主允许不得转载。     最近在做摄像头的视频采集显示与处理,需要用到Frame Buffer的图形显示。我们知道在Linux系统应用中,可以通 过对“/dev/fb0 ”操作把数据显示在屏幕上,比如摄像头的图像采集,可以通过设备名“/dev/video0“来打开摄像头, 对其操作,通过内存映射可以直接读取视频信息,然后通过对设备“/dev/fb0”的操作让图像直接显示在屏幕上。系统 中的/dev/fb0就是Frame Buffer的设备文件。     可是却很蛋疼的发现VMware虚拟机装的Linux系统一般默认都没启动这个/dev/fb0设备,装了几个版本的Linux皆木 有。乖乖奇了怪了,于是乎我准备寻究其原因。其实这时已经怀疑是虚拟机的特殊原因,因为自己的OK6410开 发板中是有/dev/fb0这个设备的,网上也有很多介绍fb0的用法,为啥我的系统就是木有呢。为了排除是不是虚拟机的 原因,我找来实验室的一个台式机,在上面装了Linux系统,经过一会儿等待安装完成,很兴奋打开终端进入/dev目 录,果然有fb0。此时也就纳闷了,平时习惯使用笔记本,那么怎么把VMware下的Linux系统中的/dev/fb0搞出来呢? 经过网上搜索,也有个别方法,但都过于复杂,最终在一个国外的Linux论坛里找到了最简单的解决办法。并在 Fedora 9、Fedora 11、Ubuntu 9.10系统均测试可行。 下面进入正题,介绍具体步骤: Step1: #chmod 777 /boot/grub/grub.cfg  //给此路径给以最大的访问权限 Step2: #gedit /boot/grub/grub.cfg  //在grub.cfg文件中搜索splash,在其后加入 vesafb:mtrr,ywrap vga=0x***保存退出即可,重启搞定。 注:vga=0x***具体参数通过下表查找: 示意图:

Ubuntu系统内添加fb0

2013年10月01日 ⁄ 综合 ⁄ 共 1762字 ⁄ 字号    ⁄ 评论关闭 我用的系统是虚拟机下的ubuntu 9.0 最近在做视频方面的研究,初步采用framebuffe用来显示采集视频,可是查看时却不存在/dev/fb0 在网上得到建议是用下面命令添加就可以,即:mknod /dev/fb0 c 29 0 该命令执行后,肯定能够在/dev目录下产生fb0节点,可是这样产生的fb0却是不能够用的。 所以好几天我尝试找出应该怎么解决,今天看了下面一个文章,经过我稍加修改,这个问题终于解决了,写下来和大家分享,顺便我也做一个备忘! http://www.linuxidc.com/Linux/2011-04/34442.htm 在利用framebuffe来虚拟出个显示器设备fb0,这个问题想了很久,终于在网上找到答案并且试验成功记录下来,以防以后再忘了。   虽然framebuffer有很多局限性,比如在内核启动之后就无法修改分辨率,但是通过framebuffer这个内核抽象出来的设备文件可以很方便的控制显卡,显示图像。   由于framebuffer是显卡的抽象,因此向 /dev/fb0(假设是fb0),就相当于向显存写数据,因此无论你是在什么环境下屏幕都会被覆盖掉,但是同时还有其他进程和你争抢显卡的显示权,因此需要一种方式独占显卡的使用权限,这个也是我找了很久才发现的。 framebuffer的操作很容易从网上找到例子,我这里简单说一下   1.在未开启framebufferlinux系统下开启framebuffer(Ubuntu 9.04alpha6为例)   开启framebuffer需要修改以下几个文件,你可以在在命令行里用vi编辑,也可以个用gedit,我个人还是推荐后者。 注意在进行下一步操作之前必须先改一下文件的权限,默认是只读。   sudo gedit /etc/initramfs-tools/modules   在最后面新起两行加入   fbcon   vesafb 在这个文件中里面好多#,记住上面要加的两行前面不能有#,否则给注释掉了。   sudo gedit /etc/modprobe.d/blacklist-framebuffer 执行上面指令之前必须先得修改权限。默认是只读的。     注释掉(前面添加一个#)   blacklist vesafb 这个很容易发现,直接注释掉就可以。   同时还要注释掉你的显卡驱动,我的是nVidiafb 补充:找不见可以用该指令查看:sudo lshw 这里再补充说一下,你可以在windows下查看自己的显卡型号(NT)在里面找到注释掉就可以了。   sudo gedit /boot/grub/menu.lst 这一行指令,在Ubuntu10.10版本中没有meun.lst了现在改成了grub.cfg,所以在这必须这样来:sudo gedit /boot/grub/grub.cfg   在kernel启动参数的行末尾添上 vga=0x317 (1024x76816位,你也可以使用别的分辨率模式) 注:vga=0×314 即为800600 16
终端的分辨率可以用fbset设置。
   |640x480 800x600 1024x768 1280x1024
----+-------------------------------------
256 | 0x301
   0x303 0x305 0x307
32k | 0x310
   0x313 0x316 0x319
64k | 0x311
   0x314 0x317 0x31A
16M |0x312  0X315  0x318 0X31B 上面这些我没有测试过,我用的是0X31B,你们自己根据自己显卡设置。 Ubuntu10.10中的grub.cfg中没有了kernel了,在里面找到这条语句: linux   /boot/vmlinuz-2.6.35-25-generic root=UUID=cabcaf02-31fd-487d-b90c-08c8faaaa2d8 ro   quiet splash vga=0x31B)括号里面是自己加上的,估计这个文件也得改权限。特别提示在里面找可以用“splash”作为关键词查找或定位。   然后   sudo update-initramfs -u 重新启动就可以了! 重启后,#ls /dev/ 则会看到/dev/fb0添加进去了! 到这基本就搞定了。














http://blog.csdn.net/harryching/article/details/8511164