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

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

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

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

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

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

现在一些一般信息:

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

对这个问题有什么想法/评论吗?

答案1

我之前曾使用过 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/。可能需要在 a或其他黑名单文件中用 ,blacklist vesafb注释掉。#blacklist-framebuffer.conf

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

  3. 使用旧版硬件特定的 FB 驱动程序,不推荐,因为它们有时会出现错误。我会避免这种选择,除非有最后的手段。

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

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

注意:UvesaFB 还是 VesaFB?

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

答案2

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

首先,非常感谢所有贡献者,特别是 TechZilla 和他提供的详细解释,如果没有这些,我想我早就放弃了!

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

  • 通过GRUB的内核参数,
  • 通过配置文件/etc/modprobe.d
  • 或在命令行:

    # rmmod i915
    # modprobe i915 modeset=1
    

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

答案3

只要这是一个标准的 debian 安装,没有任何花哨的东西和标准内核,您应该能够获得一个使用帧缓冲设备的 VGA 控制台,其内核参数如“vga=792”(即 24 位 1024×768) )。当然,内核将其报告为已弃用,但它确实有效。

http://www.kernel.org/doc/Documentation/kernel-parameters.txt对于内核参数。有趣的是,“vga=”参数表并未显示为已弃用。

确保在更改后重新运行 update-grub(2) 等。

另请查看http://packages.debian.org/squeeze/svgalib-bin它并不完美,但它允许您在控制台上做一些奇特的图形工作。

答案4

您可以尝试像 Xvfb(X 虚拟帧缓冲区)这样的虚拟帧缓冲区。

挤压中xvfb包的说明

相关内容