一、概述
近期在学习FrameBuffer
相关内容,想在Vmware虚拟机
打开Ubuntu 12.04
的系统使用一下,发现没有/dev/fb0
的文件,于是上网搜索解决办法,在此记录一下解决过程。下图是使用的 Ubuntu版本以及找不到/dev/fb0
的打印。
二、没有/dev/fb0
的可能原因
1、有些文章说,是因为安装在 VMware虚拟机 才会出现这种情况,直接安装到电脑上,就不会出现 “找不到/dev/fb0的情况”。
2、有可能是Ubuntu的版本比较旧,我用了另一台电脑的虚拟机安装了Ubuntu 14.04的版本,里面有 /dev/fb0 文件。
三、解决过程
我试过的有效的解决办法就是修改/boot/grub/grub.cfg
文件,修改后重启就可以了,首先输入这个命令打开文件 :
sudo vi /boot/grub/grub.cfg
然后,搜索splash
,可以看到原本splash
后面是一个变量vt_handoff
的值,如图:
现在,把splash
后面的值注释掉,改为vesafb:mtrr,ywrap vga=0x315
,如下图:
修改后,保存退出。然后执行sudo reboot
重启,重启后就可以看到/dev/fb0
文件。
四、vesafb:mtrr,ywrap vga=0x315
的解释
vesafb
是英特尔盒子上图形帧缓冲区的通用驱动程序,使用vga=…
boot参数切换模式。mtrr
、ywrap
是vesafb
的设置选项;vga=
后面的0x315
是Linux内核的视频模式编号。完整的编号如下图:
关于vesafb的更多信息可以参见这个内核文档:
https://www.kernel.org/doc/html/latest/fb/vesafb.html
最后,说一下,修改内核文件会有风险,要做好备份,不同的环境可能不一样,最好可以先在没用的系统试一下没问题再到开发的机器使用。
如果文章对你有帮助的话 ,点个赞让我知道一下 ^_*