如何检查帧缓冲区是否已启用

如何检查帧缓冲区是否已启用

我如何知道我是否启用了帧缓冲区?我其实不太明白什么是帧缓冲区。

我的/etc/initramfs-tools/conf.d/splash文件有这个:(echo FRAMEBUFFER=y因为我正在关注回答)。

显示两种检测是否启用的方法。ls -l /dev/fb*测试是肯定的,但grep -i "frame buffer" /var/log/syslog测试是否定的!哈哈哈哈XD

答案1

简而言之,有一部分内存负责保存屏幕的当前外观或“帧”,因此被称为framebuffer

在 Linux 下(如果我们还记得 Unix 的“万物皆文件”哲学),您可以以 root 身份写入的实际帧缓冲设备是/dev/fb0。图形 X 服务器和其他几个程序(例如fbi和)fbterm都能够写入它。我曾在此网站上使用过,以回答以下问题:

如何自定义全屏控制台背景(TTY)?

坦白说,我不太清楚你链接的答案为什么能通过/etc/initramfs-tools/conf.d/splash。根据,帧缓冲区支持将在内核模块中启用。以下是我的dmesg日志输出示例:它显示已分配帧缓冲区的内存,尽管我没有/etc/initramfs-tools/conf.d/splash

$ grep -i 'frame.*buffer' /var/log/dmesg                       
[    0.847413] vesafb: framebuffer at 0xd0000000, mapped to 0xffffc90001000000, using 3072k, total 3072k
[    1.016865] Console: switching to colour frame buffer device 128x48
[    1.185527] fb0: VESA VGA frame buffer device
[    7.648201] Console: switching to colour frame buffer device 170x48
[    7.730459] radeon 0000:01:05.0: fb0: radeondrmfb frame buffer device

也许你链接的答案适用于前几年引用的解决方案,但不能保证信息仍然相关——Linux 内核增加了对许多模块的支持,并更改为支持许多不同的硬件,因此潜在的解决方案已经改变

考虑问一个与 Nvidia 显卡相关的实际问题。这比弄清楚所有细节更能节省你的时间

答案2

您可以使用fbset实用程序(由 Debian 和 Ubuntu 中的 fbset 包提供)用于设置和显示各种帧缓冲区设置。使用--info( -i) 选项可以检查一些属性,如当前模式、驱动程序名称等。示例命令输出:

# fbset -i

mode "1024x768"
    geometry 1024 768 1024 768 32
    timings 0 0 0 0 0 0 0
    accel true
    rgba 8/16,8/8,8/0,0/0
endmode

Frame buffer device information:
    Name        : mgadrmfb
    Address     : 0
    Size        : 0
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 1
    YPanStep    : 1
    YWrapStep   : 0
    LineLength  : 4096
    Accelerator : No
# 

open /dev/fb0: No such file or directory因此,此工具可以告知您系统中的帧缓冲区是如何配置的。当没有帧缓冲区设备时,您会收到错误。

相关内容