无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 93678|回复: 127
打印 上一主题 下一主题

从u盘启动win7/2008 R2的方法,更新:换机器免sysprep的方法

    [复制链接]
跳转到指定楼层
1#
发表于 2010-4-18 11:18:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在我的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启动):
1、在硬盘上先装一个vhd启动的win7(只有企业版和旗舰版支持vhd启动)
2、启动win7后,用regedit把上面所说的两个注册表项改成4和10进制的30000
3、在u盘上建立激活主分区(启动扇区为nt 6模式),在另一个系统中把vhd文件复制到u盘上
4、用bcdboot和bcdedit在u盘上建立一个指向这个vhd文件的启动项即可(下面命令假设系统盘为c:,u盘/移动硬盘为u:,vhd为win7.vhd)。
  1. bcdboot c:\windows /s u: /l zh-CN
  2. bcdedit /store u:\boot\bcd /set {default} device vhd=[locate]\win7.vhd
  3. bcdedit /store u:\boot\bcd /set {default} osdevice vhd=[locate]\win7.vhd
复制代码


方法二 (直接装到u盘):
注意:以下方法由于要直接拷贝大量文件到u盘,速度可能非常的慢。在硬件扫描阶段(specialize阶段)也会非常慢。如非必要还是用方法一
1、在u盘上建立激活主分区
2、用nt 6.x快速安装器把win7/2008 r2装到u盘上,系统分区和启动分区都选u盘盘符,usb硬盘选项选“否”
3、重启之前请运行以下脚本,其中u:代表u盘盘符
usbreg.rar (399 Bytes, 下载次数: 3936)
  1. usbreg.cmd u:
复制代码
4、从u盘重启系统



[ 本帖最后由 fujianabc 于 2010-5-15 09:10 编辑 ]

评分

参与人数 1无忧币 +5 收起 理由
erin + 5 赞一个!

查看全部评分

推荐
发表于 2010-4-18 11:54:59 | 只看该作者
如果用u盘的话,把ewf装上不错,不过embedded的ewf在ctp版本的时候移植到windows7可以用,到了rc版本的时候就用不了了
回复

使用道具 举报

推荐
发表于 2010-4-18 11:47:19 | 只看该作者

回复 #2 fujianabc 的帖子

把第一个值设成4就可以在启动开始阶段就加载usb驱动
这个好
回复

使用道具 举报

推荐
 楼主| 发表于 2010-4-18 11:18:24 | 只看该作者
注意点:

1、u盘容量至少8GB,推荐用16GB或者更大的u盘

2、如有可能,用SLC闪存的u盘。一是SLC的速度比普通MLC u盘小文件写入速度快很多,MLC u盘用起来甚至会卡。二是SLC的写入寿命比MLC长10倍,MLC直接跑系统可能用不了多久会达到写入寿命极限。

3、关于usb win7的换机器的可移动性,根据目前一些人的测试,usb启动win7只要cpu是同一牌子的就基本能通用。比如从nvidia芯片组的amd cpu机子换到amd芯片组的amd cpu机子都没问题。根据yueyezhan的测试,如果cpu品牌不同只要改一下注册表的iaStorV和msahci两项就能在不同机子间通用。所以在插到其他机子前,导入
这个注册表文件就可以了。 usb跨平台.rar (254 Bytes, 下载次数: 2593)

4、如果nt 6.x快速安装器安装win7/2008 R2到移动硬盘启动失败,也可以尝试这里1楼的方法。

[ 本帖最后由 fujianabc 于 2010-4-29 21:19 编辑 ]

评分

参与人数 1无忧币 +2 收起 理由
小松鼠 + 2 学到新知识。slc mlc U盘 下次买slc U盘!.

查看全部评分

回复

使用道具 举报

5#
 楼主| 发表于 2010-4-18 12:40:13 | 只看该作者
原帖由 yueyezhan 于 2010-4-18 11:54 发表
如果用u盘的话,把ewf装上不错,不过embedded的ewf在ctp版本的时候移植到windows7可以用,到了rc版本的时候就用不了了

ewf等月底win7 embedded rtm后再看吧。
另外,fbwf应该也可以。
回复

使用道具 举报

6#
发表于 2010-4-18 13:51:40 | 只看该作者
学习一下,楼主发的帖子非常好。
回复

使用道具 举报

7#
发表于 2010-4-20 17:36:48 | 只看该作者
很好,很好,正需要呢。
我要把WIN7装到移动硬盘。

另外,那个只要同厂家的CPU就通用,不是的CPU用SYSPREP的介绍最好。
回复

使用道具 举报

8#
 楼主| 发表于 2010-4-20 18:31:24 | 只看该作者
原帖由 victor888 于 2010-4-20 17:36 发表

另外,那个只要同厂家的CPU就通用,不是的CPU用SYSPREP的介绍最好。

这个还不能保证一定是这样,就目前测试来看基本如此。
回复

使用道具 举报

9#
发表于 2010-4-21 13:42:37 | 只看该作者
下午有时间去拿个intel芯片的机器,重新装一个干净的系统,在amd和intel的芯片上都试一下
不过我安装在移动硬盘的embedded是可以跨平台正常引导的,这个我试过,前两天拿着在amd上启动完的移动硬盘插在一个intelcpu的dell笔记本上正常启动过
回复

使用道具 举报

10#
发表于 2010-4-21 13:45:44 | 只看该作者
在amd的从单核754到双核5000+,k10的双核245 三核435 四核630我都用同一个移动硬盘的windows7引导过,没有任何问题的
回复

使用道具 举报

11#
发表于 2010-4-21 19:29:08 | 只看该作者
下午试着在联想的g450上引导了两次,没有任何问题
回复

使用道具 举报

12#
发表于 2010-4-21 19:37:47 | 只看该作者
学习一下,楼主发的帖子非常好
回复

使用道具 举报

13#
 楼主| 发表于 2010-4-21 20:11:28 | 只看该作者
原帖由 yueyezhan 于 2010-4-21 19:29 发表
下午试着在联想的g450上引导了两次,没有任何问题

从amd机子移到intel的机子?
回复

使用道具 举报

14#
发表于 2010-4-21 20:42:46 | 只看该作者
原帖由 fujianabc 于 2010-4-21 20:11 发表

从amd机子移到intel的机子?


奇怪 ,刚才又换了一台安装vista的联想g430的机器,蓝屏了

加载到disk.sys的时候蓝屏,停机码是7b,下午在intelcpu的g450引导没问题

[ 本帖最后由 yueyezhan 于 2010-4-21 20:52 编辑 ]
回复

使用道具 举报

15#
发表于 2010-4-21 21:11:42 | 只看该作者
进bios设置为ide模式,可以进系统了,如果想让系统加载intel的ahci驱动,应该如何做?是否需要把amd的raid或者ahci启动关闭掉

找到并单击下面的注册表子项之一:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\IastorV
在右窗格中,右键单击“名称”列中的“Start”,然后单击“修改”。
在“数值数据”框中,键入 0,然后单击“确定”。


只是这样修改,还是会蓝屏,***,embedded就不会,不知道embedded是如果保证可以跨平台引导的


突然想到用来测试的系统是以前用usbbootwatcher来从usb引导的,重新灌了一个系统,像embedded那也修改注册表键值后来在不同的平台引导试试,记得用embedded那种修改注册表的方法引导进系统后,移动硬盘在系统内还是显示为usb设备的

[ 本帖最后由 yueyezhan 于 2010-4-22 03:19 编辑 ]
回复

使用道具 举报

16#
发表于 2010-4-22 03:48:29 | 只看该作者
呵呵,very good,原来像embedded那样修改了两个注册表键值后,windows7就可以在移动硬盘上跨平台启动了,刚在一台amd754cpu上引导完毕后,又在联想的t5800的intelcpu上引导起来了,呵呵,我现在重启后再去amd的机器引导,哈哈
回复

使用道具 举报

17#
发表于 2010-4-22 04:05:59 | 只看该作者
无线网卡的驱动自动就驱上了,顺手用kms激活了
回复

使用道具 举报

18#
发表于 2010-4-28 10:12:26 | 只看该作者

回复 #17 yueyezhan 的帖子

能介绍具体怎么改么?不会弄呀。
回复

使用道具 举报

19#
发表于 2010-4-28 12:34:21 | 只看该作者
win7 文件太大了
回复

使用道具 举报

20#
发表于 2010-4-29 15:50:53 | 只看该作者
我是用VHD实现的,在移动硬盘上,我的机器是华硕A42JR。在联想TP SL410上测试成功,但是需要重新激活,安装驱动。
但是在一台HP畅游人上启动就蓝屏:0x0000012f
刚刚在联想Y450上测试也是同样蓝屏在:0x0000012f

不知道什么原因,我估计就是驱动的问题

[ 本帖最后由 a_wind 于 2010-4-29 17:49 编辑 ]
回复

使用道具 举报

21#
 楼主| 发表于 2010-4-29 20:25:09 | 只看该作者
根据15楼yueyezhan的方法,在二楼更新了换机器免sysprep的方法
回复

使用道具 举报

22#
发表于 2010-5-2 01:23:31 | 只看该作者
原帖由 a_wind 于 2010-4-29 15:50 发表
我是用VHD实现的,在移动硬盘上,我的机器是华硕A42JR。在联想TP SL410上测试成功,但是需要重新激活,安装驱动。
但是在一台HP畅游人上启动就蓝屏:0x0000012f
刚刚在联想Y450上测试也是同样蓝屏在:0x00000 ...


确定你准备引导的主板的南桥,也就是磁盘控制器驱动,,然后将对应的注册表键值的start修改为0,intel的南桥是iastorv,amd的南桥是amdsata amdraid是amdsbs 
回复

使用道具 举报

23#
发表于 2010-5-2 03:29:40 | 只看该作者
nv amd intel的,如果是直接用sata硬盘接到不同的主板南桥之前,bios打开ahci或者是raid,第一次进入系统后以管理员权限运行cmd
bcdedit /set {current} detecthal yes

---------------------------------------------以下保存为reg导入-----------------------------------
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\amdsata]
"Start"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\amdsbs]
"Start"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\iaStorV]
"Start"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci]
"Start"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\nvraid]
"Start"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\nvstor]
"Start"=dword:00000000


ps:
我在nv的南桥(nf4主板,bios开启ahci),amd sb700南桥(bios设置为raid)测试过,intel的南桥没有测,手头没有intel的台式机
回复

使用道具 举报

24#
发表于 2010-5-2 11:50:29 | 只看该作者
既然可以免sysprep的话,那么如果我想换主板,那只需 想23楼的那样只需修改SRS驱动相关键值?
回复

使用道具 举报

25#
发表于 2010-5-2 12:44:12 | 只看该作者
原帖由 zhhsh 于 2010-5-2 11:50 发表
既然可以免sysprep的话,那么如果我想换主板,那只需 想23楼的那样只需修改SRS驱动相关键值?


我在nv的南桥和amd的南桥来回换是这样做的,如果你用usb启动的话,没有必要这样设置
回复

使用道具 举报

26#
发表于 2010-5-2 13:22:07 | 只看该作者

回复 #25 yueyezhan 的帖子

我其实研究一下win7能不能够不用sysprep来实现通用还原。。。
回复

使用道具 举报

27#
发表于 2010-5-2 22:19:55 | 只看该作者
今天折腾无果,用实机上用的WIN7VHD按上面的修改了注册表的全部地方,然后放VM里面测试,启动就7B蓝屏,明天准备用原U版生成的VHD测试。。。。。。

先顶起,免得帖子难找。。。。。。。。。。
回复

使用道具 举报

28#
发表于 2010-5-3 09:15:46 | 只看该作者
很郁闷。。。。。。。。今天用原版生成的WIN7.VHD,生成后什么都没动直接放VM里面试,出现以下错误,不知道怎么解决:



还想问个问题,怎么样才能把下面这个菜单变中文的?菜单里面已经设置为zh-CN了,怎么还是英文的呢?是不是需要什么文件?
回复

使用道具 举报

29#
 楼主| 发表于 2010-5-3 09:19:33 | 只看该作者
原帖由 0cat0 于 2010-5-3 09:15 发表
很郁闷。。。。。。。。今天用原版生成的WIN7.VHD,生成后什么都没动直接放VM里面试,出现以下错误,不知道怎么解决:
88556
88557

还想问个问题,怎么样才能把下面这个菜单变中文的?菜单里面已经设置为z ...

你是不是用chenall的软盘镜像引导的?
以前谈到过,chenall的软盘镜像只能引导正常的win7,不能引导刚从wim解开来,没有经过第一次启动硬件配置的win7

[ 本帖最后由 fujianabc 于 2010-5-3 09:20 编辑 ]
回复

使用道具 举报

30#
发表于 2010-5-3 09:20:52 | 只看该作者

回复 #29 fujianabc 的帖子

不是,菜单是自己用以下命令加的,不知道有没有问题?

@ECHO OFF
@CD /D "%~DP0"
IF NOT EXIST "C:\BOOTMGR" @ATTRIB -R -A -S -H "%~DP0BOOTMGR"
IF NOT EXIST "C:\BOOTMGR" @COPY /Y /V "%~DP0BOOTMGR" "C:\" >NUL
IF EXIST @ATTRIB +R +A +S +H "C:\BOOTMGR"
IF NOT EXIST "C:\BOOT\" @MD "C:\BOOT\"
IF EXIST "C:\BOOT\" @ATTRIB +R +A +S +H "C:\BOOT"
IF EXIST "C:\BOOT\BCD" @COPY /Y /V "C:\BOOT\BCD" "C:\BOOT\BCD_BAK" >NUL
IF EXIST "C:\BOOT\BCD" @DEL /F /A /Q "\\?\C:\BOOT\BCD" >NUL
BOOTSECT.EXE /NT60 "C:" /FORCE /MBR
BCDEDIT /CREATESTORE "C:\BOOT\BCD"
BCDEDIT /STORE "C:\BOOT\BCD" /CREATE {BOOTMGR} /D "Windows Boot Manager"
BCDEDIT /STORE "C:\BOOT\BCD" /SET {BOOTMGR} LOCALE "zh-CN" >NUL
BCDEDIT /STORE "C:\BOOT\BCD" /SET {BOOTMGR} INHERIT {BOOTLOADERSETTINGS} >NUL
BCDEDIT /STORE "C:\BOOT\BCD" /CREATE {NTLDR} /D "Microsoft Windows XP Professional"
BCDEDIT /STORE "C:\BOOT\BCD" /SET {NTLDR} DEVICE PARTITION="C:"
BCDEDIT /STORE "C:\BOOT\BCD" /SET {NTLDR} PATH "\NTLDR"
BCDEDIT /STORE "C:\BOOT\BCD" /DISPLAYORDER {NTLDR} /ADDLAST
BCDEDIT /STORE "C:\BOOT\BCD" /DEFAULT {NTLDR}
BCDEDIT /STORE "C:\BOOT\BCD" /SET {BOOTMGR} TIMEOUT "9"

PAUSE

SET VID=
BCDEDIT.EXE /STORE "C:\BOOT\BCD" /CREATE /D "%~DP0WIN7.VHD" /APPLICATION OSLOADER >"%TEMP%\VID.TXT"
FOR,/F,"TOKENS=2 DELIMS={",%%I,IN (%TEMP%\VID.TXT) DO (SET VIDA=%%I)
FOR,/F,"TOKENS=1 DELIMS=}",%%I,IN ("%VIDA%") DO (SET VID={%%I})
ECHO %VID%>"%TEMP%\VID.TXT"
BCDEDIT.EXE /STORE "C:\BOOT\BCD" /SET %VID% DEVICE VHD="[%~D0]%~P0WIN7.VHD" >NUL
BCDEDIT.EXE /STORE "C:\BOOT\BCD" /SET %VID% PATH "\WINDOWS\SYSTEM32\WINLOAD.EXE" >NUL
BCDEDIT.EXE /STORE "C:\BOOT\BCD" /SET %VID% LOCALE "zh-CN" >NUL
BCDEDIT.EXE /STORE "C:\BOOT\BCD" /SET %VID% INHERIT {BOOTLOADERSETTINGS} >NUL
BCDEDIT.EXE /STORE "C:\BOOT\BCD" /SET %VID% SYSTEMROOT "\WINDOWS" >NUL
BCDEDIT.EXE /STORE "C:\BOOT\BCD" /SET %VID% OSDEVICE VHD="[%~D0]%~P0WIN7.VHD" >NUL
BCDEDIT.EXE /STORE "C:\BOOT\BCD" /SET %VID% DETECTHAL ON >NUL
BCDEDIT.EXE /STORE "C:\BOOT\BCD" /DISPLAYORDER %VID% /ADDLAST >NUL
BCDEDIT.EXE /STORE "C:\BOOT\BCD" /TIMEOUT 9 >NUL
@DEL /F /A /Q "%TEMP%\VID.TXT" >NUL

PAUSE
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-27 05:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表