1、WIN7USB攻略:把 Windows 7旗舰版装到移动硬盘/U 盘(VHD 版)2009-11-28 18:51真正的移动版 WIN7,在移动硬盘/U 盘上运行的 WIN7为什么要用 VHD 而不是直接用真实硬盘呢?因为方便,用 VHD 的话,只要硬盘空间足够,就可以放进 10 个 20 个系统而不必考虑分区的问题,每个系统只不过是一个 VHD 文件罢了。卸载也非常方便,直接把相应的 VHD 删除,然后再删掉相应的 bcd 引导项就完事。制作另一个新的移动系统更是简单,把 VHD复制到另一个移动硬盘,然后重建引导,就一切 OK。我在前一个贴里讲了 如何把 WIN7安装到 VHD里,然后用这个
2、 VHD启动计算机并且运行 WIN7。现在我会继续这个攻略,把这个装了 WIN7的 VHD移植到移动硬盘,然后用移动硬盘启动计算机,并且运行 VHD中的 WIN7。(U 盘也可以!只要它够大!)制作好的移动版 WIN7兼容性非常好,比我以前做的移动 XP要更好!我用这个移动版 WIN7启动了两台笔记本,联想 Y450和 Dell的 D630,完全没有任何问题。唯一的麻烦是第一次启动新计算机时,要重新安装驱动。移动版 win7的性能比本地的要略低,一是 USB2.0的速度限制,二是 VHD的读写驱动会稍微拖慢硬盘读写速度,但是不会低太多,这个贴的最后,我会发本地 win7和移动 win7的性能对
3、比图。下面攻略开始:工具准备- 联想 Y450本本,已安装 Windows 7旗舰版(或者 WINPE3.0版),用来给移动 WIN7做引导- Win7.vhd,15G, 位于 Y450 D:盘- 移动硬盘,80G 分为两个分区,分区一是移动 XP的系统分区,分区二是数据盘。步骤1. 启动 Y450进入 Win7,打开 win7磁盘管理工具,附加 vhd文件,把D:/win7.vhd 附加到系统。成功后可以在计算机里看到一个新分区,我给它分配的盘符是 V:,所以 V:盘里就是已经预先安装好的完整的 win7系统文件。2. 因为 USB驱动的关系,这个 VHD上的 win7从移动硬盘上启动时会蓝
4、屏报错:007B!所以下面要修改 VHD win7的 USB驱动。2.1 进入 V:windowsinf 文件夹,找到如下文件,依次双击打开,找到对应的部分,修改内容如下(黄色背景红色字符为增加的内容),然后保存覆盖原文件:usb.inf;SignatureAttributes;usbccgp.sys=SignatureAttributes.DRM;usbhub.sys=SignatureAttributes.DRMStandardHub.AddServiceDisplayName = %StandardHub.SvcDesc%ServiceType = 1 ; SERVICE_KERNEL_
5、DRIVER;StartType = 3 ; SERVICE_DEMAND_STARTStartType = 0 ; SERVICE_BOOT_STARTErrorControl = 1 ; SERVICE_ERROR_NORMALServiceBinary = %12%usbhub.sys;LoadOrderGroup = BaseLoadOrderGroup = System Bus ExtenderCommonClassParent.AddServiceDisplayName = %GenericParent.SvcDesc%ServiceType = 1 ; SERVICE_KERNE
6、L_DRIVER;StartType = 3 ; SERVICE_DEMAND_STARTStartType = 0 ; SERVICE_DEMAND_STARTErrorControl = 1 ; SERVICE_ERROR_NORMALServiceBinary = %12%usbccgp.sys;LoadOrderGroup = BaseLoadOrderGroup = Boot Bus Extenderusbport.infControlFlags;BasicDriverOk = *;ExcludeFromSelect = *;SignatureAttributes;usbehci.s
7、ys=SignatureAttributes.DRM;usbhub.sys=SignatureAttributes.DRM;usbohci.sys=SignatureAttributes.DRM;usbport.sys=SignatureAttributes.DRM;usbuhci.sys=SignatureAttributes.DRM;SignatureAttributes.DRM;DRMLevel=1300EHCI.AddReg.NTHKR,EnumPropPages32,“usbui.dll,USBControllerPropPageProvider“HKR,Controller,1,0
8、1;HKLM,SystemCurrentControlSetServicesusbehci,BootFlags,0x00010003,4EHCI.AddServiceDisplayName = %EHCIMP.SvcDesc%ServiceType = 1 ; SERVICE_KERNEL_DRIVER;StartType = 3 ; SERVICE_DEMAND_STARTStartType = 0 ; SERVICE_BOOT_STARTErrorControl = 1 ; SERVICE_ERROR_NORMALServiceBinary = %12%usbehci.sys;LoadOr
9、derGroup = BaseLoadOrderGroup = Boot Bus ExtenderOHCI.AddReg.NTHKR,EnumPropPages32,“usbui.dll,USBControllerPropPageProvider“HKR,Controller,1,01;HKLM,SystemCurrentControlSetServicesusbohci,BootFlags,0x00010003,4OHCI.AddServiceDisplayName = %OHCIMP.SvcDesc%ServiceType = 1 ; SERVICE_KERNEL_DRIVER;Start
10、Type = 3 ; SERVICE_DEMAND_STARTStartType = 0 ; SERVICE_BOOT_STARTErrorControl = 1 ; SERVICE_ERROR_NORMALServiceBinary = %12%usbohci.sys;LoadOrderGroup = BaseLoadOrderGroup = Boot Bus ExtenderUHCI.AddReg.NTHKR,EnumPropPages32,“usbui.dll,USBControllerPropPageProvider“HKR,Controller,1,01;HKLM,SystemCur
11、rentControlSetServicesusbuhci,BootFlags,0x00010003,4UHCI.AddServiceDisplayName = %UHCIMP.SvcDesc%ServiceType = 1 ; SERVICE_KERNEL_DRIVER;StartType = 3 ; SERVICE_DEMAND_STARTStartType = 0 ; SERVICE_BOOT_STARTErrorControl = 1 ; SERVICE_ERROR_NORMALServiceBinary = %12%usbuhci.sys;LoadOrderGroup = BaseL
12、oadOrderGroup = Boot Bus ExtenderROOTHUB.AddReg.NTHKR,EnumPropPages32,“usbui.dll,USBHubPropPageProvider“;HKLM,SystemCurrentControlSetServicesusbhub,BootFlags,0x00010003,4ROOTHUB.AddServiceDisplayName = %ROOTHUB.SvcDesc%ServiceType = 1 ; SERVICE_KERNEL_DRIVER;StartType = 3 ; SERVICE_DEMAND_STARTStart
13、Type = 0 ; SERVICE_BOOT_STARTErrorControl = 1 ; SERVICE_ERROR_NORMALServiceBinary = %12%usbhub.sys;LoadOrderGroup = BaseLoadOrderGroup = System Bus Extenderusbstor.infUSBSTOR.AddServiceDisplayName = %USBSTOR.SvcDesc%ServiceType = 1;StartType = 3StartType = 0ErrorControl = 1ServiceBinary = %12%USBSTO
14、R.SYSLoadOrderGroup = System Bus Extender2.2 进入 v:WindowsSystem32DriverStoreFileRepository,找到名为 usb.inf_的文件夹,然后把刚才改好的 usb.inf文件复制到此处覆盖原文件;然后继续找名为 usbport.inf_的文件夹,用改好的 usbport.inf文件覆盖此处的原文件;继续找名为 usbstor.inf_的文件夹,用改好的 usbstor.inf覆盖此处的原文件。(注意:这个位置的文件夹和文件所有权属于 TrustedInstaller,直接改是不行的,首先要修改所有权为登录用户,并且
15、赋予完全权限,才可以修改。修改步骤请自己网上搜。)2.3 文件改好了,接下来要改注册表 V:windows 的注册表。修改注册表有很多方法,我下面用的是最简单的一种2.3.1 打开写字板,把如下代码复制到写字板中,保存为usb1.reg(注意不是 usb1.reg.txt!)REGEDIT4HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesUsbBootWatcherService“Type“=dword:00000010“Start“=dword:00000002“ErrorControl“=dword:00000000“ImagePath“=
16、hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,73,79,73,74,65,6d,33,32,5c,55,73,62,42,6f,6f,74,57,61,74,63,68,65,72,2e,65,78,65,00“DisplayName“=“Usb Boot Watcher Service“ObjectName“=“LocalSystem“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSafeBootMinimalUsbBootWatcherServiceHKEY_LOCAL_MACHINESYST
17、EMCurrentControlSetControlSafeBootNetworkUsbBootWatcherServiceHKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicespciide“Start“=dword:00000000HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesintelide“Start“=dword:000000002.3.2 打开写字板,把如下代码复制到写字板中,保存为usb2.regWindows Registry Editor Version 5.00HKEY_LOCAL
18、_MACHINESYSTEMCurrentControlSetServicesusbccgp“Group“=“Boot Bus Extender“Start“=dword:00000000HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesusbehci“Group“=“Boot Bus Extender“Start“=dword:00000000HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesusbhub“Group“=“Boot Bus Extender“Start“=dword:0000000
19、0HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesusbohci“Group“=“Boot Bus Extender“Start“=dword:00000000HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesUSBSTOR“Start“=dword:00000000“Group“=“Boot Bus Extender“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesusbuhci“Group“=“Boot Bus Extender“Start“=
20、dword:000000002.4 关机重启进入 V:盘的 Win7,即本地的 VHD Win7。找到 2.3中创建的 usb1.reg和 usb2.reg文件,分别双击运行,文件中的内容即被写入VHD Win7的注册表。2.5 重启,进入本地 Windows7。3 在步骤 2中,USB 驱动已经改好了,现在 win7.vhd中的系统已经可以在移动硬盘中运行了。插上移动硬盘,把 D:win7.vhd文件复制到 G: (移动硬盘数据盘,事先准备好大于 15G的空闲空间)4 不要急着用移动硬盘去启动计算机,因为引导还没有建立!下面我们来手动给 G:win7.vhd建立引导。4.1 把本地 Wind
21、ows7的系统盘中 boot文件夹和 bootmgr文件完整复制到移动硬盘 F: (这相当于移动硬盘的 C盘)根目录下4.2 进入 c:windowssystem32 文件夹,把如下三个文件复制到 F:boot 文件夹下:bootsect.exe 用来给移动硬盘 MBR写引导信息bcdedit.exe 用来建立、修改 bcd引导项bcdboot.exe 用来复制 bcd引导项4.3 运行 cmd进入命令行,依次运行如下命令:bcdboot c:windows /s f: 把本地 Windows7的引导项复制到 F:盘(即移动硬盘)bootsect /nt60 f: /mbr 这个命令将把 nt
22、60版的引导信息写入移动硬盘的 mbr!因此一定要小心别搞错了盘符!bcdedit /store f:bootbcd /copy default /d “Windows 7 VHD USB“回车后返回这种格式的 GUID, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,后续命令中我用GUID代替bcdedit /store f:bootbcd /set GUID device vhd=g:win7.vhdbcdedit /store f:bootbcd /set GUID osdevice vhd=g:win7.vhdbcdedit /store f:bootbcd
23、 /set GUID detecthal on 打开 detecthal参数,对移动 win7的兼容性非常重要,作用是启动时强制检测 hal(即俗称的电源管理模式,做过系统封装的都知道这东西的重要性)。xp就没有这个功能bcdedit /store f:bootbcd /displayorder GUID /addlastbcdedit /store f:bootbcd /timeout 5改这改那,终于都改好了。OK,现在一切就绪。5 关机,用移动硬盘启动 Y450吧6 还可以用它来启动 Dell D630,嘿嘿第一次启动时 Windows7会自动安装驱动。攻略完成!注意:关于 Window
24、s 7版本的选择,第一,一定要旗舰版,因为只有旗舰版才支持 VHD!第二,要考虑激活 Windows 7的问题,因为当你在其它机器上启动这个系统,因为硬件改了,Windows 会要求你重新激活如果你的是特定的 OEM版,很可能启动不了另一台计算机。真希望微软快点出个像 XP时代的 VLK大客户版下面上 hdtune测试结果,只做了读取和随机存取测试,写入的因为要格式化分区所以没做了先是 USB-VHD-WIN7的虚拟盘的测试下面是本地 win7的(这个攻略一样可以应用于真实移动硬盘。如果直接改 install.wim,还可以把安装光盘改成移动 Windows 7版的,不过,正常安装时,Wind
25、ows 7 的 setup不允许安装到 usb设备,这点还没想到办法克服或许 boot.wim的相关设置也要改。总之,Windows 7 移动版比 xp好做了多,通用性也强得多。喜欢折腾的朋友可以试试,有什么问题的话,可以给我留言,或者 hi我。)最新测试:这个 Windows 7 USB VHD版的通用性比我想象的还要强悍,今天我用它启动我的老台式机,01 年的,P4 1.5G,512M 内存,USB1.1,bios 无 usb启动选项,我插上移动硬盘后,从硬盘项可以看到移动硬盘,从它启动后顺利进入 WIN7 USB VHD系统!当然因为 USB1.1的关系,启动时间 5分钟运行速度嘛,能感觉到明显的停滞感没办法,这老爷机出厂的时候 USB2.0还不成气候呢。还有网卡,声卡,显卡驱动全都不能识别太老啦还能说什么呢?实在是太强悍了联想到现在的 USB3.0,什么时候能让这个系统在上面跑跑,哇流口水 YY中下面上图: