假设在一个有足够 RAM 的环境中有一个 Linux 实时 CD,哪种配置可以最大程度地提高 X 窗口系统的兼容性?
我有一张基于 SliTaz 4 的 Linux Live CD,我需要将其作为首要任务,高于一切,即始终引导至 X11 环境。因此,我正在寻找一种 Xorg 配置,该配置将与过去 10 年发布的任何显卡或嵌入式图形芯片组兼容。我不在乎它是否牺牲了性能、禁用了硬件加速、是否限制在某个分辨率 - 我想要的只是几乎保证它可以在任何地方的任何 PC 上加载。
为了实现这个目标,我应该使用什么 Xorg 配置,需要编译/安装哪些模块等等?最好不需要使用某些扩展或静态链接模块重新编译内核。
答案1
经过数周的研究、开发和现场测试,结论是 Xorg 根本没有 100% 兼容的模式、驱动程序或设置。Xorg 的 Vesa 驱动程序有点用,但距离保证合适还差得很远(没有任何配置,成功率约为 70%)。
Xorg 有一个基于帧缓冲区的驱动程序 Xfbdev,它保证几乎总是能正常工作(约 95-99% 的时间),但性能很差,而且基本上开发不足、文档不足、研究不足,而且通常无人使用。它必须使用在启动时设置的帧缓冲区,这意味着分辨率是固定的,一旦启动到 Linux 就无法更改。鉴于没有兼容的方法来禁用输出缩放,这意味着对于至少一定比例的用户来说,显示屏会被拉伸到不正确的纵横比,并且几乎总是无法匹配正确的原始显示分辨率。
Xvesa 虽然不再开发或维护(真丢脸!),但它却是最佳解决方案。它 100% 保证显示您的 UI,因为它会从 BIOS 中获取任何设置或黑客攻击,因此如果您可以看到 BIOS 启动画面,您就可以看到 Xvesa 显示屏。它具有(损坏的、不可靠的)分辨率自动检测功能,但真正的亮点是可以在启动 Linux 后(以及启动 Xvesa 后)更改分辨率。有不同的黑客攻击可以检测原始分辨率,从而调出原始分辨率。我发现解析输出--display-modes
实际上是一个相当好的解决方案,大约 95% 的时间,尽管我不明白为什么在我运行的 100% 的测试用例中自动检测都失败了,因为输出--display-modes
实际上是正确的。
最终,Linux 最接近自动配置显示设置 X 环境的是 Xvesa,而 X11 及其任何驱动程序都无法与之媲美。显然,X11 比 Xvesa 提供了许多功能和优势,但是对于许多人(尤其是制作 Live CD 的公司)来说,如果这些功能在默认启动环境中让用户有一半的时间使用控制台,那么这些功能就毫无用处。