移动硬盘安装Windows 7 (可更换机器)
在我的nt 6.x快速安装器中已经包含了win7装到usb移动硬盘的功能,其中利用了usbbootwatcher监视usb启动相关的注册表项,让usb驱动在启动前就加载。
一直有人想把win7装到u盘,这两天这个帖子中的信息和测试给了启示,这里我来总结一下,并提供一些操作方法。
根据win7 embedded和hyper-v R2的文档及这个帖子中的测试,win7/2008 R2 usb启动其实只是由两个注册表项控制的:
HKLM\system\CurrentControlSet\Control\BootDriverFlags HKLM\system\CurrentControlSet\Control\PnP\PollBootPartitionTimeout
把第一个值设成4就可以在启动开始阶段就加载usb驱动;
而第二个则控制内核等待启动分区PnP反应时间,usb启动设为15000(win7 embedded的值)或者30000(hyper-v r2中的值)
由此看来,usb启动普通win7非常的简单,微软完全已经设计好了。默认不能装到usb设备纯粹是微软策略上的考虑。
下面就来介绍一下u盘启动win7/2008 r2的方法(移动硬盘一样适用):
在硬盘上先装一个vhd启动的win7(只有企业版和旗舰版支持vhd启动),推荐使用NT6.X快捷安装器。 启动win7后,用regedit把上面所说的两个注册表项改成4和10进制的30000。 在u盘上建立激活主分区(启动扇区为nt 6模式),在另一个系统中把vhd文件复制到u盘上。 用bcdboot和bcdedit在u盘上建立一个指向这个vhd文件的启动项即可(下面命令假设系统盘为c:,u盘/移动硬盘为u:,vhd为win7.vhd)。
bcdboot c:\windows /s u: /l zh-CN
bcdedit /store u:\boot\bcd /set {default} device vhd=[locate]\win7.vhd
bcdedit /store u:\boot\bcd /set {default} osdevice vhd=[locate]\win7.vhd
或者使用bcdtool来完成。
关于usb win7的换机器的可移动性,根据目前一些人的测试,usb启动win7只要cpu是同一牌子的就基本能通用。比如从nvidia芯片组的amd cpu机子换到amd芯片组的amd cpu机子都没问题。根据yueyezhan的测试,如果cpu品牌不同只要改一下注册表的iaStorV和msahci两项就能在不同机子间通用。所以在插到其他机子前,导入 这个注册表文件就可以了。将以下代码保存为usb.reg即可。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\msahci] "Start"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\iaStorV] "Start"=dword:00000000