Dec 062008
 

前两天吃饭的时候同事提到看见新闻说微软将在Win7中用CPU做3D加速来跑游戏,听到的第一反应就是–绝对不可能,操作系统怎么可能会往CPU加3D运算的指令集?如果不是CPU微指令而是软件模拟3D加速的话,那不就是现在已经没有人用的“DirectX软加速”了么,难道还兴倒退的?

然后饭后同事发来了新闻链接– Windows 7支持通过CPU进行3D加速,初看还像模像样,仔细一看逻辑不清前后矛盾,遂断定为翻译失败,估计写这新闻的人把原文挑几句能看懂得拼凑了一下加上自己主观臆断就发出来了。估计微软即使有类似的技术,也不是用来干3D加速的,现在也绝对不是CPU资源多得用不完要去帮GPU的,反倒是现在GPU经常被浪费,nv和AMD想尽一切办法让GPU去干CPU的活,Intel倒是有个Larrabee想用X86指令集跑3D运算,但目前还不干微软什么事。

直到今天回头复习WinHEC2008北京站的PPT,才算了解这到底是怎么回事。本来只是一为了让不支持DX10的显卡在WARP后可以接手DX10的指令,经这么一炒作变成了CPU玩3D加速。遗留老设备的兼容解决方案变成了“加速”,这新闻还真是南辕北辙。

回头再仔细看了看PPT,发现DirectX现在已经几乎变成了一个平台了,并且按照如此描述,在Win7中DX10将是操作系统的一个基础层,存在了如此久的GDI竟然都要融入DX了,做架构做标准微软真是永远跑在前面。开源社区那边连基础的硬件加速还没解决妥善,字体渲染也刚刚算是好用,Windows又将有新的平台架构来进行新一轮的标准变更。垄断公司领跑的优势实在是太明显了。这样除了D3D继续抗衡OpenGL,D2D和DirectWrite来解决陈旧的GDI效率问题,如果实现的话,图形加速和操作系统的界限将模糊,效率将更高。

话说这次北京WinHEC的PPT还是有挺多有价值的内容的,值得一看,放个本站下载链接

Nov 202008
 

昨天自己办公PC因为半夜断电而以外关机了。然后白天过来干活时就发现机器慢得如同蜗牛爬。随手打开Taskmgr看了一下发现进程Searchindexer.exe占用了几乎100%的CPU。这进程是Windows Search服务的索引管理进程。正常情况下,Windows Search服务会在PC空闲时自动进行索引收录的工作,所以偶尔也会看见这个进程占用了100%的CPU。所以认为这可能是个临时问题,所以当时决定暂时把Windows Search服务暂停掉。打开Services.msc,发现Windows Search服务处于Starting状态,这才意识到可能是出问题了,一个服务长时间处于Starting状态说明肯定是卡在某些地方。于是找出Process monitor来看看Searchindexer.exe到底在干什么,结果发现这进程虽然占了100%的CPU,却是Hang在那里没干什么事。

进行到这里,基本上开始怀疑断电将硬盘上的索引文件给搞坏了。于是现在的思路是Rebuild Windows Search的Index。直奔Control Pannel – Indexing Options。结果发现在Windows Search服务启动不起来的情况下这里的所有选项都是失效的。

然后剩下的方法就比较暴力了,既然你不让我Reindex,那我只好上大刀砍了。首先将Windows Search服务设置为禁用,然后直接杀掉Searchindexer进程。然后找到如下两个文件夹,把里面的东西全部干掉:

C:\ProgramData\Microsoft\Search\Data\Applications\Windows

C:\ProgramData\Microsoft\Search\Data\Temp

然后把Windows Search服务恢复为Automatic。Reboot机器。

机器重起之后,Service应该就可以很快启动了,不过Searchindexer依旧可能会吃掉很多CPU,因为要完全重新创建索引,但这次持续时间应该不会很长。在运行一段时间后,应该就会退回后台偷偷跑了。至此修复工作完成。

题外话:

从搜索的结果来看,Searchindexer进程出问题的人不在少数,但不一定都像我这次一样是Index彻底烂掉,有时耐心等一下可能就好了(我可是在确认出问题前等待了好几个小时)。

索引并不是对所有人都有用,对于有些人硬盘上的东西经常变化,却不怎么需要去快速查找定位的,不停地收录只是浪费时间和资源。此时禁用Windows Search会感觉到性能有不小的提升。

Windows Search所谓的空闲时运行的机制,也并不是那么智能,所以用Vista系统的,有人经常会发现在干着活的时候硬盘开始莫名的转,此时很可能是系统在后面偷偷的索引,或者在偷偷的磁盘碎片整理。此时的用户体验可能因为硬盘读写导致用户感觉操作不怎么流畅。

对于磁盘空闲空间<10%的情况,索引和磁盘碎片整理应该可以禁用掉了,此时带来的性能影响可能会让人感觉很糟糕,是该整理垃圾或者买新硬盘了。

Nov 272007
 

首先是内容介绍,摘自CSDN读书频道:

本书是一本介绍Windows系统上的用户态程序排错方法和技巧的书。本书分为4个章节,先介绍最重要的、通用的思考方法,以便制定排错步骤;再介绍对排错有帮助的知识点和工具;并介绍了.NET Framework(CLR)的相关知识和调试技巧;最后一章针对常见的几大类问题进行了总结。
本书案例丰富,对现实中的实际问题进行了研究,并和读者一起分析解决办法;本书的写作思路为先给出问题描述,然后提供线索,再进行分析,让读者在阅读中也进行思考,以提高实际解决问题的能力。

其次是我自己看了这部书演示用的pdf的一些感想:

  • 用真实的案例来讲解troubleshooting和debug的步骤和过程,生动而又有深度
  • 作者思路极为清晰,表达精准到位,能从一点点地蛛丝马迹抓起,直到起出问题根源,这种经验与技术俱佳的案例分析能让读者看完即涨大量exp,有如亲历
  • 从debug入手来抓程序设计症结,这应该还算是国内首次有实体书出版,对于windbg的使用讲解也算是开先河了
  • 同时适用于程序员以及系统管理员二种读者,程序员可以从中掌握一些操作系统级别的资源分配和使用原理,并通过对此的理解来使得自己代码中对于资源的使用有更加深刻的认识。而SA们也可以由此学到从系统方面剖析用户态程序的方法,从而使自己对资源的掌控能深入到应用软件层面,可以更好地维护系统的健康状况以及给应用设计提出更好地建议
  • 跳开Windows和.net范畴,书中的很多案例的思路其实可以用于更广泛的领域,对于其他操作系统以及其他框架来说,都可以有触类旁通的感悟。

我看过其演示pdf之后,就决定着本书一定要买来一读了,而对此类知识感性趣的人,也绝对应该看一下此书。

演示章节内容链接如下:

http://www.cnblogs.com/lixiong/archive/2006/08/16/475520.html

CSDN读书频道链接:

http://book.csdn.net/bookfiles/555/

作者自己的blog文:

http://eparg.spaces.live.com/blog/cns!59BFC22C0E7E1A76!2729.entry

Nov 132007
 

具体发布日期将是明年2月27日,另外WSV正式命名为Hyper-V,根据产品定位以及是否集成Hyper-V将有8个版本,包含许可和售价罗列如下:

  • Windows Server 2008 Standard: $999 (with five Client Access Licenses, or CALs)
  • Windows Server 2008 Enterprise: $3,999 (with 25 CALs)
  • Windows Server 2008 Datacenter: $2,999 (per processor)
  • Windows Server 2008 for Itanium-based Systems: $2,999 (per processor)
  • Windows Web Server 2008: $469
  • Windows Server 2008 Standard without Hyper-V: $971 (with five CALs)
  • Windows Server 2008 Enterprise without Hyper-V: $3,971 (with 25 CALs)
  • Windows Server 2008 Datacenter without Hyper-V: $2,971 (per processor)”
  • 这里有点玄机不知道有人看出来没有,就是同版本带Hyper-V和不带的差价为28美刀。如果将这28刀看成是一个独立的全功能虚拟化软件,这价格未免也太白菜了点。关于这地方其实今天还有点小故事,betanews借此放出了“Hyper-V仅售$28”的新闻,结果晚些时候微软的新闻发言人通知他们强调说从不带Hyper-V的产品将无法升级至带Hyper-V的产品,同时也不存在单独销售的Hyper-V产品,因此也就不存在$28的Hyper-V了。不过以后会出现一种仅对OEM销售的售限Win2008,包含Hyper-V,同时也仅能用于虚拟化用途的专项产品,这玩艺恐怕就不能卖$28啦。

    明眼人仔细一分析,就知道这里面其实有规避反垄断相关法律的考量在里面,微软本是想直接把Hyper-V集成在Win2008里面。这肯定会导致反垄断诉讼,于是不得不推出没有Hyper-V的版本,然而从定价考虑微软还是希望所有人都去购买有Hyper-V的版本,所以出来$28这个意义大于实际的差价。然而同时如果给人可以升级的选择的话,也就意味着Hyper-V本身定价就是$28,这恐怕又会造成恶意定价打压其他厂商的事实,因此干脆不给你们升级的选择,因此这个$28的产品根本不存在。

    微软真是给欧盟罚怕了XD

    betanews的新闻链接见此:

    http://www.betanews.com/article/Windows_Server_2008_Versions_Announced_with_Few_Changes/1194884820

    另外还有个新闻是微软发布了用于IIS6的FastCGI模块支持,这样跑PHP,Perl,Python之类的CGI性能会有大改观,由于是官方的模块相信成熟度会很高,对于IIS的用户是个不错的消息。

    貌似在自动化部署方面也出了个BDD的东西,最近微软动作真大。

    相对来说,开源方面也就有个Fedora 8的发布这一个消息了吧,不过这个发行版最近越来越没人喜欢了。

    好戏还在后面,接下来FreeBSD的7-Release和明年的OpenSolaris才是重拳出击。这两年因为硬件架构方面的迅速发展以及网络等新应用的需求,操作系统领域也进入了让人眼花缭乱的新发展时期,有爱的兄弟姐妹们要速度跟上小心别被甩到火星去了。

    Oct 312007
     

    早从Vista还叫Longhorn的那段时间,不少和我一样喜欢倒腾测试版操作系统的小白们就发现了Vista/Longhorn Server的声音跑得不是那么顺畅,容易出现暴音和跳音。当初我个人就写了一篇文章大致推断了一下问题并给出了个临时可用但不怎么好用的解决方案,见这篇:http://dawnh.net/windows/127/windows-vista-sound-issue/

    现在Vista都Release这么久了,Longhorn也命名为Windows Server 2008等着明年上桌了,这个问题在几次版本更新后表面上似乎给解决了,实际上还一直存在,只是没那么明显而已。

    Continue reading »

    Oct 302007
     

    交作业的文章,其实装系统当天就搞定这个问题了,一直懒得写,现在也懒,流水账记录之。

    故障现象:Dscaler在系统升级为64位Windows 2008后不工作。

    原因:Dscaler的程序所调用的64位驱动不带数字签名,而MS自从Vista开始在64位系统加载内核驱动要强制签名了。

    解决方案:自己伪造签名。

    过程:

    1,打开系统的testsigning模式,使得非权威CA发放的签名可以使用
    bcdedit /set testsigning on

    2,做一个签名证书出来。

    MakeCert –r –pe –ss PrivateCertStore –n CN=dawnh.net(test) dawnh.cer

    3,把证书加进本机信任根CA中去。

    CertMgr -add dawnh.cer -s -r localMachine root

    4,给驱动签名。

    Signtool sign /v /s PrivateCertStore /n dawnh.net(test) /t http://timestamp.verisign.com/scripts/timestamp.dll dsdrv4.sys

     说明:

    1,dsdrv4.sys就是所要签名的驱动文件名称了,Dscaler默认安装的是32位的,64位的要单独下载

    2,MakeCert.exe,CertMgr.exe和Singtool.exe在基本系统中不附带,不过Plateform SDK,.netFramework SDK,Visual Studio里面都有,拣自己方便弄得安一个就是。

    3,命令中dawnh.net,dawnh都可以替换成你自己喜欢的,不过反正是fake的,你自己爱写什么写什么,如果要签其他驱动把dsdrv4.sys换成你要的文件名就是了。

    4,要reboot。

    5,testsigning打开后据说会影响到DRM,会使有DRM的玩意儿失效,不过我等贫民还没看见什么东西用DRM。

    6,喜欢学习的好同学想知道原理自己去啃文档:

    http://msdn2.microsoft.com/en-us/library/aa906247.aspx

    感想:

    1,打上testsigning开关后重起系统屏幕四个角会出来Test mode,上面中间会出来版本号和build。看起来很酷,不过还好不是Safe Mode XD

    2,如果我自己能这么做绕过MS的签名机制,病毒不是也能嘛。那强制签名和安驱动时跳个可以被屏蔽掉的警告框也没什么区别了嘛!噢,对了,所以才给你打个Test mode的标,别怪我没提醒 :D

    3,有没有给病毒或木马发证书的CA?

    Oct 102007
     
    1. 国庆朋友来上海玩,于是全程陪同。在经历了几天地狱式的轧马路扫荡后,不得不承认体力真的大不如前了。
    2. 美罗城下面大食代有个“吐司工房”,有兴趣的可以去吃吃看,但我保证你去了就会知道饭菜究竟能做难吃到什么程度…….
    3. 上海的新疆不干正事团体也丝毫不比其它城市差,亲眼所见。
    4. feedburner全面被和谐了,虽然在下这个破blog没什么人订阅,不过也还是转回来吧,目前使用feedsky的服务,顺手响应一下当今时髦,用自己的子域名来承载feed服务,也就是http://feed.dawnh.net/了,订阅我blog的同学麻烦更新你们自己的Reader了。
    5. 国庆期间赛事不断,特奥会这个咱们就不关注了。乒乓球世界杯团体赛有惊无险。另外最终要的是WCG2007中国拿到2枚银牌。PJ的星际争霸算是历史性突破,而Sky的魔兽3没达成3连冠真是可惜了。不过国内电竞的环境和氛围真的是越来越好了。这是当年还在上学时不敢想象的。可惜现在也没有什么热情去掺和了,熬个通宵看直播比赛已经是我能做到最多的了。
    6. Windows Server 2008出了个RC0,不知什么时候微软也开始在版本号上作文章了。前几天升级了一下,该有的问题还都有,原来没有的也还没。最令人期待的WSV竟然是只能上64位系统且必须支持VT的CPU才能跑,遗憾…….
    7. IIS7最近曝光度十足,模块式的设计吸引了足够多的第三方来添砖加瓦,微软和Zend合作了几年终于把PHP从CGI拉扯到ISAPI又拉扯到FastCGI,从非线程安全到线程安全又回归非线程安全,此时终于基本可以开花结果了。而进一步的合作将会更加紧密,商业大腕以及自由阵营,究竟谁赢了?看看昨天刚发布的消息:http://blogs.iis.net/bills/archive/2007/10/09/microsoft-announces-interoperability-improvements-for-php-and-microsoft-technologies.aspx
    8. Linus终于宣布2.6.23内核final了,貌似不少发行版厂商都在等这一天,http://kerneltrap.org/Linux/2.6.23_Kernel_Finally,这应该是今天的事。NetBSD前几天也在RC,有大牛放出的MySQL性能测试结果挺好看,而FreeBSD 7也在为最后的Release做准备,真是一个丰收的季节。
    Aug 292007
     

    这两天办公室不时有人机器中毒,结果整个内部局域网经常被ARP Poison充斥,导致网络瞬断,于是不得不想办法来实现静态IP-Mac地址绑定。然而在我用的Windows Server 2008 beta3的机器上,却碰到了一个很奇怪的问题。

    在本机键入如下命令,这个IP是我局域网网关的地址,MAC为其内网网卡的MAC:

    C:\Windows\system32>arp -s 10.0.0.254  00-11-d8-64-6b-bc

    结果失败,错误提示为:

    The ARP entry addition failed: 5

    放狗搜了一下这个错误提示,发现这个提示应该为权限不足。见鬼了,明明用的是administrators组的用户,却权限不够?于是把故障嫌疑定位到UAC上去,发现无论是怎样调整,甚至关掉UAC,都还是同样的结果。同时用Process Explorer检查发现我的CMD进程有足够权限执行此项配置,这样也断定不可能是用户权限问题,简直是见鬼了。

    然后就是打开安全审核,拼了命查找各项安全日志,无奈发现不了任何蛛丝马迹。回头一想,貌似命令行下的一些个命令都不生成安全审计记录的,这次彻底郁闷了。

    翻着翻着资料突然看到了netsh这个工具,这玩艺是MS建议以后再命令行配置Windows网络协议栈的一个类似IOS的新工具,死马当活马医,试试看这玩艺能不能操作ARP表,简单看了一下帮助,于是弄出来这么个命令:

    C:\Windows\system32>netsh -c “interface ipv4″ add neighbors 10  “10.0.0.254″  ”00-11-d8-64-6b-bc”

    其中数字10为我本地网卡连接的index,这个从show interface可以看到。或者直接替换成网卡名称也可以,就是”Local Area Connection”了。

    结果这个命令竟然成功了,运行之后再运行arp -a可以看到static的ARP表项已经按照预想的一样创建成功。也就是说,前面使用arp -s添加失败根本不是权限不够的原因,而是其他原因了。具体什么原因呢?我个人猜想恐怕是内核网络部分一些数据结构或者API的变更,同时arp.exe这个工具没有跟随更新导致的broken问题吧。

    更诡异的在后面,虽然我目的达到了,但不小甘心又使用arp -s修改了刚添加的静态表项,结果发现竟然修改成功-_-b,然后又继续测试其他情况,发现如下结论:

    1,目前ARP表中不存在对应IP的记录,可以用arp -s添加新的静态IP-Mac绑定。

    2,目前ARP表中已经存在对应IP的static表项的记录,可以用arp -s修改为新的静态IP-Mac绑定。

    3,目前ARP表中已经存在对应IP的dynamic表项的记录,使用arp -s添加新的静态记录时会出现错误:The ARP entry addition failed: 5

    总之这个版本的Windows附带的这个arp.exe一定有问题,改天找找看有没有联系方式能否反映给MS开发部门。

    Jul 022007
     

    前几天买了本Windows Internals第四版的中文译版,现在还在努力啃书中。因为这几年的学习成果,能力见长,对这类书还算是能看懂个七八成。粗粗看来,现在的Windows NT架构中所包含的技术比起Linux或者BSD等开源系统一点也不少,时髦得一蹋糊涂,有些设计思想甚至更为激进。如果能有幸掌握里面的主流架构和知识,也可称为宗师一级的人物了。又感叹之,反向工程也能把系统底层细节研究得如此细致,看来死读源代码也不仅仅是唯一的高效的路了。

    前两天Windows漏洞爆得比较厉害,同时exploit公布的速度也很快,导致这几个月有大量中招的机器。再加上某些无良的所谓“黑客”团体有商业目的地大量种植肉鸡,搞DDOS,ARP欺骗等行为,最近可谓是乌烟瘴气了,国内的网络环境也严重到了有史以来最坏的程度。就好像满大街开得都不是车,而是浩浩荡荡的“木”马和蠕“虫”大军。

    前两天接受一台疑似被入侵的Windows2003的机器,发现入侵者没有放置明显的自启动程序,后台服务,或者是网络连接后门,但却每每都能进来。后来用SRENG2检查发现有3个enum类的API被Hook了,而Hook的Dll竟然是无法找到的文件,遂知道是被放了Rootkit,由于是生产机且在机房,无法进入安全模式处理,但正常模式下因为Rootkit的自加载又隐藏了其自身的文件,无计可施。后来发现可以调出这个文件的file properties,灵机一动将其NTFS权限设置为everyone deny all,reboot后发现Rootkit的dll出来了,同时也多出了Dll加载的注册表项。最后又发现竟然还多出来了一个隐藏的administrator权限的帐户。遂想起那3个API恐怕分别是用于Hook枚举文件、注册表项、用户的。如果再Hook上File Properties的API,恐怕就没这么好办了,现在这些个玩意儿真的是越做越恐怖了。咱堂堂中国人的智慧都用在这些小聪明上了??!!