早在半年前买了一块2GB U盘后,就在想怎么能把XP装在U盘上,当时看过相关文章,不过感觉相当麻烦,一直没做。现把文章粘过来,趁暑假没事慢慢做。

现在移动硬盘越来越普及了。但是大多数人只是用来备份数据恢复系统。有没有想过在你的移动硬盘上安装WINXP呢?一个可以装在口袋里的winxp,只要主机支持USB-HDD启动,随时插上,随时使用,方便吧?想要的话,往下看吧。

声明:
这篇文章的大部分内容都是转载的,原创来自一个德国人Dietmar,以下是原贴地址:
http://www.911cd.net/forums//index.php?showtopic=14181
超长100多页,英文好的朋友可以跳过我的贴直接看原贴。我在这个贴里主要是翻译并且写下自己的安装过程。在国内这方面的贴太少了,少数几个有关的贴也并不能实现。希望我的贴能让有需要安装移动WINXP的朋友不必再象我一样走了许多弯路。
关于安装过程,我大致是是按照他的Tutorial 3完成的。Dietmar的Tutorial 3的链接如下:
http://www.911cd.net/forums//index.php?showtopic=14181&st=220&p=97519&#entry97519
第229楼

我就不贴原文了,太长。大致的思路是这样的,首先,要让你的USB硬盘能启动电脑,然后加入WINXP系统所有文件,这样就构成一个完整的XP。
(为什么不直接安装?因为WINXP会把USB硬盘识别成外置的USB存储器而非本机磁盘,最终导致启动时蓝屏或者失去响应。如果你想把XP直接安装到USB硬盘上,方法也是有的,你需要一个特别定制的启动安装光盘,这个做法相对麻烦。有兴趣的话自己看下面这个链接
http://www.ngine.de/index.jsp?pageid=4176
这个方法和本文谈及的方法原理上是一样的,处理过程不同而已)
得到完整的XP后,还需要修改XP里面USB的有关信息,使得USB设备能在启动时被系统正确识别。

好了,下面我们开始吧。我以我的安装过程为例讲解:

在USB硬盘上安装WINXP的前提条件,首先是你打算用USB硬盘启动的电脑主板支持USB-HDD启动,这点很容易确定,只要进入BIOS查看启动顺序里有没有USB-HDD选项就可以了。其次是USB硬盘要跟主板兼容。所以在正式安装前,有必要测试一下你的USB硬盘到底能不能启动你的电脑。网上有很多USB设备启动电脑的方法,请自己测试一下,目的是确定你的USB可以启动你的电脑。
办法之一是用USBOOT这个软件格式化你的硬盘,它会生成一个最基本的DOS启动硬盘。你可以去下载这个软件做个测试。但是它不是对所有的USB硬盘都有效。如果失败了你也别灰心。还可以试试其他软件。
一个受到普遍推荐的软件是HP出品的一个工具Windows-based Format Utility for HP Drive Key,也可以格式化出一个DOS启动盘。
如果你运气实在是太差,就像我一样。那么只好使出杀手锏,去下载JUJUMAO的移动版WINXP系统安装镜像,其中包含一个ghost镜像,可以制作出一个USB启动盘。
上面提到的软件请自行google。
确定以后,我们就可以正式开始安装了。开始安装之前,我们还需要准备一些东西。

1)一个USB2.0的移动硬盘。现在市面上一般的移动硬盘=笔记本硬盘+硬盘盒。
我的是三星80G的笔记本硬盘+USB2.0硬盘盒。

2)一台已经装有WINXP的电脑。也是你打算用USB硬盘启动的电脑。主板支持USB-HDD启动,最好支持USB2.0(否则你就要忍耐系统运行时的龟速哦)。内存至少512MB,越多越好。因为下面的步骤中你会看到我们需要关闭虚拟内存。
我的是HP nc 4200的笔记本,公司发的工作专用NB,因此我什么权限都没有。这也是我要安装移动WINXP的初衷,出差时下下BT,打打游戏什么的。笔记本的一个好处是,硬盘接口和我的三星80G是一样的。这给我带来很大的方便,下面你们会看到的。

3)一块空闲的IDE硬盘用来全新安装一个WINXP。
如果哪位朋友的情况和我一样,就没必要准备这块空闲硬盘了。我们可以直接把WINXP全新安装在USB硬盘上。

4)一张WINXP SP1/SP2启动安装光盘。最好是SP1的,SP2的会多些麻烦要处理。我的是WINXP SP1 VLK PRO的。

5)一个修改过的NTDETECT.COM文件。这个文件的代码非常长,这里就不贴了,大家可以去原贴下载——见本文开头的链接,位置在7楼和8楼。这里你还需要用到一个软件来转换代码——WinHex。打开WinHex,拷贝粘贴代码,然后在菜单里有一栏可以选择转换格式,选择HEX-ASCII——〉BINARY。转换好了以后,保存为NTDETECT.COM。
你可以在WinHex里打开一个XP自带的NTDETECT.COM文件看看它的格式,对比一下,这样不容易出错。

6)一个注册表修改文件。内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase]

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*aui0200]
"ClassGUID"="{4D36E96F-E325-11CE-BFC1-08002BE10318}"
"Service"="i8042prt"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*azt0502]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0000]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0100]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0200]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0303]
"ClassGUID"="{4D36E96B-E325-11CE-BFC1-08002BE10318}"
"Service"="i8042prt"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0600]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0a03]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"
"Service"="pci"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0b00]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0c01]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0c02]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0c04]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabase*pnp0f0e]
"ClassGUID"="{4D36E96F-E325-11CE-BFC1-08002BE10318}"
"Service"="i8042prt"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabaseacpi#processor]
"ClassGUID"="{50127DC3-0F36-415e-A6CC-4CB3BE910B65}"
"Service"="Processor"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasegendisk]
"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
"Service"="disk"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasepci#cc_0600]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasepci#cc_0601]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"
"Service"="isapnp"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasepci#cc_0604]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"
"Service"="pci"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasepci#cc_0c0320]
"Service"="usbehci"
"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasepci#ven_1033&dev_00e0&rev_01]
"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasepci#ven_1033&dev_00e0&rev_02]
"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasepci#ven_8086&dev_24cd]
"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabaseprimary_ide_channel]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasePS2_KEYBOARD]
"ClassGUID"="{4D36E96B-E325-11CE-BFC1-08002BE10318}"
"Service"="i8042prt"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasePS2_MOUSE]
"ClassGUID"="{4D36E96F-E325-11CE-BFC1-08002BE10318}"
"Service"="i8042prt"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabaseroot#swenum]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"
"Service"="swenum"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabasesecondary_ide_channel]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabaseusb#class_08]
"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"
"Service"="USBSTOR"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabaseusb#root_hub]
"Service"="usbhub"
"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabaseusb#root_hub20]
"Service"="usbhub"
"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabaseusbstor#disksony____msc-u01n________]
"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
"Service"="disk"

[HKEY_LOCAL_MACHINEottoControlSet001ControlCriticalDeviceDatabaseusbstor#disksony____msc-u01_________]
"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
"Service"="disk"

把上面的内容拷贝到记事本,然后保存为OTTO.REG。
我的安装过程:(暂时没有图片,如果大家有不清楚的地方,我会适当配图)

7)打开笔记本后盖,把原装硬盘拆下来。具体过程请自行参考你的笔记本使用手册。然后要拆下移动硬盘盒中的笔记本硬盘,下面我一概以三星80G代替。具体过程请自行参考网上有关资料。

8)现在把三星80G装到笔记本IDE口上。盖上后盖。准备开机。注意,尽量不要连接任何USB设备,和任何其他硬盘。

9)开机进入BIOS,设置启动顺序从CD-ROM启动。我的HP没有CD-ROM,只有USB-CDROM。所以我设置是USB-CDROM启动,对安装结果没有影响。你也可以把XP安装文件拷到硬盘,从硬盘安装,也是可以的。
使用USB-CDROM有一点要注意,有时候会因为供电不足导致数据错误。所以最好使用外接电源。

10)把WINXP SP1安装启动光盘放进CD-ROM,启动电脑。开始正常安装WINXP。在安装过程中会有分区格式化硬盘的步骤,照做就是。安装过程略。
有一点要注意,如果你事先格式化了硬盘。硬盘的第一主分区一定一定要设置成活动分区,否则系统无法启动!!如果你在安装过程中重新分区格式化硬盘,就不必在意这个问题了。

11)安装结束,第一次启动到WINXP后,一定不要再安装任何额外的驱动。装驱动的事你大可以以后再做。
我们只需要做一件事,关闭虚拟内存。右键点击我的电脑——属性——高级——系统性能设置——高级——虚拟内存设置,在弹出的对话框选无页面文件,再点设置按钮。

12)OK,安装工作完成。关机。

13)从这一步开始,我们要对三星80G硬盘上装好的XP做一些改动。
现在,把三星80G从笔记本上拆下来,装回硬盘盒中。把笔记本原装硬盘装回笔记本上。

14)把重新装好的移动硬盘接到你的笔记本硬盘上。开机进入你笔记本原有的WINDOWS XP系统。
因为我的笔记本权限设得很死,我无法对注册表进行操作。所以我是在家里的台式机上进行的。其实都一样,我们只是借用已有的WINXP的注册表编辑器来修改移动硬盘上XP系统的注册表。

15)我们已经事先准备了一个修改过的NTDETECT.COM文件,现在把它拷贝到移动XP所在分区的根目录下,替代原有的NTDETECT.COM。
不是所有的电脑都需要,但是最好这样做。(作者原话)

16)下面的工作要改动注册表,请谨慎操作。XP的注册表是由几个注册表配置单元文件(微软起的名真复杂)组成的,保存在 WINDOWSSYSTEM32CONFIG 目录下,我们要改动的是其中名为SYSTEM的文件(注意没有后缀名)。
进入到上述目录,把SYSTEM文件备份一下。
注意不要走错地方,不是你工作XP的WINDOWS目录,而是移动XP的WINDOWS目录。

17)打开注册表编辑器,点HKLM项,然后从菜单中的文件选择载入注册表配置单元文件,注意不是导入,不要选错了。这时会弹出对话框,一路找到上一步提到的SYSTEM文件,选择确定。
载入过程中会提示你起名,重新起名为otto。OK,载入完成。

18)进入[HKLMottoMounted Devices],删掉其下所有的键值。
进入[HKLMottoControlSet001ControlCriticalDeviceDatabase],删掉其下所有键值。

19)本文第6)步已经准备了一个OTTO.REG文件,双击它把它导入注册表。这个文件的内容是在 [HKLMottoControlSet001ControlCriticalDeviceDatabase] 下添加一些硬件注册信息。

20)进入[HKLMottoControlSet001Services],做以下改动:

usbehci :
改 start = 3 为 start = 0
改 Group = Base 为 Group = System Reserved

usbohci : (如果没有这个键名,直接去改下一个usbhub)
改 start = 3 为 start = 0
改 Group = Base 为 Group = System Reserved

usbhub :
改 start = 3 为 start = 0
改 Group = Base 为 Group = System Reserved

usbstor :
改 start = 3 为 start = 0
新建一个键值 Group (数据类型用REG_SZ)= System Reserved

usbuhci :
改 start = 3 为 start = 0
改 Group = Base 为 Group = System Reserved

21)好,现在我们在工作XP里把注册表改好了。我们需要把它导回到移动WINXP的注册表里去。
在注册表编辑器中左键点OTTO,然后从菜单里选择卸载注册表配置单元文件,注意不是导出,不要选错了。在随后弹出的对话框选路径,起名为OTTO(注意没有后缀名),保存在移动XP的WINDOWSSYSTEM32CONFIG目录下。可以关闭注册表编辑器了,关闭前,记得把OTTO项从注册表中删掉。

22)现在移动XP的WINDOWSSYSTEM32CONFIG目录下,有一个SYSTEM文件,这是系统原本的配置。我们已经做了备份了。还有一个OTTO文件,这是我们刚完成的新配置。把SYSTEM删除,然后把OTTO改名为SYSTEM。
这样,注册表就改完了。

23)除了注册表,我们还有一些文件需要改动。快好了,再坚持一下。

现在进入移动XP的Windowsinf文件夹。
找到usb.inf, 删除usb.pnf.
找到usbport.inf, 删除usbport.pnf.
找到usbstor.inf , 删除usbstor.pnf.

24)打开usb.inf文件,
查找LoadOrderGroup,如果它所属的设备名是usbhub, usbehci, usbohci, usbuhci的话,把它的值改为System Reserved。其他的LoadOrderGroup不要动。在同一个地方,把同一个设备里的StartType值从3改为0。
此外,查找usbstor,把StartType值改为0,同时在最下面增加一行LoadOrderGroup = System Reserved [你可以参考前面四个设备,跟它们一样就行]
别忘了保存。

25)打开usbport.inf文件,把24)同样做一遍。保存。

26)打开usbstor.inf文件,同样再改一遍。保存。

27)关机。
把所有的硬盘和USB设备都拔掉,只留下你的USB移动硬盘。

28)开机,进入BIOS,设定启动顺序从USB-HDD启动。保存退出。
当当当!移动WINXP诞生了!

标签: Windows

已有 2 条评论

  1. 用量产吧,量产完的引导速度和做启动盘的速度不能比的。不过量产要求高。有空折腾的话去
    bb s.mydigit.c n/read.php?tid=4345找合适的量产工具。
    希望对你有帮助。

    1. FROYO

      嗯,尝试一下

评论已关闭