我正在尝试在 2.6.31-14-generic #48-Ubuntu 上运行使用帧缓冲区的应用程序。
我需要做的就是安装一个帧缓冲设备来摆脱以下错误:
/dev/fb/0: No such file or directory
framebuffer not available.
FATAL: no framebuffer available
我搜索了 Google 并找到了一些资源指示如何在 Grub2 上执行此操作 - 尽管我无缝地遵循了它们,但我什么也没得到。
有任何想法吗?
答案1
您需要激活帧缓冲区驱动程序,该驱动程序默认情况下始终处于停用状态。
我配置了这些:
echo "fbcon" | sudo tee -a /etc/initramfs-tools/modules
echo "vesafb" | sudo tee -a /etc/initramfs-tools/modules
然后我注释掉了 vesafb(这适用于我听到的所有卡片)
/etc/modprobe.d/blacklist-framebuffer.conf
然后我们更新配置:
sudo update-initramfs -u -k all
我们快完成了。现在我们需要在帧缓冲区中查找卡支持的分辨率。您可能需要安装 hwinfo
sudo hwinfo --framebuffer
您可以看到分辨率及其十六进制代码。
e
现在您可以在启动时按下该键并添加vga=[hexadecimalcode]
(ef )或者在单词后面vga=0x346
使更改永久生效。/boot/grub/menu.lst
defoptions
我发现在接触 grub 配置之前尝试e
密钥以确保它能正常工作更为安全。
稍后,当您切换到tty
时Alt+F1-6
,它将采用您指定的分辨率。您可以使用fbi
和其他实用程序。
答案2
我以为 Ubuntu 有/dev/fbX
而没有/dev/fb/X
设备?
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"
$ ls -l /dev/fb/*
ls: cannot access 'fb/*': No such file or directory
$ ls -l /dev/fb*
crw-rw---- 1 root video 29, 0 авг 29 11:41 fb0
尝试使用其他名称运行该程序,或者,如果失败,则创建指向该文件的链接:
# mkdir /dev/fb
# ln /dev/fb0 /dev/fb/0
运行测试:
# sudo dd if=/dev/urandom of=/dev/fb/0
dd: writing to '/dev/fb/0': No space left on device
15001+0 records in
15000+0 records out
7680000 bytes (7,7 MB, 7,3 MiB) copied, 0,501639 s, 15,3 MB/s
# sudo dd if=/dev/urandom of=/dev/fb0
dd: writing to '/dev/fb0': No space left on device
15001+0 records in
15000+0 records out
7680000 bytes (7,7 MB, 7,3 MiB) copied, 0,523867 s, 14,7 MB/s
它在我的盒子上运行良好,但是 YMMV。