打开linux的framebuffer

转载 2015年07月08日 20:07:04

在Debian的/dev/目录下找不到fb0,fb等设备,可以改一下/boot/grub/menu.lst 文件
把kernel那句加上个vga=0x0317即可

title           Debian GNU/Linux, kernel 2.6.26-2-686
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet vga=0x0317
initrd          /boot/initrd.img-2.6.26-2-686

title           Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro single
initrd          /boot/initrd.img-2.6.26-2-686

reboot后,便有了/dev/fb0设备

其它版本的linux见下面的方法:
http://blog.csdn.net/yeqishi/archive/2010/05/09/5573097.aspx

Linux -Lilo 模式启动

确保您的 Linux 内核包含了 FrameBuffer 支持,并包含了 VESA FrameBuffer驱动程序。RedHat Linux 6.x 及以上的发行版自带的内核中已经包含了该驱动程序。如果使用自己编译的内核,请检查您的内核配置。如果使用 LILO 引导装载器,则需要修改 /etc/lilo.conf 文件,在您所使用的内核选项段中,添加如下一行(使用 GRUB 的用户请转到第 6 步):vga=0x0317

这样,Linux 内核在启动时将把显示模式设置为 1024x768x16bpp 模式。如果您的显示器无法达到这种显示分辨率,可考虑设置 vga=0x0314,它对应 800x600x16bpp显示模式。修改后的 /etc/lilo.conf 文件类似:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux
image=/boot/vmlinuz-2.4.2
vga=0x0317 ; 这一行设置显示模式.
label=linux
read-only
root=/dev/hda6
other=/dev/hda1
label=dos

运行 lilo 命令,使所作的修改生效,并重新启动系统:
lilo
reboot
如果一切正常,将在 Linux 内核的引导过程中看到屏幕左上角出现可爱的 Linux 吉祥物——企鹅,或者 RedHat Linux 的蓝天白云产品徽标,并发现系统的显示模式发生了变化。

Linux -Grub 模式启动

如果读者使用的是 Red Hat 7.x 或者更高版本,并且在安装 Red Hat 时使用了 GRUB
而不是 LILO 作为引导装载器,则设置 FrameBuffer 的方法会有一些不同:

第一,要激活 VESA FrameBuffer 驱动程序,需要修改 /boot/grub/menu.lst 文件,并在kernel 打头的一行添加 vga=0x0317。您也可以复制已有的引导选项并修改复制之后的选项,例如:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/hda1
# initrd /boot/initrd-version.img
#boot=/dev/hda

default=0
timeout=10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-3, FrameBuffer)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-3 ro root=/dev/hda1 vga=0x0317
initrd /boot/initrd-2.4.18-3.img
title Red Hat Linux (2.4.18-3)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-3 ro root=/dev/hda1
initrd /boot/initrd-2.4.18-3.img

其中Red Hat Linux (2.4.18-3, FrameBuffer) 就是设置了 VESA FrameBuffer 的引导选项。

第二,修改了 /boot/grub/menu.lst 文件之后,重新启动系统即可,而无需执行类似 lilo 那样的命令。

VGA参数表

hwinfo --framebuffer | grep Mode
Model: "NVIDIA GW-P/N@PM898486GTQ14P:0"
Mode 0x0300: 640x400 (+640), 8 bits
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+800), 8 bits
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x0307: 1280x1024 (+1280), 8 bits
Mode 0x030e: 320x200 (+640), 16 bits
Mode 0x030f: 320x200 (+1280), 24 bits
Mode 0x0311: 640x480 (+1280), 16 bits
Mode 0x0312: 640x480 (+2560), 24 bits
Mode 0x0314: 800x600 (+1600), 16 bits
Mode 0x0315: 800x600 (+3200), 24 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x0318: 1024x768 (+4096), 24 bits
Mode 0x031a: 1280x1024 (+2560), 16 bits
Mode 0x031b: 1280x1024 (+5120), 24 bits
Mode 0x0330: 320x200 (+320), 8 bits
Mode 0x0331: 320x400 (+320), 8 bits
Mode 0x0332: 320x400 (+640), 16 bits
Mode 0x0333: 320x400 (+1280), 24 bits
Mode 0x0334: 320x240 (+320), 8 bits
Mode 0x0335: 320x240 (+640), 16 bits
Mode 0x0336: 320x240 (+1280), 24 bits
Mode 0x033d: 640x400 (+1280), 16 bits
Mode 0x033e: 640x400 (+2560), 24 bits
Mode 0x0345: 1600x1200 (+1600), 8 bits
Mode 0x0346: 1600x1200 (+3200), 16 bits
Mode 0x0347: 1400x1050 (+1400), 8 bits
Mode 0x0348: 1400x1050 (+2800), 16 bits
Mode 0x0349: 1400x1050 (+5600), 24 bits
Mode 0x034a: 1600x1200 (+6400), 24 bits
Mode 0x0352: 2048x1536 (+8192), 24 bits
Mode 0x0360: 1280x800 (+1280), 8 bits
Mode 0x0361: 1280x800 (+5120), 24 bits
Mode 0x0362: 768x480 (+768), 8 bits
Mode 0x0364: 1440x900 (+1440), 8 bits
Mode 0x0365: 1440x900 (+5760), 24 bits
Mode 0x0368: 1680x1050 (+1680), 8 bits
Mode 0x0369: 1680x1050 (+6720), 24 bits
Mode 0x037c: 1920x1200 (+1920), 8 bits
Mode 0x037d: 1920x1200 (+7680), 24 bits

另Ubuntu开启

在Ubuntu中似乎不能直接在/boot/grub/menu.lst的内核参数中直接加入vga=xxx来开启Ubuntu FrameBuffer。需要做一些额外的工作。

1 编辑 /etc/initramfs-tools/modules,在其中加入:

fbcon
vesafb
vga16fb

2 编辑 /etc/modprobe.d/blacklist-Ubuntu FrameBuffer,注释掉以下两行:

blacklist vesafb
blacklist vga16fb

3 修改 grub 的 menu.lst ,在内核一行结尾加入fb分辨率参数:

vga=0x317
这样控制台即为 1024x768,16位。

4 刷新并重新启动

sudo update-initramfs -u

5 安装并设置 zhcon

sudo apt-get install zhcon
可以在 /etc/bash.bashrc 里加入
alias zhcon=’zhcon –utf8 –drv=fb’

现在 Ubuntu FrameBuffer 出来啦,打开 mplayer 享受以下控制台下看电影的乐趣吧。
Mplayer 在控制台下看视频要指定输出视频设备为 fbdev,由于设备普通用户无法直接访问,所以我这里只能 sudo 了。

linux 开启支持FrameBuffer--解决打开/dev/fb0失败的问题

linux 开启支持FrameBuffer--解决打开/dev/fb0失败的问题

Linux设备驱动之Framebuffer分析

  • 2010年08月22日 12:25
  • 2.03MB
  • 下载

Linux Framebuffer驱动框架之二软件架构(未完待续)

/***************************************************************************************************...
  • gqb666
  • gqb666
  • 2013年10月21日 21:32
  • 6113

linux framebuffer

  • 2012年02月13日 21:11
  • 860KB
  • 下载

LINUX_framebuffer_show_word

  • 2013年04月14日 11:39
  • 3.47MB
  • 下载

Linux Framebuffer驱动框架、接口实现和使用

一、LinuxFramebuffer的软件需求 1.针对SoC的LCD控制寄存器进行编程,以支持不同的LCD屏,以使该SOC的应用场景最大化。这是硬件平台相关的需求。其对应Linux源码路径arch...

Linux下FrameBuffer直接写屏

  • 2008年12月22日 14:16
  • 117KB
  • 下载

Linux Framebuffer 技术详解

  • 2011年10月14日 15:11
  • 66KB
  • 下载

linux中Framebuffer的原理及实现机制

linux中Framebuffer的原理及实现机制*一、FrameBuffer的原理*         FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。         L...
  • ce123
  • ce123
  • 2011年08月21日 09:24
  • 11684
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:打开linux的framebuffer
举报原因:
原因补充:

(最多只允许输入30个字)