没有帧缓冲设备:如何启用它?

Fed*_*ico 26 linux hardware graphics framebuffer

我正在尝试让 PCMCIA 调谐器卡在我的无头家庭服务器中运行,运行 Debian Squeeze。现在,由于我很难找到正确的命令行进行捕获,使用 VLC 将视频转码端流式传输到网络,因此我决定逐步进行,并首先处理本地输出。

这就是问题所在:似乎没有帧​​缓冲设备 (/dev/fb0) 可以访问以在附加屏幕上显示图形!事实上,我注意到我在启动时没有 Linux penguin 映像(之前没有注意,因为屏幕已连接,但始终关闭,无论如何计算机始终处于开启状态)。

由于我对Linux图形不太熟悉,我想了解:

  • 这是否与我的特定硬件有关(见下文)?还是它特定于 Debian Squeeze/内核版本/...?
  • 是否需要手动安装/加载某些驱动程序?

现在一些一般信息:

  • 计算机没有专用显卡,而是嵌入式图形芯片组(Intel G31 Express),嵌入在主板上(技嘉 G31M-ES2L)
  • 我不想安装一个全功能的 X 服务器,只是有一个用于这个特定测试的帧缓冲设备

关于这个问题的任何想法/评论?

J. *_*ker 39

我可以解决您的问题,之前曾与 Linux FB 合作过。

Linux 如何做它的 FB。

  1. 首先,您的内核中需要有 FrameBuffer 支持,与您的硬件相对应。大多数现代发行版都通过内核模块提供支持。如果您的发行版预先配置了启动徽标并不重要,我不使用它并且有 FB 支持。

  2. 如果您有专用显卡并不重要,只要支持硬件帧缓冲区,集成就可以工作。

  3. 您不需要 X,这是拥有 FrameBuffer 最诱人的方面。有些人不太清楚,所以他们提倡某种形式的 X 来解决他们的误解。

  4. 您不需要直接使用 FB,许多人错误地认为这一点。一个非常棒的用 FrameBuffer 开发的库,DirectFB它甚至有一些基本的加速支持。我总是建议至少检查一下,如果你正在开始一个功能齐全的基于 FB 的项目(Web 浏览器、游戏、GUI ...)

特定于您的硬件

  1. 使用 Vesa Generic FrameBuffer,其模块称为vesafb. 如果可用,您可以使用命令加载它 modprobe vesafb。许多发行版预配置它禁用,您可以签入/etc/modprobe.d/blacklist vesafb可能需要用#, 在 ablacklist-framebuffer.conf或其他黑名单文件中注释掉。

  2. 最佳选项是特定于硬件的 KMS 驱动程序。英特尔的主要模块是英特尔 GMA,不确定其模块的名称。您需要从发行版文档中阅读有关它的信息。这是性能最好的 FB 选项,如果可能的话,我个人总是先使用 KMS。

  3. 使用旧硬件特定的 FB 驱动程序,不推荐使用,因为它们有时有问题。除非万不得已,否则我会避免使用此选项。

我相信这涵盖了您的所有问题,并且应该提供信息以使该/dev/fb0设备可用。任何更具体的内容都需要分发详细信息,如果您有一定的经验,RTFM 应该就是您所需要的。(阅读本文后)。

我希望我有帮助,你很幸运你问了我的主题之一!这是 UNIX-SE 上的一个被忽视的主题,因为并非每个人(有意)都使用 Linux FrameBuffer。

注意:UvesaFB 还是 VesaFB?

您可能已经读过人们使用uvesafbover vesafb,因为它具有更好的性能。这通常是正确的,但在具有现代硬件的现代发行版中并非如此。如果您的图形硬件支持保护模式 VESA (VESA >= 2.0 ),并且您有一个较新的内核vesafb,那么现在是更好的选择。

  • 所以我尝试了`modprobe vesa`(我记得在在这里提出问题之前尝试过)它失败了,因为我的系统上不存在该模块(`FATAL:Module vesafb not found.`)-->必须了解是否这与我的硬件或我的 Linux 发行版(Debian Squeeze)有关。好消息是`modprobe uvesafb` 可以工作并创建`/dev/fb0` 设备。但是,既然我已经阅读了您的回答,我将尝试以正确的方式进行设置并找到 KMS 驱动程序... (3认同)

Fed*_*ico 11

我终于找到了解决我的问题的方法!!

首先,非常感谢所有做出贡献的人,尤其是 TechZilla 以及他提供的详细解释,如果没有这些解释,我想我早就放弃了!

所以基本上所有需要做的就是modeset=1i915内核模块加载时启用模式设置( ) 。这可以通过通常的方式完成:

事实上,如果你安装 package xserver-xorg-video-intel,你不需要做任何事情,这会创建/etc/modprobe.d/i915-kms.conf包含options i915 modeset=1. 但是,如果有人不想安装 X(就像我的情况),那么 KMS 不会自动启用,这就解释了为什么没有创建 FrameBuffer 设备......

  • 您仍然应该接受我的回答,因为“如何通过挤压打开 KMS”不是您最初的问题。我相信我确实回答了您最初的回答,并为您指明了预期的道路。另一个原因,您只能通过奖励“其他”人的答案来获得积分。尽管如果没有人接近,自我奖励是件好事,但在这种情况下,这没有意义。你可以保持你的答案发布,或者整合有问题的信息。无论哪种方式都可以。真的很高兴我帮了忙!我真的很高兴你让 KMS 解决方案工作,因为它应该比普通的 VESA 更快。 (2认同)