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


23

我试图在运行Debian Squeeze的无头家庭服务器中使用PCMCIA调谐器卡。现在,由于我很难找到正确的命令行来捕获,使用VLC将视频转码结束流到网络,因此我遇到了很大的麻烦,因此我决定逐步进行操作,然后首先处理本地输出。

那就是问题所在:似乎没有可访问的帧缓冲设备(/ dev / fb0)在附加的屏幕上显示图形!确实,我注意到我在启动时没有Linux企鹅映像(在连接屏幕之前没有注意,但始终处于关闭状态,并且无论如何始终处于开机状态)。

由于我对Linux图形不是很熟悉,所以我想了解一下:

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

现在一些基本信息:

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

关于这个问题有什么想法/意见吗?


1
一旦/dev/fb0启动并运行,请务必接受我的回答。很少有在不太常见的主题上有实际经验的人,到处给出总部的答案。它们确实存在于UNIX-SE上,这是一个相对不常见的主题,因此专家较少。
JM Becker'3

Answers:


36

以前使用过Linux FB,我可以解决您的问题。

Linux如何执行其功能块。

  1. 首先,您需要在内核中具有与硬件相对应的FrameBuffer支持。大多数现代发行版都通过内核模块提供支持。您的发行版是否预配置了启动徽标都没关系,我不使用一个并具有FB支持。

  2. 如果您有专用的图形卡,则无关紧要,只要支持硬件帧缓冲,集成的显卡就可以工作。

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

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

特定于您的硬件

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

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

  3. 使用特定于旧版硬件的FB驱动程序,不建议使用,因为它们有时有故障。我将避免使用此选项,除非需要最后的手段。

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

希望我有所帮助,幸运的是您询问我的一个主题!在UNIX-SE上,这是一个被忽略的主题,因为并不是每个人(都知道)都使用Linux FrameBuffer。

注意:UvesaFB或VesaFB?

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


1
非常感谢您的回答!!!就深度和质量而言,这超出了我的期望!!当我能找到像您这样的帖子/答案时,我真的很感激,因为它们不仅为特定问题提供了解决方案,而且更重要的是,它们提供了内部工作的一般信息,可对相同或相关情况的其他人有所帮助!
Federico'3

1
关于我的问题,我将根据您的意见进行调查,并在获得令人满意的结果后立即在这里报告...
Federico

3
因此,我尝试了一下modprobe vesa(我记得在问这个问题之前曾尝试过),但是失败了,因为该模块在我的系统上不存在(FATAL: Module vesafb not found.)->必须了解这是否与我的硬件或Linux发行版有关(Debian Squeeze )。好消息是,modprobe uvesafb/dev/fb0设备可以工作并且可以制造设备。但是,现在我已经读完您的答案,我将尝试以正确的方式设置事物并找到KMS驱动程序……
Federico

1
我对您的评论投了赞成票,很高兴能为您提供帮助!为了解决您的最后一条评论,您对解决方案2的看法是不正确的。您可以绝对获得没有X的KMS,但是就像我说的那样,真正的答案实际上是淹没在垃圾中。正确的硬件模块的名称称为inteldrmfb,我通过快速研究发现了它。我一直使用ATI,因此与Intel GPU相关的支持并不是我的强项。您可能需要为其安装一个软件包,但是我将查找是否可以找到。
JM Becker'3

1
噢,等等,我犯了一个错误...我刚刚检查了我的Intel上网本,模块是i915,但是它确实加载了称为inteldrmfb的帧缓冲区。您可能需要安装软件包libdrm-intel1,或检查是否已安装。
JM Becker'3

10

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

首先,非常感谢所有贡献者,尤其是TechZilla,以及他提供的详细解释,我想我会早就放弃!

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

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

    # rmmod i915
    # modprobe i915 modeset=1
    

其实,你并不需要,如果你安装包做任何事情xserver-xorg-video-intel,它创建/etc/modprobe.d/i915-kms.conf包含options i915 modeset=1。但是,如果某人不想安装X(例如我的情况),则不会自动启用KMS,这说明了为什么未创建FrameBuffer设备的原因...


2
您仍然应该接受我的回答,因为“如何通过挤压打开KMS”不是您的最初问题。我相信我确实回答了您的第一个问题,并指出了您的预期目标。另一个原因,您只能获得对“其他”人的奖励。即使在没有人接近的情况下对自我奖励有好处,在这种情况下也没有意义。您可以保留答案,也可以整合有问题的信息。两种方式都可以。真的很高兴我帮了忙!我非常高兴您能使用KMS解决方案,因为它应该比普通的VESA更快。
JM Becker'3

1
我只是将接受的答案改回了您的答案!作为这里的新手,我不知道该怎么做:将解决方案放在问题本身中,对您接受的答案进行评论,或者发布为新答案。我认为通过创建一个新的可接受的答案,人们会先阅读问题,然后阅读您的答案,因为它具有更多投票权,然后它才是我的答案...
Federico

尽管另一个答案很彻底,但这应该是公认的答案。无论作者多么雄辩地乞求。
穆格

-2

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

压缩xvfb软件包的说明


1.这是一个“虚拟”帧缓冲区,而不是实际的直接硬件帧缓冲区。2.它的X服务器,并且具体的问题没有请求X.
JM贝克尔

-2

只要这是没有花哨的标准debian安装和标准内核,您就应该能够获得使用VGA控制台的租用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,它虽然不完美,但是它允许您在控制台上做一些精美的图形工作。


3
不,在许多情况下它不再起作用。这就是我一直在谈论的答案。如果使用GRUB2,则仅在使用旧式16减速引导时才有效。它已经过时了,至少您承认这一点,在实用上这意味着不要使用它进行新的设置。vga=如果禁用了硬件模块,/etc/modprobe.d/并且许多发行版都已预先配置,则旧的垃圾将无法启动。
JM Becker'3

因此,下一个问题是svgalib-bin是一个库,而不是“ / dev / fb0”设备。任何需要svgalib的东西都需要使用svgalib进行开发。它可以用于替换FB,但不能“从字面上”替换FB。我实际上在上次评论时犯了一个错误,当我说“无法启动”时,我的意思是“无法加载FB,很可能会回退到标准的vga”
JM Becker 2012年

3
这确实不是您的错,我们的社区留下了非常过时的文档。每个人都在互联网上模仿旧的答案,这使得对野兽的现代理解变得困难。许多人甚至简单地放弃了,因为真正的答案是新的,并且在多年不推荐使用的解决方案的掩盖下埋葬了。
JM Becker'3

1
使用压缩时,“ vga =”参数有效。我只是建议它是因为它很容易快速修复,而不是研究它所替代的东西。kernel.org/doc/Documentation/kernel-parameters.txt不显示“ vga =”。我知道的唯一原因是由于内核发出了几乎无法读取的启动消息……随之而来的是混乱……因此,根据kernel.org上的文字,不建议使用“ vga =“。我们要相信什么?
aseq 2012年

1
顺便说一句,我建议使用svgalib的原因是用户不想使用X。我了解svgalib的罪魁祸首,但其他选择很少。
aseq 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.