别理我 烦着呢

2009年5月31日星期日

搞定了 Windows 7 的 从移动硬盘 启动

注意,说的是将windows 7安装到移动硬盘,然后从移动硬盘启动,不是从移动硬盘安装。

首先在本地硬盘安装windows 7, 方法包括
1:真的在内置硬盘安装
2:在虚拟机安装。VMware和VirtualBox支持把一个真的硬盘(包括移动硬盘)虚拟成一个虚拟硬盘挂起来,当成内置硬盘。VMware方法很直接,VirtualBox需要仔细阅读chm的帮助文档的第九章。

装好了以后进入windows 7, 打开regedit
goto HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\
在如下服务上
usbccgp
usbehci
usbhub
usbstor
usbuhci
编辑这几个值
start = 0
Group = boot bus extender

如果没有Group串,就加一个。

退出 regedit

goto \windows\system32\DriverStore\FileRepository\usbstor.inf_bb2778a0
copy usbstor.sys into \windows\system32\drivers (不懂为什么微软在VISTA里面没有,在Windows 7里面有)

goto \windows\inf
修改这三个文件,注意权限问题
usbstor.inf,usbport.inf,usb.inf

把里面的[*.AddService]字段做如下修改
StartType = 0
LoadOrderGroup = boot bus extender

好了,然后关机,如果是在本地硬盘安装的,就把系统分区弄到移动硬盘上,方法包括Ghost,用另一个系统启动起来拷贝,shadow copy,
如果是用虚拟机装的,那就关机直接从移动硬盘重启。

重启好了之后我是不敢装任何USB外置设备的驱动的,没准就会把前面修改的部分覆盖掉-_-

这个办法据说也适用于xp, 2003, vista, 2008

2009年5月28日星期四

drive side 80-wire cable detection failed, limiting max speed to UDMA33

一台2001年的PLE133的主板,启动Linux的时候报标题上面那句话。
如果用FreeBSD,有时候能当成UDMA5,有时候只能到UDMA33.
如果用Windows XP,则只能识别成multi word DMA 2, 也就是DMA33.

仔细阅读一些Linux内核的文档,发现可以在启动内核的时候加一个参数 ide_core.ignore_cable=0 和 ide_core.ignore_cable=1 (我挂了4块硬盘,两个IDE控制器都用到了)这样Kernel就不会自作多情的去检测80针线了,就顺利的上了DMA100.
实测结果,hdparm -tT 的结果从22M上升了50%。

可怜这块主板,8年来都是过的苦日子啊......

2009年5月26日星期二

USB boot windows xp 从USB设备启动运行windows xp

从外置USB硬盘运行有如下几个好处
1:解放了可怜的内置2.5寸盘,当上面不运行操作系统之后,明显不烫了.外置7200转的3.5寸盘的性能无疑优于内置2.5寸.但是这个还取决于IDE/SATA转USB的那块芯片的效率和windows xp下面USB驱动的效率是否能完全发挥USB2.0的威力.等有空的时候测试一下:)
2:在办公室和在家用不同的系统,配置和数据完全隔离.这样,笔记本电脑就完全成了一个计算平台.不过转念一想,这样一来岂不跟在两边都用台式机差不多了?-_- 挠头.

实现的办法很简单,有一个德国人做了个傻瓜化解决方案,访问usboot.org便可一站式解决.虽然这个一站式需要n多步骤,所幸的是不需要会德语,英语就足够了.其他的方案,包括修改windows xp的安装文件(USBBOOT.INF等)等等都不work,会导致蓝屏.不过搞定之后还有蹊跷的地方,外置USB设备插到那个USB口貌似有讲究,否则启动的时候就找不到这个设备.我的主板是945.

还有一个更好的解决方案就是安装Ubuntu,可以直接安装到移动硬盘,不需要任何hack.而且我的感觉,在华丽程度和易用性上已经和苹果不相上下了,在硬件支持方面远远的甩开了苹果.如果你没有很多稀奇古怪的外设,那么完全可以投入生产了.

VISTA/Longhorn/Windows7 这几个NT6内核的OS可以很方便的从USB设备安装,但是却不支持安装到USB设备上.正在摸索中.