一段时间以来,wine 无法在我的 64 位 Linux 上初始化 OpenGL。这绝不是我独有的问题 - 许多使用 nvidia 显卡运行 64 位 Linux 的人似乎在 oneiric 上使用 wine 时都遇到了这个问题:
- http://forum.winehq.org/viewtopic.php?p=66856&sid=9d6e5ad628ee6fb6e5ef04577275daed
- http://forum.pinguyos.com/Thread-Wine-OpenGl-Problem
- https://bbs.archlinux.org/viewtopic.php?id=137696
虽然一些启动板错误报告说应该使用这种解决方法:
LD_PRELOAD=/usr/lib32/nvidia-current/libGL.so.1 wine <app>
不幸的是,它根本不能解决我的问题;也就是说,如果我运行 CS:S,游戏会运行一段时间,但一段时间后就会中止,包括一系列与 GLSL 相关的错误。
以下是简单运行 steam 时出现的启动错误:
+ wine steam.exe
fixme:process:GetLogicalProcessorInformation ((nil),0x33e488): stub
[.. snip ...]
fixme:dwmapi:DwmSetWindowAttribute (0x1009a, 3, 0x33d384, 4) stub
fixme:dwmapi:DwmSetWindowAttribute (0x1009a, 4, 0x33d374, 4) stub
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
[... this error is being reported a few dozen times, so snip again ...]
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
fixme:iphlpapi:NotifyAddrChange (Handle 0x47cdba8, overlapped 0x45dba80): stub
fixme:winsock:WSALookupServiceBeginW (0x47cdbc8 0x00000ff0 0x47cdbc4) Stub!
[... snip ...]
以下是运行时和运行后报告的错误(因为日志很大,所以粘贴在其他地方):http://paste.ubuntu.com/901925/
现在,32 位 OpenGL 运行良好;例如,Nexuiz 的 32 位可执行文件运行良好。话虽如此,我怀疑这是 wine 本身的问题。
我已经手动构建了 wine 的 git 版本,但无济于事。
那么发生了什么事?有什么东西坏了吗?我该如何(正确地)检查是否有东西坏了?我该如何解决这个问题?
附加信息:
我的GPU:
$ lspci | grep VGA 01:00.0 VGA compatible controller: nVidia Corporation G92 [GeForce 9800 GT] (rev a2)
通过 DPKG 安装(使用“Ubuntu X-Swat”PPA:https://launchpad.net/~ubuntu-x-swat/+archive/x-updates)。
- 驱动程序版本:295.33
- 错误还但是,手动安装最新驱动程序时会出现这种情况。
- glxinfo:http://paste.ubuntu.com/906976/
- 来自 mesa-utils 的 32 位可执行文件的 glxinfo(
apt-get download
已编译和解压等):http://paste.ubuntu.com/906980/
wine 版本:wine-1.5.0(从 GIT 存储库手动构建,但预构建版本会触发相同的错误,如上所述)
桌面环境:KDE4.2,但在 GNOME 和 XFCE 下也会出现同样的错误。
内核内容(
uname -a
):Linux leuchtturm 3.0.0-17-generic #30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
尝试了干净的葡萄酒前缀(
WINEPREFIX=$HOME/tmp/wine wine ...
),也没有帮助。
更多可能相关的信息:
当从我打开的一个旧错误运行 Direct3D 应用程序时,wine 根本没有报告任何 OpenGL 错误:http://bugs.winehq.org/attachment.cgi?id=25707(包含源代码,这只是一个非常简单的测试应用程序)。
我不确定到底发生了什么事。
答案1
好吧,这几乎迫使我回答我自己的问题,但事实证明,OpenGL 错误是相对地无害;升级 ia32-libs[1] 使得 steam 工作得非常顺畅(也就是说,它现在可以像这些错误发生之前一样工作)。
因此,如果其他人遇到这些错误,请升级您的 GPU 驱动程序,并升级 ia32-libs。
[1]:我偶然发现了一个 ia32-libs PPA,它有一个较新的 ia32-libs 包,它也许可以修复一些取决于 32 位兼容性的其他软件的问题:http://radicalbreeze.com/forum/viewtopic.php?f=11&t=525
要添加此 PPA,只需在终端中执行此操作:
sudo add-apt-repository ppa:micove/experimental
(experimental
因为另一个不包含 oneiric 及更新版本的软件包,尤其是 pangolin)。