当我启动 Ubuntu touch 时,出现以下错误并且挂起:
“FrameBuffer::post eglMakeCurrent 失败”
仅当我使用专有显示驱动程序时才会发生这种情况。
所以我理解这可能是与驱动程序相关的问题,超出了 Canonical 的控制范围。因此我正在寻找一种解决方法来避免这种情况.(也许可以通过禁用模拟器中的 GPU 渲染?)
当涉及到应用程序开发时,这种情况就非常不舒服。
Ubuntu Touch 版本:Trusty Thar
主机操作系统:Trusty Thar
ubuntu-emulator 版本:0.2+14.10.20140429.1-0ubuntu1
我的 GPU:AMD Mobility Radeon HD 5430
谢谢你的帮助!
答案1
这里建议了四个选项。
1. 暂时禁用 GRUB 启动菜单中的帧缓冲区
进行此更改不会对您已安装的系统产生影响,并且被认为是安全的。如果您重新启动系统,此更改将消失。这是暂时的。
正常启动计算机,几秒钟后您将看到 GRUB 启动加载程序菜单。
正常启动计算机,几秒钟后您将看到 GRUB 启动加载程序菜单。
- 使用箭头键,突出显示要编辑的标题(第一个 Ubuntu 条目应该可以),然后按“e”进入条目编辑器界面。现在您将看到所选标题的启动条目。
- 再次使用箭头键突出显示“kernel”行,然后按“e”编辑该行。
- 添加(不带引号)“vga=normal nomodeset”,然后按回车键退出编辑模式。
- 按“b”键启动系统。
笔记:要取消更改,请按 Esc 键直到出现主菜单。
2. 在 GRUB 配置文件中永久禁用帧缓冲区
请参阅下面的“在 GRUB 中设置不同的帧缓冲区分辨率”。
3. 在 CMOS/BIOS 中禁用帧缓冲区 进行此更改不会影响您已安装的系统。但是,更改将保留,直到您将设置改回原样。
本 wiki 不会详细介绍此选项,原因很简单;许多系统都有不同的 BIOS 和版本。如何进入 BIOS 以及在何处进行更改可能会有很大差异。
- 输入您的 BIOS
- 找到帧缓冲区引用并禁用它
- 保存设置并重新启动系统
- 正常启动 Ubuntu 系统
4. 安装时禁用帧缓冲区
安装 Ubuntu 系统时,您可以告诉 Ubuntu 安装程序不要使用帧缓冲区。在开始菜单中输入 F6,然后添加不带引号的“vga=711”,然后按回车键。
在旧版本的 GRUB 中设置不同的帧缓冲区分辨率
笔记: 现代版本的 GRUB 从保存/etc/grub.d/
在参数文件 下的部分构建其配置文件/etc/default/grub
。要对现代 GRUB 进行更改,您需要了解如何更改文件/etc/default/grub
,然后运行update-grub
以创建新的 GRUB 配置文件/boot/grub/grub.cfg
。下面描述的更改menu.lst
仅适用于旧版本的 GRUB。
在 GRUB 的配置文件中,/boot/grub/menu.lst
您可以为帧缓冲区设置不同的分辨率,或者禁用它。
您必须添加到所选菜单项的“内核...”行中的选项是“vga=value”(不带引号)。
- 在内核行中添加“vga=normal”或“nofb”将禁用帧缓冲区
- 如果“nofb”没有帮助,请尝试“nomodeset”来禁用内核模式设置
- 添加“vga=ask”将使您能够在每次启动时设置一个值 - 适合测试各种模式。
因此,要禁用帧缓冲区,请在 menu.lst 中使用的活动内核的内核行中输入“vga=normal”或“nofb”,然后重新启动。每次更新内核版本或 GRUB 本身时,您都需要重新编辑 menu.lst 文件。这些更改将仅针对此特定 GRUB 条目禁用帧缓冲区;要针对所有内核禁用它们,请参见下文。
示例(仅适用于旧版本的 GRUB):
title Ubuntu, kernel 2.6.15-20-386
root (hd0,4)
kernel /boot/vmlinuz-2.6.15-20-386 root=/dev/hda5 ro nofb
initrd /boot/initrd.img-2.6.15-20-386
savedefault
boot
对于其他分辨率,请参阅以下列表:
Colour depth 640x480 800x600 1024x768 1280x1024 1400x1050 1600x1200
8 (256) 769 771 773 775
15 (32K) 784 787 790 793
16 (65K) 785 788 791 794 834 884
24 (16M) 786 789 792 795
因此,要使用分辨率为 1024x768 且颜色深度为 16 位的帧缓冲区,您需要将“vga=791”(同样不带引号)添加到内核行(您正在使用的活动内核 - 每次更新内核版本时,您都需要重新编辑 menu.lst)。示例:
title Ubuntu, kernel 2.6.15-20-386
root (hd0,4)
kernel /boot/vmlinuz-2.6.15-20-386 root=/dev/hda5 ro vga=791
initrd /boot/initrd.img-2.6.15-20-386
savedefault
boot
只需在所有内核的 menu.lst 文件中禁用帧缓冲区即可
可以修改 menu.lst 文件以禁用所有内核和所有新内核的帧缓冲区。/boot/grub/menu.lst
使用您喜欢的任何编辑器编辑该文件,并具有 sudo 权限。请务必备份原始文件,以防万一您真的搞砸了。
sudo cp /boot/grub/menu.lst /boot/grub/menu.list.backup_date
sudo nano /boot/grub/menu.lst
我们对以下几行感兴趣。最后一行是需要更改的。请注意,与其他配置文件不同,2 个注释 ## 标记实际上是 Grub 和 update-grub 命令的注释。一个 # 只是 grub 的注释,但它是 update-grub 命令的配置行。请务必小心,确保 # 中的 # 正确无误。
## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
## The following Line is the default for all kernels. Yours may vary the nofb option disables the framebuffer
## the nosplash option also disables the fancy splash screen. You may want to disable this to allow easier troubleshooting of the system
# defoptions=quiet nosplash nofb
一旦最后一行按您的需要编辑完毕,您需要以 root 权限运行 update-grub 命令,以便使用新选项修复所有 grub 内核条目。
sudo update-grub
现在应该为所有当前和新内核禁用帧缓冲区。
其他帧缓冲区工具和调整
*此部分需要扩展*
本 wiki 的大部分内容都是关于如何禁用帧缓冲区,但它确实有一些实际用途。帧缓冲区设备允许的一些功能包括:-无需安装 X 系统即可在控制台上播放视频。-一些游戏可以使用帧缓冲区 -自定义控制台背景以包含徽标和其他图像 -无需安装 X 即可使用图像查看器。-甚至可以将 X 配置为使用帧缓冲区设备而不是特定的视频卡驱动程序。
如果确实希望使用和探索帧缓冲区,该fbset
命令允许人们动态地更改帧缓冲区的几个设置。
sudo apt-get install fbset
要查看具有帧缓冲区功能的其他应用程序(非完整列表),请按照以下步骤操作。
apt-cache search framebuffer | less
Mplayer 和其他播放器也可以支持帧缓冲。
~来源~