目前xf86-video-vmware显卡驱动不支持最新的xorg-server 1.7.3,表现为启动黑屏。bug报告见
http://bugs.gentoo.org/show_bug.cgi?id=292634
我做了一个ebuild来临时解决。
步骤如下:
1. 在/etc/make.conf中加一行
- PORTDIR_OVERLAY="/usr/local/portage"
复制代码
如果已经有了则不用再加
2.建立overlay目录
- mkdir -p /usr/local/portage/x11-drivers/
复制代码
3.复制xf86-video-vmware的ebuild到overlay
- cp -rf /usr/portage/x11-drivers/xf86-video-vmware /usr/local/portage/x11-drivers/
复制代码
4.新增本人自制ebuild文件,先运行命令行
- nano -w /usr/local/portage/x11-drivers/xf86-video-vmware/xf86-video-vmware-10.16.8-r1.ebuild
复制代码
然后把如下代码粘贴进nano编辑器,按Ctrl+X确认保存退出。(用ssh访问你的linux粘贴起会方便一点)
- # Copyright 1999-2009 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- # $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-video-vmware/xf86-video-vmware-10.16.8.ebuild,v 1.1 2009/10/03 11:59:20 scarabeus Exp $
- # Must be before x-modular eclass is inherited
- #SNAPSHOT="yes"
- inherit x-modular
- DESCRIPTION="VMware SVGA video driver"
- KEYWORDS="~amd64 ~x86 ~x86-fbsd"
- IUSE=""
- RDEPEND=">=x11-base/xorg-server-1.0.99.901"
- DEPEND="${RDEPEND}
- x11-proto/fontsproto
- x11-proto/randrproto
- x11-proto/renderproto
- x11-proto/xextproto
- x11-proto/xineramaproto
- x11-proto/xproto"
- src_unpack() {
- unpack ${A}
- cd "${S}"
- epatch "${FILESDIR}"/vmware-new-r1.patch
- }
复制代码
或者直接下载附件1 : xf86-video-vmware-10.16.8-r1.ebuild
5.生成补丁文件,执行命令行: nano -w /usr/local/portage/x11-drivers/xf86-video-vmware/files/vmware-new-r1.patch
然后把如下代码粘贴进nano编辑器,按Ctrl+X确认保存退出
- diff --git a/src/vmware.c b/src/vmware.c
- index 6004677..b5a5099 100644
- --- a/src/vmware.c
- +++ b/src/vmware.c
- @@ -146,38 +146,6 @@ static PciChipsets VMWAREPciChipsets[] = {
- { -1, -1, RES_UNDEFINED }
- };
- -static const char *vgahwSymbols[] = {
- - "vgaHWGetHWRec",
- - "vgaHWGetIOBase",
- - "vgaHWGetIndex",
- - "vgaHWInit",
- - "vgaHWProtect",
- - "vgaHWRestore",
- - "vgaHWSave",
- - "vgaHWSaveScreen",
- - "vgaHWUnlock",
- - NULL
- -};
- -
- -static const char *fbSymbols[] = {
- - "fbCreateDefColormap",
- - "fbPictureInit",
- - "fbScreenInit",
- - NULL
- -};
- -
- -static const char *ramdacSymbols[] = {
- - "xf86CreateCursorInfoRec",
- - "xf86DestroyCursorInfoRec",
- - "xf86InitCursor",
- - NULL
- -};
- -
- -static const char *shadowfbSymbols[] = {
- - "ShadowFBInit2",
- - NULL
- -};
- -
- #ifdef XFree86LOADER
- static XF86ModuleVersionInfo vmwareVersRec = {
- "vmware",
- @@ -640,8 +608,6 @@ VMWAREPreInit(ScrnInfoPtr pScrn, int flags)
- return FALSE;
- }
- - xf86LoaderReqSymLists(vgahwSymbols, NULL);
- -
- if (!vgaHWGetHWRec(pScrn)) {
- return FALSE;
- }
- @@ -959,7 +925,6 @@ VMWAREPreInit(ScrnInfoPtr pScrn, int flags)
- VMWAREFreeRec(pScrn);
- return FALSE;
- }
- - xf86LoaderReqSymLists(fbSymbols, shadowfbSymbols, NULL);
- /* Need ramdac for hwcursor */
- if (pVMWARE->hwCursor) {
- @@ -967,7 +932,6 @@ VMWAREPreInit(ScrnInfoPtr pScrn, int flags)
- VMWAREFreeRec(pScrn);
- return FALSE;
- }
- - xf86LoaderReqSymLists(ramdacSymbols, NULL);
- }
- return TRUE;
- @@ -2051,9 +2015,6 @@ vmwareSetup(pointer module, pointer opts, int *errmaj, int *errmin)
- setupDone = TRUE;
- xf86AddDriver(&VMWARE, module, VMWARE_DRIVER_FUNC);
- - LoaderRefSymLists(vgahwSymbols, fbSymbols, ramdacSymbols,
- - shadowfbSymbols, NULL);
- -
- return (pointer)1;
- }
- if (errmaj) {
复制代码
或者直接下载附件2 : vmware-new-r1.patch
6.进入overlay目录,生成数字签名
- cd /usr/local/portage/x11-drivers/xf86-video-vmware/
- ebuild xf86-video-vmware-10.16.8-r1.ebuild digest
复制代码
7.重新编译新的xf86-video-vmware包,按确认前看看是不是提示升级成x11-drivers/xf86-video-vmware-10.16.8-r1这个包,是就对了。
- emerge -av xf86-video-vmware
复制代码
8.startx或其它方式启动X,看是不是解决黑屏了。 |