Dgservice.exe是什么进程?无法被结束的驱动精灵“后门”程序

相信很多朋友和笔者一样会在新系统中安装驱动更新软件,而dgservice.exe便是我们安装驱动精灵后产生的:

dgservice.exe进程基本信息
程序厂商:驱动之家
进程描述:驱动精灵软件“更新”
进程属性:不是Windows系统进程
使用网络:有
启动情况:自动启动且无法结束

说到驱动精灵,很多有过重装系统或者安装驱动的朋友都应该使用过,不过笔者之前一直在用驱动人生,上次不知道为什么装系统时就下了驱动精灵。而当我们安装完驱动精灵后dgservice.exe程序便会出现在任务管理器中;作为一个对电脑洁癖的用户我显然不愿意看到任何莫名其妙的程序出现在电脑里面,而当我试图通过windows任务管理器结束dgservice.exe进程时却发现这个程序是无法被任务管理器结束的,而这引发了我的担忧,我不禁想:驱动精灵作为一个驱动安装和检测软件,为什么需要一个程序自用户电脑开机后边在用户毫不知情的情况下运行呢?我下意识的认为这是驱动精灵的流氓行为,并将这一点与驱动精灵的官方驱动之家这个商业站以及其余金山公司之间的关系联系到了一起。

关于dgservice.exe的功能,在笔者的windows7系统的任务管理器中已经有所描述“硬件驱动系统服务,为驱动精灵提供驱动升级提醒,新硬件驱动支持”,为了验证这一点我将自己的智能手机接通电脑后,驱动精灵的确马上做出了反应,提示我在电脑上安装手机驱动。这看起来很给力,其实不然,因为我装过很多次系统,用这个手机连电脑不是一次两次,在没有驱动精灵的情况下windows系统就能识别并安装驱动,因此对用户而言驱动精灵dgservice.exe程序是完全没必要的,因为驱动安装完后这类软件完全可以被删除,而后的功能实数多余的鸡肋。

当然,在中国这个流氓软件横行的IT环境下,dgservice.exe的功能有多百分之多少是为用户做实事,百分之多少为“泄密后门”就要看“运气”了,不然就不会出现在没有任何提醒和关闭选项下就自动运行且无法被终止的行为,在笔者印象中这还是第一次遇到(杀毒软件除外)。

Synaptics公司标志

SynTPEnh.exe是什么进程?及如何识别SynTPEnh.exe病毒?

发现任务管理器中有SynTPEnh.exe进程?为何在运行?会是病毒吗?一起来了解下SynTPEnh.exe是什么进程

SynTPEnh.exe进程基本信息
程序厂商:Synapitcs公司
进程描述:Synaptics Pointing Device
进程属性:不是Windows系统进程
使用网络:没有
启动情况:通常开机自动启动

来历及作用

Synaptics公司标志SynTPEnh.exe进程程序文件是由总部位于美国加利福尼亚州圣塔克拉拉市Synapitcs公司(成立于1986年的全球知名人机界面交互开发解决方案设计制造公司)为其Pointing Device(游标控制装置)发布的驱动程序,被描述为:Synaptics Pointing Device Driver(Synaptics的指点设备驱动程序)。SynTPEnh.exe程序功能主要是为Synaptics触控板/指点控制设备实现一套额外的配置选项(定义按键功能和增强不断变化的敏感性),并会在电脑的任务栏显示一个托盘图标,如下图所示:

Synaptics的SynTPEnh.exe图标

SynTPEnh.exe会随着给电脑安装驱动程序时而被一起安装到系统中。戴尔、联想、ThinkPad和惠普等许多著名笔记本生产商都使用了由Synapitcs设计生产的触控板和指点杆(似乎在诺基亚的Windows Phone 8系统等移动设备中也有应用),因此其部分设备之中会有这个控制程序。

所以大家如果采用了这些品牌的计算机设备,在Windows管理器中看到SynTPEnh.exe进程不必奇怪,对于这些电脑而言这是一个必要的控制和调节触控设备的程序。如果你不希望看到本进程自动运行,可以在运行(快捷键Windows 徽标键+R)中输入“msconfig”然后将这个服务停止并禁用掉即可。

SynTPEnh.exe病毒

目前来看还鲜有相关病毒感染的实例,但不排除一些病毒正在利用和程序一样或类似的名词进行传播,对此我们可通过以下几点方法对其进行鉴别:

  • 没有使用Synapitcs公司触控设备的电脑上出现本进程;
  • 有两个或更多个SynTPEnh.exe同时在运行;
  • 本进程无法被关闭,或者在卸载Synapitcs触控驱动程序之后依然会自动运行;

若出现以上情况请及时更新杀毒软件病毒库对电脑进行全盘查杀,必要时可考虑重装系统。

Rthdcpl.exe是Realtek声卡音频控制面板

RtkHDAud.sys是什么文件?及RtkHDAud.sys蓝屏等问题介绍

似乎很多用户会因为电脑出现没声音或玩游戏时出现RtkHDAud.sys相关的蓝屏等问题而开始了解到这个文件的,下面就一起了解下本文件属性及蓝屏等问题的解决办法:

RtkHDAud.sys文件基本信息:
开发人员:瑞昱半导体股份有限公司
文件描述:Realtek®声卡驱动文件
可否删除:否,删除会导致声卡失效
位置在哪:C:\Windows\System32

来历及作用

RtkHDAud.sys程序文件是台湾的著名半导体公司:瑞昱半导体股份有限公司为其声卡设备提供的驱动程序的一部分。全称为:Realtek® High Definition Audio Function Driver(瑞昱®高保真音频功能驱动程序),作为Windows系统的驱动程序为与电脑拦截的硬件或连接外部设备进行通信。如果我们的电脑安装了Realtek声卡,并成功安装Realtek声卡驱动程序后本文将就会出一同被存储在电脑的硬盘中,其位置为:

C:\Windows\System32(C为系统盘盘符,会根据系统安装位置不同而变化)

另外,RtkHDAud.sys似乎是被压缩过的文件,而且其文件大小也会根据驱动版本的不同而有所变化。拓展阅读:Rthdcpl.exe是什么进程

常见问题

蓝屏现象:一般都是要使用到声卡程序的程序导致的,比如一些游戏,或者一些音乐播放软件等,这些都是经过验证的实例。因此大家可以借鉴其解决办法:重新安装声卡驱动、设置游戏或播放软件的声音功能。Pagefile.sys是什么文件?

不到RtkHDAud.sys:出现此类问题通常出现在更新驱动的时候,半有电脑没声音的现象。考虑到可能是现有驱动文件受损或丢失所致,重新安装驱动即可解决。可用驱动精灵或驱动人生进行更新,或者直接去声卡制造商的官方网站下载安装。

危险的病毒:特别是在位于C:\Windows或C:\Windows\System32目录中出现RtkHDAud.sys文件时需要保持警惕,如果不是自己下载的应该使用杀毒软件对本文件进行扫描。

WUDFHost.exe进程

WUDFhost.exe是什么进程?它为什么运行?

有时我们打开Windows系统任务管理器会看到里面有个WUDFhost.exe进程在运行,那WUDFhost.exe是什么进程呢?

WUDFhost.exe进程基本信息:
程序厂商:微软® Microsoft Corp.
描述:用户模式驱动程序框架主机进程
进程属性:Windows系统进程;
网络使用:没有;
所在位置:C:\Windows\System32

来历及作用

WUDFHost.exe进程Windows 7任务管理器中的WUDFHost.exe进程WUDFhost.exe进程程序文件是由微软®公司为其发布的Windows操作系统定义的系统进程,被描述为:Windows 驱动程序基础 – 用户模式驱动程序框架主机进程,已知是Windows XP/Vista/2008 Server和Windows 7操作系统的一部分。这是一个后台进程(不需用户干预的情况下运行于操作系统后台的计算机进程),当Windows与硬件设备通信时,将创建WUDFHost.exe进程来加载设备的驱动程序软件,比如穆童在Win7系统中测试,当启动Windows Media Player(一款多媒体播放器)时WUDFHost.exe进程便会一起启动,当我关闭Media Player时次进程自动终止运行。(延伸:Wdfmgr.exe是什么进程?

虽然WUDFhost.exe不是Windows系统的核心进程,但是由于关系到Windows与硬件设备的正常通讯,所以不建议大家将其终止(事实上也无法在任务管理器将其终止)。而通常情况下WUDFhost.exe进程以LocaL SERVICE用户名安全的运行,如果你发现用户名有变化或程序文件不在Windows\System32目录下时应保持警惕,它们可能是木马病毒。

Rthdcpl.exe是Realtek声卡音频控制面板

Rthdcpl.exe是什么进程?及如何识别Rthdcpl.exe病毒?

本文需要解答的问题:Rthdcpl.exe是什么进程?它来自哪里又为何会运行在我的电脑里?我将为你尽可能详细的解答,本文并不长也很容易理解。

如果你在Windows任务管理器中发现有Rthdcpl.exe进程存在,这说明你电脑采用了瑞昱半导体公司的声卡产品,你可以放心,这是一个安全的进程。

来历及作用

Rthdcpl.exe是Realtek声卡音频控制面板Rthdcpl.exe进程是来自台湾的著名半导体公司:瑞昱半导体股份有限公司为其声卡设备提供的驱动及设置控制程序。它有一个专用名称:Realtek HD音频音效管理器,也是Realtek HD音频控制面板的组成部分,Rthdcpl.exe会随着你给电脑Realtek声卡安装驱动而一起安装。在功能上我们可以用它来修改Realtek音频设备的设置从而控制声音的表现。默认安装的话此进程应该被保存在这个位置:

C:\Windows (C:代表系统安装所在分区盘符)

Rthdcpl.exe进程并非系统文件及核心进程,并且它在运行的时候只占用很少的系统资源。如果你尝试在任务管理器中禁止该进程很有可能会导致电脑没有声音(不同的版本可能不同)。虽然终止后它不会自动启动,但还是会随着你下次启动电脑时而启动。如果你不希望它随开机启动启动可以通过在“系统配置”项中的“启动”栏目中将其禁止(禁止后依然可以通过系统的控制面板访问),方法如下:

打开“运行”输入msconfig打开“系统配置”对话框,切换到“启动”栏去掉Realtek即可

病毒及安全

虽然Rthdcpl.exe进程不是一个系统进程,但也不幸的被黑客盯上;目前已经有安全厂商截获过相关病毒。不过别担心,我们可以利用一下方法快速有效的识别出相关病毒:

  1. 此进程的运行位置不对;
  2. 在任务管理器中发现多个在运行;
  3. 电脑并没有用到瑞昱半导体的Realtek声卡;

第一种情况可能并不太准确,但如果是第二种:任务管理器中有两个Rthdcpl.exe进程就很有可能感染病毒了(可以利用上面的“系统配置”禁止Rthdcpl.exe启动来识别二者真伪);而出现第三种被感染的可能性也是相当大的。如果你的系统出现这三种情况建议时用更新杀毒软件病毒库后对系统全盘查杀。好了,到这里你应该对Rthdcpl.exe是什么进程有所了解了。

禁止结束进程

Windows内核学习之进程保护器(防止任务管理器结束进程)

写了三天左右,思路什么的都很清晰,真正实现的时候就各种问题,蓝屏蓝到麻木了,幸好是虚拟机,半年前就打算看驱动了,因为各种原因耽搁了,现在什么都要重新来,这篇文章就当是开门贴吧。

主要功能:防止任务管理器结束进程。

主要原理:HOOK SSDT表中的NtOpenProcess,如果传入的是保护进程的PID,则返回无效句柄。

这个Windows进程保护器的主要界面如下:

防止任务管理器结束进程

利用此程序实现的禁止任务管理器中结束进程的效果图:

禁止结束进程

实现过程总结

应用程序层:

//为listcontrol添加右键菜单
#ifndef GET_X_LPARAM
#define GET_X_LPARAM(lParam) ((int)(short)LOWORD(lParam))
#endif
#ifndef GET_Y_LPARAM
#define GET_Y_LPARAM(lParam) ((int)(short)HIWORD(lParam))
#endif
case WM_CONTEXTMENU:
{
UINT xPos;
UINT yPos;
HWND hwndContext;
hwndContext = (HWND)wParam;
HWND hWndlist= GetDlgItem(hDlg, IDC_PROCESS_LIST);
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
// 来自 hWndlist 的消息
if(hwndContext == hWndlist)
{
// 非右键点击
if (xPos == -1 || yPos == -1)
{
break;
}
HMENU hMenu=LoadMenu(hIns,MAKEINTRESOURCE(IDR_MENU1));
HMENU hMenuTrackPopup=GetSubMenu(hMenu,0);
TrackPopupMenu(hMenuTrackPopup,TPM_LEFTALIGN | TPM_RIGHTBUTTON,xPos,yPos, 0, hDlg, NULL);
DestroyMenu(hMenu);
}
// 做你自己的事
break;
}
TrackPopupMenu倒数第二个参数,要为当前对话框的句柄,否则无法响应菜单ID。
//初始化listcontrol

VOID ListIni(HWND hDlg)
{
HWND hWndlist;
LVCOLUMN ColInfo1 = {0};
LVCOLUMN ColInfo2 = {0};
LVCOLUMN ColInfo3 = {0};
LVCOLUMN ColInfo4 = {0};
LVCOLUMN ColInfo5 = {0};
hWndlist= GetDlgItem(hDlg, IDC_PROCESS_LIST);
SendMessage(hWndlist, LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES);
ColInfo1.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT;
ColInfo1.iSubItem = 0;
ColInfo1.fmt = LVCFMT_CENTER;
ColInfo1.cx = 100;
ColInfo1.pszText = "进程名";
ColInfo1.cchTextMax = 50;
ColInfo2.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT;
ColInfo2.iSubItem = 0;
ColInfo2.fmt = LVCFMT_CENTER;
ColInfo2.cx = 50;
ColInfo2.pszText = "PID";
ColInfo2.cchTextMax = 50;
ColInfo3.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT;
ColInfo3.iSubItem = 0;
ColInfo3.fmt = LVCFMT_CENTER;
ColInfo3.cx = 80;
ColInfo3.pszText = "EPROCESS";
ColInfo3.cchTextMax = 50;
ColInfo4.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT;
ColInfo4.iSubItem = 0;
ColInfo4.fmt = LVCFMT_CENTER;
ColInfo4.cx = 210;
ColInfo4.pszText = "路径";
ColInfo2.cchTextMax = 50;
ColInfo5.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT;
ColInfo5.iSubItem = 0;
ColInfo5.fmt = LVCFMT_CENTER;
ColInfo5.cx = 50;
ColInfo5.pszText = "状态";
ColInfo5.cchTextMax = 50;
::SendMessage(hWndlist, LVM_INSERTCOLUMN, WPARAM(0), LPARAM(&ColInfo1));
::SendMessage(hWndlist, LVM_INSERTCOLUMN, WPARAM(1), LPARAM(&ColInfo2));
::SendMessage(hWndlist, LVM_INSERTCOLUMN, WPARAM(2), LPARAM(&ColInfo3));
::SendMessage(hWndlist, LVM_INSERTCOLUMN, WPARAM(3), LPARAM(&ColInfo4));
::SendMessage(hWndlist, LVM_INSERTCOLUMN, WPARAM(4), LPARAM(&ColInfo5));
}
//与驱动间的通信
传入要保护的进程PID数组
bRet = DeviceIoControl(hDevice, IOCTL_PROTECTPROCESS_CONTROL, ProPid, sizeof(ULONG)*100,
NULL,0,&dwOutput, NULL);
//从驱动中获取当前进程列表
bRet = DeviceIoControl(hDevice, IOCTL_GETPROCESS_CONTROL,&de, sizeof(ULONG),ProcessList,
sizeof(_ProcessList)*100,&dwOutput, NULL);
驱动层:
#pragma PAGEDCODE
struct _ProcessList
{
UCHAR ProcessName[30]; //进程名
ULONG PID;//PID
ULONG Eprocess;//Eprocess
ULONG ProCount;
}ProcessList[100];
#pragma PAGEDCODE
ULONG ProPid[100];

当时看的是Windows驱动开发详解,把变量换到分页内存中,害我蓝屏了30多次。

//获取进程列表
VOID EnumProcessList()
{
ULONG EProcess , FirstEProcess ;
ULONG dwCount = 0 ;
PLIST_ENTRY ActiveProcessLinks;
ULONG dwPidOffset =0x84;
ULONG dwPNameOffset = 0x174;
ULONG dwPLinkOffset = 0x88;
ULONG dwProcessId;
PUCHAR pImageFileName;
FirstEProcess = EProcess = ( ULONG ) PsGetCurrentProcess() ;

while ( EProcess != 0 )
{
dwProcessId = * ( (PULONG) ( EProcess + dwPidOffset ) ) ;
pImageFileName = ( PUCHAR ) ( EProcess + dwPNameOffset ) ;
if ( ( LONG ) dwProcessId >= 0 )
{
//DbgPrint( "[Pid=%8d] EProcess=0x%08x %s\n" ,dwProcessId , EProcess , pImageFileName ) ;
strcpy((char*)ProcessList[dwCount].ProcessName,(char*)pImageFileName);
ProcessList[dwCount].PID=dwProcessId;
ProcessList[dwCount].Eprocess=EProcess;
ProcessList[dwCount].ProCount=0;
dwCount ++ ;
}
ActiveProcessLinks = ( PLIST_ENTRY ) ( EProcess + dwPLinkOffset ) ;
EProcess = ( ULONG ) ActiveProcessLinks->Flink - dwPLinkOffset ;
if ( EProcess == FirstEProcess )
{
break ;
}
}
DbgPrint ( "ProcessNum = %d\n", dwCount ) ;
ULONG i=0;
ProcessList[0].ProCount=dwCount;
DbgPrint ( "ProcessNum = %d\n", ProcessList[0].ProCount ) ;
for (i=0;iMajorFunction)
{
case IRP_MJ_CREATE:
DbgPrint("IRP_MJ_CREATE被调用\n");
break;
case IRP_MJ_CLOSE:
DbgPrint("IRP_MJ_CLOSE被调用\n");
break;
case IRP_MJ_DEVICE_CONTROL:
DbgPrint("IRP_MJ_DEVICE_CONTROL被调用\n");
IoControlCode=IrpStack->Parameters.DeviceIoControl.IoControlCode;
switch(IoControlCode)
{
case IOCTL_PROTECTPROCESS_CONTROL:
inSize=IrpStack->Parameters.DeviceIoControl.InputBufferLength;
outSize=IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
inBuf=(long*)pIrp->AssociatedIrp.SystemBuffer;
RtlCopyMemory(ProPid,inBuf,sizeof(ULONG)*100);
break;
case IOCTL_GETPROCESS_CONTROL:
PVOID pInputBuffer, pOutputBuffer;
ULONG outputLength, inputLength;
DbgPrint("COMM_BufferedIo\r\n");
outputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
inputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
pInputBuffer = pIrp->AssociatedIrp.SystemBuffer;
pOutputBuffer = pIrp->AssociatedIrp.SystemBuffer;
DbgPrint("COMM_BufferedIo UserModeMessage = '%s'", pInputBuffer);
for (int i=0;iIoStatus.Information = outputLength;
break;
default:
break;
}
break;
default:
DbgPrint("未知请求包被调用\n");
break;
}
IoCompleteRequest( pIrp, IO_NO_INCREMENT );
KdPrint(("Leave HelloDDKDispatchRoutine\n"));
return status;
}
linux系统

Linux与视频文件的硬解播放

硬解还是软解,这是个问题。但关键是,你能硬解么?视频文件要播放得先拆包分离,然后对分离出的数据解码,解码后才是可播放的raw视频直接输出到显示器播放。其中使用cpu进行解码,就是软解,使用GPU(显卡)进行解码,就是硬解。

那么为什么需要硬解。一般来说,windows下,默认的解码方式一般是软解,硬解是相对有点麻烦的。cpu的运算能力足够,一般使用软解也非硬解,因为软解现在更成熟,对应的编码更广,也更稳定。但,前提是你的cpu足够劲。我认为拥有移动版i3以上的cpu,硬解就毫无必要了。但我用来装linux的小贝壳是c-60的cpu,频率只有坑爹的双核1G,还不如我的手机,但是它内置有一颗不错的显卡,HD6290,可以达到i3级别,这种情况下硬解就是唯一出路。但是linux硬解却是很麻烦的。

Linxu显卡驱动

现在显卡制造商分为三大家:intel,ati和nvidia,一般来说,n卡是最稳定支持也最多的,但是n卡只有闭源驱动,这也是林纳斯对nvidia竖起中指的原因之一,intel次之,intel只有一种驱动,但这玩意是开源的,配合intel强大的技术力,让intel成为至少是我认为的linux最好选择,最后是ati,广大linuxer认为最坑爹的厂商。ati有2种驱动,开源的一种,只能发挥出显卡一半的性能而且耗能极大,闭源的一种,相对好一点但比n卡稳定性差很多。我的就是a卡,至今为止不曾悲剧。

但是光有显卡驱动还不够.这在windows上也是一样的。显卡驱动本身不提供硬解所用的编程接口,你还需要驱动和播放器中间的api接口,从windows上这个叫DXVA,是自带的,由微软定义。从linux上由于没有了厂家,所以只能由显卡制造商来定义,n卡的名为vadpu,a卡和intel的名为vaapi,是由intel开发的。

我的猜测,可能不对(我经常犯错).在windows上编写一段代码,计算1+1=?,很简单就得出了,但是这个结果是由cpu计算的,如果要由gpu计算1+1=?,就得安装相应厂家的sdk,道理是一样的。相应显卡驱动可能提供了把某条线显示在某个位置的函数,但是不一定提供计算的函数,所以需要sdk把计算翻译成驱动能理解的语言。直接和驱动对话,如果播放器自身具备翻译的能力应该也是可以的,但是不现实,要每个播放器都去实现这些复杂又相互重复的任务。所以厂家就站出来,提供了这段代码。所以:

1.你需要正确安装显卡(闭源)驱动
2.你需要正确的安装vaapi(或vadpu)
3.你需要一个能正确调用vaapi接口的播放器

看起来是很艰巨的任务啊。

首先cat /var/log/Xorg.0.log | grep UVD。如果[ 2785.567] (II) fglrx(0): UVD feature is enabled(II) fglrx(0): 或者类似,说明硬件支持。我参照http://taoofye.appspot.com/?p=204001(需那啥,否则打不开) 和 http://taoofye.appspot.com/?p=204001 进行设置。但这两篇都太老了,跟不上时代的发展,前者虽然是最近的但是介绍的方法不奏效,我来总结一下,唯有原理是永不过时的。首先你需要正确安装闭源驱动,我的ati显卡,直接安装了ubuntu附加驱动里提供的版本,实测OK。接下来是vaapi,我单纯的也是从源里安装:

sudo apt-get install i965-va-driver
sudo apt-get install libva1 vainfo
sudo apt-get install xvba-va-driver
sudo apt-get install libva-glx1 libva-dev

会安装一些依赖包:

libva:也就是传说中的VAAPI,是一个开放源代码的提供硬件解码功能的模块;
va-i965-driver:Intel显卡的VAAPI后端,负责连接Intel显示卡驱动与VAAPI。
xvba-video:AMD/ATi显卡的VAAPI后端,负责连接AMD/ATi显示卡驱动与VAAPI。
vdpau:NV显卡的VAAPI后端,负责连接NV显示卡驱动与VAAPI。

然后vainfo一下,如果最下面有vaapi且没有什么错误,就成功了。

vaapi接口播放器

linux上可用硬解的播放器,据我调查,分为御三家。XBMC可调用xvba硬解,大名鼎鼎的mplayer,可调用vaapi,和花见花开的vlc,这好像是最好的。

XBMC我不是太熟,之前都没听说过,有兴趣的可以看看http://forum.xbmc.org/showthread.php?tid=116996,有详细的说明,需要注意的是它也要添加第三方源来安装,不过有现成编译好的版本

Mplayer本身的代码不含任何vaapi支持,气人的是它内置了vaapu支持,团队老大大约是nvidia的人。支持vaapi的是mplayer的一个分支,叫mplayer-vaapi,你可以在gitorious.org/vaapi/mplayer 使用git获得源代码,可是这货是需要自己编译的,我花了整整一个晚上编译它,最后碰了一鼻子灰。和网上说的完全不一样。make失败,我怎么知道vo_vaapi.c里为什么他妹的少个变量,这又不像少个文件那么简单。需要注意的是这货在pacman里有一个预编译的包,所以假如你使用arch的话,可以试试。而且这货即使安装成功也没有出色的图形前端,公认最好的前端smplayer在vaapi解码下各种死机。但如果能忍受这一切并且编译成功的话,据我所知它是性能最好的。

最后是vlc,最傻瓜的选择。最新的vlc 已经预先内置了vaapi支持,所以你直接在vlc里输入与解码器选项卡,打开硬件加速,就可以硬解了。如果是从命令行启动vlc可以看到using va-api 0.32 version等等类似的信息就行了。需要注意的是vlc的wiki里有两篇谈到硬解如何如何费事,还要重新编译vlc云云那都是三年前的,现在不那样了。

那么硬解有什么效果?我的华硕1015BX之前播放720p偶尔会卡,现在完全不卡了,下载了《我是传奇》的1080P 官方宣传片,也不卡,但是不是所有1080P都不卡,放了放思路压得拯救大兵瑞恩,每隔5秒会卡一下,但起码不是完全不能放,证明解码能力的确大大提高,与此同时,cpu占用大概只下降了10%还不到,但是解码能力提高是关键。

我很希望在买这小白贝壳机之前有人能告诉我这些,但是事实证明,世上没有什么救世主,一切还是得靠自己。

linux系统

谈谈在上网本上跑Linux:兼容性、续航、性能及使用体验

我知道现在的人都很浮躁,但如果你想学习linux并且想购买上网本的话。读完这篇日志,对你会有好处的。(我的i7笔记本对linux兼容不好,所以我专门买了台eeepc来跑linux

现在netbook在平板的大力挤压下,已经不像几年前那么流行了。但是想拥有一台随身便携的全功能计算机,像《社交网络》里马哥那样,上网本依旧是唯一选择(超级本太大,太贵,Mac air虽好但是我不喜欢苹果)

如果对计算机一无所知的话,多半随手购入别人推荐的上网本,这你就掉入了陷阱。因为现在市场上80%以上的上网本采用的都是英特尔的N2600处理器,这玩意捆绑的显卡不是英特尔自己的,而是powerVR的贴牌,这个名字听起来有点耳熟?对,就是现在手机上都在用的。这货没有linux驱动,跑linux的表现只能用悲剧来形容。

linux和硬件的兼容性很好。可以这么说,如果不运行X,即图形环境。像RMS一样牛逼的只用文字终端的话,任意一台计算机都可运行linux的,哪怕是2000年以前的计算机。但一涉及到X,linux就变得极为不稳定而且问题极大,这主要是显卡导致的。linux的硬件兼容问题主要出在网卡和显卡,而后者尤甚,问题在于三大显卡提供商的Linux驱动不开源而且不稳定。

其中英特尔的核心显卡驱动一直开源,所以支持最好,但是上网本几乎不会使用i系列处理器,如果和某人一样有钱,购入11.6英寸的超级本吧。N卡的驱动一直很稳定,但是一直闭源,如果不用独显不可,用n卡。A卡有开源驱动,但是其表现令我撞墙,闭源驱动还凑合,比n卡差。

综合以上种种,我选购了华硕的eee pc 1015bX来运行linux,这玩意使用amd的c-60 apu,内建amd的hd6290显卡,虽然a卡不给力,但这是现在除了英特尔平台之外唯一的选择了。虽然cpu才双核1G,就数据来说还不如我的手机。

首先是兼容性

我安装了linux mint 32位 xcfe系统。ubuntu的发展现在越来越无视用户感受了。opensuse又是rpm包管理器,我希望继续用apt的,fedora不适合初学者,arclinux简直就是黑客专用,kubuntu的kde桌面和firefox的相容不好,而我大部分时间都会花在火狐上,况且随着诺基亚濒临完蛋,Qt现在前途不保,linux mint是现在最流行的linux发行版,唯一缺点是源比较少,我都是开vpn更新的。

一切好像都是开箱即用,我未想到会如此完美,安装,更新,联网,未遇到任何错误,甚至连调节亮度的快捷键都直接可用。

续航其次是续航

我测试了两次,一次模拟正常使用,中间包括三次冷启动,四五次睡眠,用时一天半,最终总计时间是不足5个半小时。第二次是一直2开着用移动硬盘拷贝了100多g数据,续航差一点5个小时。最后都是剩10%电量手动关机。看来视负载而定,续航基本在5小时左右。

这小白贝壳机的机身上贴着7.5小时续航的贴纸,考虑到这个数字必然是运行华硕阳春的express gate系统,0负载最低亮度连续运行得出的。而且linux向来因为驱动缺失比windows更耗电。所以5小时这个数字我基本满意。

Linux也是可以长时间续航的!

我感觉,要想尽量延长续航时间,你应该:
1. 选购时 注意电池和显卡,千万不要购买独显和三心电池的电脑。
2.安装一个轻量级桌面,我推荐xcfe,尽量关掉所有特效,不要使用compiz。如果没有x的特殊需求就干脆启动到文字界面下。
3.在较黑的地方使用电脑,调低屏幕亮度
4.不用就关掉蓝牙和wifi
5.关键:使用闭源驱动。amd的power2go功能显然能大幅度减少整体功耗。
6.不超过24小时不用,用睡眠代替关机。
7.尽量降低负载,不用的程序随手关掉。

在其次是性能

linux下默认浏览器一般是firefox,直接同步过来即可,chrome也有Linux版,试了试播放youtube的720p苹果宣传视频,没有明显的卡顿。用vlc或者smplayer放720p,毫无问题,cpu占用在一个核30-50%左右,按这么看,1080p也没问题,但是我平时基本不看1080p,所以也没测试。开机是不到40秒,比不上我的固态硬盘5秒搞定,但作为上网本来说,已经很不错了。平时操作也没有卡顿,这颗1Ghz的cpu比我想象中要劲很多。

在在其次是使用体验

上网本虽小,但我认为,只要笔记本用的习惯,上网本是绝对没问题的。因为它虽然小,但是正如手机不会显得小一样,可以更轻易的前后调整其与身体的距离。在使用上,linux的多桌面特性在这里发挥的淋漓尽致。你大可开五六个桌面,然后把所有程序都全屏,这样也不小多少。我很诧异win8为何不加入这个好用到爆的特性。操作上,多用快捷键和触摸板手势,配合无线鼠标,也不显得跼促,整体上,和笔记本没什么区别。至少和一般人的windows笔记本没什么区别。

黑苹果电脑有福了,Mac OS无线网卡没驱动照样无线上网

所谓黑苹果是和白苹果相对的,大家都知道苹果公司出的笔记本无论是macbook pro还是macbook air都是白色的金属材质,所以呢大家就称之为白苹果;相对的通常的厂商比如dell,lenovo,hp等的电脑虽然也有白色款式但是大部分都是黑色或者其他颜色的,所以这些电脑如果安装苹果Mac OS系统就是所谓的黑苹果

总所周知,黑苹果是非官方的产品,能够运行Mac OS系统已经是非常不容易了更别提杂七杂八的各种驱动了。通常黑苹果最难驱动的两个部分是显卡和无线网卡驱动。显卡如果驱动不开那么估计这个黑苹果机器是失败的,所以通常没有说显卡驱动不开任然运行苹果系统的黑苹果机器。那么对于黑苹果机器而言最烦人的就是无线网卡了。通常无限网卡是不能适用的,不过虽然我们不能直接驱动无线网卡却允许我们通过身边的智能手机来借道上WiFi。

所谓的借道上wifi就是让智能手机通过usb把wifi信号共享给黑苹果机器,借助的软件是pdanet。这个软件有mac版,win版,android和iphone版,iphone版可以运行在ipod touch上。下载地址是:http://pdanet.co/desktop

虽然支持很多版本,不过个人在mac下测试的结果是智能用mac版连接ios设备共享wifi,不知道是不是我的魅族M9不给力还是别的什么,反正android测试失败了。

ios设备需要先越狱,然后从Cydia上下载pdanet,安装好,mac主机上也要安装好对应的mac版。然后mac需要重启一次。重启完成后将ios设备和mac通过usb数据线连接,ios启动pdanet,开启usb tether。mac启动pdanet,再右上角的图标上点连接。打开系统偏好设置里的网络设置,会发现一个新的网络连接,如果已经获取了ip地址那么开始用就好了,如果没有获取ip地址,那么重启下mac上的pdanet就可以了。

当然,ios设备是要连接到wifi的。如果你用的是iphone,那么你也可以把联通3G信号共享给mac主机无线上网了,很不错吧

Windows XP开机

网卡驱动异常引起XP系统启动滚动条异常缓慢、卡顿

华硕M2V主板,安装ghost封装的xp后,开机重启后无法进入系统,xp滚动条在正常滚动几圈后就变得异常缓慢,3个方块组成的滚动条在滚动时都是逐个显示的。

重启后能进入安全模式,多次重启偶尔能正常进入系统,此处省略掉关于各种测试的一万字……

最后发现把外部其他不必要的插线取掉,只连接显示器和键盘,多次重启后均能正常进入系统。进入系统后再插入网线发现网卡一直处于自动获取网络地址状态。感觉是网卡的问题可能性较大。检测发现集成的Atheros芯片的网卡自动安装的驱动日期为2007-8-30,驱动版本为2.3.7.4。

网卡驱动异常引起的xp滚动条异常缓慢、卡顿

更新网卡驱动为2009-8-20,版本2.3.7.14后,多次重新启动均能正常进入系统。

网卡驱动导致电脑启动时滚动条滚动慢,无法启动系统

网卡驱动导致电脑启动时滚动条滚动慢,无法启动系统

采用Atheros芯片的网卡比较少,这样的问题也很少遇到,走了很多弯路,又积累了一点经验。