根据网上查询的资料,然后结合自己安装的过程,作以记录,方便下次用到。
一 软件安装
1.下载DirectFB与DirectFB-example
Direct官方网站:http://www.directfb.org/
2.解压缩这两个档案
tar -zxf DirectFB-1.6.2.tar.gz
tar -zxf DirectFB-examples-1.6.0.tar.gz
3.安装必要的package
如果要自行安装DirectFB,则需要autoconf与automake等工具。
sudo apt-get installautoconf
sudo apt-get installlibtool(autoreconf会用到)
4.安装DirectFB-1.6.2
1) cd DirectFB-1.6.2
2) ./configure
a) 如果在./configure这步出现下面的提示:
PNG support is missing - many applications won't work correctly!
JPEG support is missing - many applications won't work correctly!
解决:sudo apt-cache search libpng
sduo apt-get install libpng12-dev
sudo apt-cache search libjpeg
sudo apt-get install libjpeg62-dev
3) make
a) 报错:
libtool: Version mismatch error. This is libtool 2.4.2 Debian-2.4.2-1ubuntu1, but the
libtool: definition of this LT_INIT comes from libtool 2.2.6b.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.2 Debian-2.4.2-1ubuntu1
libtool: and run autoconf again.
解决:
autoreconf --force --install
./configure
b) make, 报错:
../../libtool: line 984: g++: command not found
解决:sudo apt-get -y install g++
c) make, 报错:
libtool: link: unsupportedhardcodeproperties
libtool: link: See the libtool documentation for more information.
libtool: link: Fatal configuration error.
解决:
./configure
make clean
make
安装DirectFB-example的过程与DirectFB大致一样,这里我就不再赘述。
我只将--enable-debug的选项打开,其它则采用它的默认值。
cd ~/DirectFB-examples-1.6.0
autoreconf
./configure--enable-debug
make
sudo make install
二
最新的内核已经支持framebuffer,只需要启动是指定相关参数 ,比如 “vga=分辨率 ” 就可以了。具体设置方法如下:
vi/etc/default/grub
1、找到如下的行,GRUB_CMDLINE_LINUX="" 在里面加入楼上说的vga=**, 结果如下:
GRUB_CMDLINE_LINUX="vga=792"
2、另外还有一行要设置一下:
GRUB_GFXMODE=1024x768
该行原来是注释掉的,需要设置的分辨率与上面的 vga=792一致。
3、更新grub配置文件,如下
sudoupdate-grub
重新启动后在其他tty就可以使用framebuffer了,比如按alt+ctrl+F1 进入一号虚拟终端么,登录之。
4、另外普通用户要设置一下vedio观看的权限, 比如:
sudochmod o+rw /dev/fb0
5、软件需求fbi即可
sudo apt-getinstall fbi
三无 论是ati显卡还是nvidia显卡,在ubuntu10.04系统上启用受限驱动 (或手动安装官方驱动),都会导致开机splash分辨率变低的问题。由于这问题在ubuntu10.04上很普遍,所以也就有很多牛人为我们提供了解决 方法,下面是我在ubuntu中文论坛上看到的(参考上面给出的三个帖子),并且亲自试验并成功解决问题的一个整理方案。
1、安装v86d和hwinfo包,下面我们要用到。
sudo apt-get install v86d hwinfo
2、查看自己显卡支持的分辨率。
sudo hwinfo --framebuffer
None 00.0: 11001 VESA Framebuffer
[Created at bios.464]
Unique ID: rdCR.QOJHFkjgnM2
Hardware Class: framebuffer
Model: "(C) 1988-2005, ATI TechnologiesInc. M92"
Vendor: "(C) 1988-2005, ATI TechnologiesInc. "
Device:"M92"
SubVendor: "ATI ATOMBIOS"
SubDevice:
Revision: "01.00"
Memory Size: 16 MB
Memory Range: 0xd0000000-0xd0ffffff (rw)
。。。
Mode 0x03ee: 1366x768 (+1408), 8 bits
Mode 0x03ef: 1366x768 (+2752), 16 bits
Mode 0x03f0: 1366x768(+5504), 24 bits
Config Status: cfg=new, avail=yes, need=no,active=unknown
3、修改/etc /default/grub文件,使用uvesafb的framebuffer来启动。
sudo gedit /etc/default/grub
把下面的两行
GRUB_CMDLINE_LINUX_DEFAULT="quietsplash"
#GRUB_GFXMODE=640×480
修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quietsplash nomodeset video=uvesafb:mode_option=1366x768-24,mtrr=3,scroll=ywrap"
(ps:其中的nomodeset禁用内核 kms,个人见解)
GRUB_GFXMODE=1366x768
这个要根据第2步所查到的显卡所支持的最大分辨率 (当然也可以是其他支持的分辨率)来修改,注意要把前面的#去掉。
4、修改/etc/initramfs-tools/modules文件。
sudo gedit /etc/initramfs-tools/modules
添加下面这行:
uvesafb mode_option=1366x768-24 mtrr=3scroll=ywrap
(ps:这一步的修改与上一步中的第1处修改关联 一致)
5、运行下面的命令,启用 framebuffer。
echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
6、运行下面的命令,更新grub配置以及 initramfs镜像文件。
sudo update-grub
sudo update-initramfs -u
7、重启。
相 关问题及解决方法:
按照上述步骤操作后确实解决了开机splash分辨率低的问题,不过还有另外一个问题:无法正常使用虚拟控制台 (tty1-6),即切换到虚拟控制台——“黑屏”。
确实这样修改后出现登陆不了console的情况,需要添加vga=XXX参数。
其实,这个问题应该也是使用官方的闭源驱动(或受 限驱动)造成的,即不是上述的操作导致的。
相应的,上述步骤的第3步修改中添加vga=xxx参数。
GRUB_CMDLINE_LINUX_DEFAULT="quietsplash nomodeset video=uvesafb:mode_option=1366x768-24,mtrr=3,scroll=ywrap vga=792"
四
环境变量设置
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
ldconfig
五 重启电脑后
cd DirectFB-examples-1.6.0/src/
./df_andi //成功运行企鹅的实例。
参考文章:http://blog.youkuaiyun.com/ndhui/article/details/7109806