答案1
简而言之,有一部分内存负责保存屏幕的当前外观或“帧”,因此被称为framebuffer
。
在 Linux 下(如果我们还记得 Unix 的“万物皆文件”哲学),您可以以 root 身份写入的实际帧缓冲设备是/dev/fb0
。图形 X 服务器和其他几个程序(例如fbi
和)fbterm
都能够写入它。我曾在此网站上使用过,以回答以下问题:
坦白说,我不太清楚你链接的答案为什么能通过/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
因此,此工具可以告知您系统中的帧缓冲区是如何配置的。当没有帧缓冲区设备时,您会收到错误。