一、制作256MB版USB@XP启动闪存盘
(一)准备工作
要制作一个XP@USB启动盘其实一点也不困难,只需有一个PE-Bulider工具软件,一个Widnows Server 2003 SP1安装文件包,一张Windows XP安装光盘(或一个已安装好的XP操作系统)便可成事。
需要的具体材料如下:
1.USB闪存盘:
如果是最基本的安装模式,256MB的容量已经足够(图1)。另外,所用的电脑系统需有256MB的系统主内存。
图 1
2.PE-Buider:
相信不少资深的电脑用户都知道BartPE公司,利用BartPE开发的PE-Buider程序(图2),用户可以将XP操作系统安装到一张CD或DVD光盘中,实现无硬盘环境下运行Windows XP。最新版本的PE-Buider现在已支持将XP系统安装到USB闪存盘中运行,制作步骤跟制作光盘版XP启动盘相差少许,所以PE-Buider可以说是自制XP系统USB启动盘的灵魂所在。
图 2
3.Windows Server 2003 SP1升级文件包:
Windows Server 2003 SP1本来是提供给Windows Server 2003操作系统升级用的,但该升级包中有两个文件(setupldr.bin和ramdisk.sys),却造就了USB闪存盘成功启动电脑的可行性。setupldr.bin及ramdisk.sys是以压缩文件的形式存在于SP1升级包中,要使用前我们需先将它们解压缩提取出来。
Windows Server 2003 SP1的官方下载网址为:(文件大小约323.5MB)
http://support.microsoft.com/kb/889100/
4.XP操作系统文件来源
Windows XP操作系统的文件来源,可以来自一个已经安装到硬盘上的XP系统,又或是一张XP的安装光盘。虽然PE-Buider可以制作出支持中文的XP启动盘,但为了简化和节约空间起见,建议使用英文版的XP操作系统或安装光盘进行此习作。
(二)测试主板能否从USB设备启动
想要制作XP@USB启动闪存盘,最困难的是不知道主板能否支持从USB设备启动系统。如果主板BIOS中没有这个启动项目,用户当然不能通过USB闪存盘启动电脑。不过,就算主板BIOS中有这项设置,也不一定成功。原因是从USB设备启动分成模拟硬盘启动和模拟软盘启动两种方式,加上与其他硬件的兼容性问题,如果用户的USB闪存盘与某个品牌的主板不兼容,USB启动功能也就无法使用。
基于上述兼容性的问题,在将XP操作系统安装到USB闪存盘之前,我们最好先作一个简单的测试,看看你的USB闪存盘是否可在所用的主板上引导开机。
测试方式是利用美国惠普(HP)公司设计的Windows-based Format Utility for HP Drive Key工具软件,将USB闪存盘格式化成一个DOS形式的启动盘。如果该USB启动盘能够引导进入DOS系统,则该USB闪存盘有很大机会完成制作XP启动盘的操作。
Windows-based Format Utility for HP Drive Key的国内下载网址:
http://dl.ttud.com:8068/200507/1/HPUSBFW.rar
从网上下载此软件并将其安装后启动,如果电脑中已插有USB闪存盘,程序很快就会检测出来。然后在程序主操作界面“File System”一栏选择“FAT”文件系统,再勾选“Create a DOS startup disk”(创建一张DOS启动盘)一项,最后点击“Start”按钮进行格式化(图3)。在进行这项操作前,我们还要先准备好一张DOS启动磁盘(例如Windows98启动盘),目的是让程序从中提取DOS的系统文件。
图 3
当DOS版的USB启动闪存盘制作成功后,重新启动电脑并按Del键进入主板BIOS设置窗口,将BIOS中的系统引导设备改成USB优先。然后重新启动电脑,如果能够成功启动USB闪存盘上的DOS操作系统,我们即可进入下一步骤。
(三)准备setupldr.bin和ramdisk.sys文件
前面提到我们需要Windows Server 2003 SP1升级包中的两个文件--setupldr.bin和ramdisk.sys,但这两个文件是以压缩形式存在于Windows Server 2003 SP1升级包内的,故首先我们要把它们解压出来。
1.提取setupldr.bin文件
从网上下载得到的Windows Server 2003 SP1是一个单一的.exe可执行文件,直接双击只会将它安装在系统中(若你使用的是XP操作系统,其实它是无法安装的)。由于我们只是想打开它,故可在XP操作系统的命令行模式(桌面→开始→运行→cmd)中用“-x”的参数将它解压缩,例如:
Windows Server 2003-K889101-SP1-x86-chs.exe -x
(注:其中Windows Server 2003-K889101-SP1-x86-chs.exe是SP1升级包文件的名称,可能会因用户所下载的版本不同而有异)。
此时会弹出一个对话框让用户选择SP1升级包文件解压缩后的保存路径(例如:d:\w23sp1,图4)。解压完成后,在d:\w23sp1\i386文件夹中找到setupldr.bin文件,并复制到另一个文件夹中单独保存。
图 4
2.提取ramdisk.sys
在解压出来的SP1文件中,即本例d:\w23sp1文件夹内的文件,有一个叫ramdisk.sy_的文件,它本身也是一个压缩文件。想对它解压缩,也要在命令行模式下进行(图5)。
图 5
expand -r ramdisk.sy_
解压出来的是一个名为ramdisk.sys的文件,请将它保存到另一个文件夹中。
现在,setupldr.bin和ramdisk.sys两个文件都已解压出来,其他存放于d:\w23sp1文件夹内的文件已经没有利用价值,可以全部删掉。
(四)启动PE-Buider
目前PE-Buider工具软件的最新版本是3.1.10a,下载后要先进行安装,安装后可在Windows XP的“程序”中运行它。
启动PE-Buider后,程序首先会自动扫描系统内可用的Windwos源文件。可用的源文件包括:XP的安装光盘或硬盘上本身已安装的XP操作系统。选好源文件后,在PE-Buider的主操作界面上,我们可于“Output”一栏填写XP启动盘文件的保存文件夹名称(本例为BartPE)。“BartPE”子文件夹将建立到c:\pebuilder3110a文件夹中(即PE-Buider软件的安装路径)。另外,由于我们不是制作光盘版的XP启动盘,因此,在“Media Output”一栏可点选“None”。当然,如果用户想要制作一张光盘版的XP启动盘,则应点选“Create ISO image”或“Burn to CD/DVD”项目,直接刻录成启动光盘(图6)。
图 6
完成设置后,在PE-Buider的主操作界面上单击Build按钮,便开始进行输出工作。输出过程一般都没有什么问题,耗时不过10多分钟,输出的文件大小总共有156MB。
(五)将输出文件导入USB闪存盘
进行到这个步骤,我们需要使用前面从Windows Server 2003 sp1升级包中提取出来的setupldr.bin及ramdisk.sys文件。
在c:\pebuilder3110a文件夹中,新增一个名为“srsp1”的子文件夹,将setupldr.bin和ramdisk.sys文件复制到里面。之后,在c:\pebuilder3110a文件夹中,找到一个可执行文件pe2usb.cmd。在XP操作系统的命令行模式下,执行如下指令。
Pe2usb.cmd -f x:
其中“-f”指进行格式化操作,而“X:”则代表USB闪存盘的盘符代号(图7)。接下去,根据提示键入“YES”确认格式化并导出XP系统到USB闪存盘。经过8-10分钟时间后,导出过程便会完成,用户看到“Done”的字样,即可退出命令行模式。至此,XP系统USB启动闪存盘宣告制作成功,用户只要在主板BIOS中设置好从USB设备引导开机(图8),USB闪存盘便可启动进入Windwos XP操作系统。
图 7
图 8
(六)增加更多功能插件
在本文的例子中,USB闪存盘所用掉的存储空间只有150多MB,所以启动出来的XP系统(或者应该说是BartPE系统)只有一些很基本的功能,例如网络、写字板、画笔、计算器、任务管理器等等。
想让USB版XP的功能更丰富,在上一步进行输出前,我们可在PE-Buider的主操作界面上单击“Plug-ins”按钮启动更多的功能插件(图9)。不过,这些插件要从网上下载,例如BartPE公司官方网页或者那些专门发布BartPE Plug-ins的网站。插件的安装一般都很简单,只要细心阅读网页上的提示,制作应该没有什么难度。
图 9
安装插件后,USB版XP的大小无疑会增加一些,但用户却能得到更多的实用功能,如光盘刻录、杀毒、防间谍软件、上网、备份等等无法在这里一一诉说的功能。
二、制作一个完整版XP@USB启动闪存盘
上面已经介绍怎样将PE-builder版本的XP操作系统安装到USB闪存盘上。虽然制作成功的USB闪存盘能够引导并以XP系统核心运行,但毕竟这个方案至始至终只是一个BartPE的版本,在功能和操作方面跟实际意义上的硬盘启动版XP系统仍有一段距离。对于真正想将XP操作系统移植到USB存储设备中的用户来说,这绝对不是理想答案。那么,将完整的XP系统安装到USB闪存盘或其他USB设备使用,究竟可不可行?告诉大家,答案是可行的,至于详情,就请一起参看笔者在下面介绍的XP@USB实战报告。
(一)从USB设备启动硬盘版XP失败的原因
其实,可能已经有一些朋友尝试过将XP操作系统直接安装到大容量的USB闪存盘、USB读卡器中的存储卡或USB移动硬盘中,但结果都以失败者居多。失败的原因主要是XP操作系统启动后,会把USB闪存盘重新识别成外置的USB存储器而非本机磁盘,使系统产生USB闪存盘身份冲突的问题,从而在系统启动时出现蓝屏错误画面。
尽管失败的尝试居多,但成功的案例也有不少。网上有一位德国朋友Dietmar就在一些论坛中分享了他的成功心得。而在回贴中,不少网友按照Dietmar的方法也成功地将XP系统完整安装到USB闪存盘上。
由于Dietmar在网上披露的成功心得是以讨论形式存放的,里面夹杂着另外一些网友的回应,以及几种不同的方案,阅读起来相当凌乱,而且当中有些地方说得相当含糊,读者可能要连看几十页后才能看出端倪,因此笔者特意将当中最简单且确实可行的Tutorial 2方案介绍给大家,并整理出以下报告供各位参考。
(二)实际操作过程
1.准备一个经过格式化后的空白硬盘,将Windows XP with SP1操作系统“新鲜地”安装在硬盘当中(必须安装在第一个分区)。在安装前,若主机的CPU为具备超线程(HyperThreading)技术的处理器,用户必须先在主板BIOS中将此功能关闭(Disabled)。同时,用来安装Windows XP with SP1的电脑不能装有其他硬盘,又或是连接任何的USB设备,总之系统的硬件配置越简单越好,至于光驱和软驱则可正常连接。安装用的XP光盘要带有SP1补丁文件包,但却不能有SP2补丁文件包的存在。有SP2的存在,肯定会在启动时出现蓝屏错误画面。如果大家有心安装SP2补丁包,则请自己参考Dietmar在网上论坛中提供的其他方案。
为什么要关闭处理器的“超线程”功能,Dietmar并没有作详细解释。但测试中笔者发现,如果没有将之关闭,结果确实是不能使XP@USB系统启动成功。但是,若XP@USB系统已经安装好,用户使用时再在主板BIOS中将“超线程”技术打开,则不会影响到XP@USB系统的启动和运行。
2.将XP安装到硬盘上后,不要为系统安装其他硬件的驱动程序,只需使用XP安装光盘本身提供的驱动程序即可。尤其是主板芯片组方面,绝对不能安装Intel等厂商所提供的驱动程序,充其量只能安装网卡和声卡的驱动程序。如有需要,其他硬件的驱动程序必须在成功完成XP@USB启动后再进行安装。
3.在新安装的XP系统中,将虚拟内存设为0,方法是在桌面“我的电脑”图标上单击鼠标右键,在随后出现的快捷功能菜单中点选“属性”一项。弹出“系统属性”窗口后,在“高级”标签页的“性能”一项中依次点击“设置”→“高级”→“虚拟内存”→“更改”,勾选“无分页文件”,再点击“确定”即可(图10)。
图 10
4.完成以上准备工作后,插入想用来安装XP系统的USB闪存盘或USB硬盘,让系统成功识别出该USB设备。
5.在系统插着USB闪存盘的情况下,运行注册表编辑器(在Windows桌面依次点击“开始”→“运行”→“regedit”),准备修改注册表文件。首先要改的是四个注册表项目。
(1)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\usbehci的注册表项目中,将名为“Start”的DWORD值由3改为0,将名为“Group”的字符串由“Base”改为“Boot Bus Extender”,其余不变。
这是一个系统支持USB 2.0时才会出现的注册表项,在本文的例子中,由于准备制作的XP SP1@USB操作系统并不支持USB 2.0,所以此步骤大家可以跳过不看。
(2)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\usbuhci的项中,将“Start”DWORD值由3改为0,将“Group”字符串由“Base”改为“Boot Bus Extender”(图11),其余不变。
图 11
(3)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\usbhub的项中,将“Start”DWORD值由3改为0,将“Group”字符串由“Base”改为“Boot Bus Extender”,其余不变。
(4)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\USBSTOR的项中,将“Start”DWORD值由3改为0,将“Group”字符串由“Base”改为“Boot Bus Extender”,其余不变。
6.修改了上面四个大致相同的注册表项目后,现在还要创建两个全新的注册表项。
(1)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\注册表项目下,新建一个名为“usb#root_hub”的子项,并在里面创建两个字符串:
Service=usbhub
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
注意:须包括“{” 及“ }”的大括号。
(2)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\注册表项目下,新建一个名为“usb#root_hub20”的子项,并在里面创建两个字符串(图12)。
图 12
Service=usbhub
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
注意:须包括“{” 及“}”的大括号。
7.建立了上面两个全新的注册表项目后,另外还有两个新的注册表项目需要用户手工创建。但在创建前,我们得先在注册表文件中找出一些资料。
(1)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB注册表项目下,从其中一个子项找出准备安装XP系统的USB设备的“Vid_&Pid_名字”。
“VID_&Pid_名字”的结构是Vid_xxxx&Pid_xxxx,当中x代表数字。如本例中,“Vid_&Pid_名字”是Vid_05e3&Pid_0702(图13),将它用笔记录下来,留待下一步骤使用。
图 13
(2)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR注册表项目下,从里面的一个子项中找出HardwarelD这个字符串,将字符串第一行的文字符号完整记录下来。本例中,要记下的文字符号是:USBSTOR\DiskFUJITSU_MHF2043AT_0811(图14),同时将当中的“\”符号改为“#”,所以应改为USBSTOR#DiskFUJITSU_MHF2043AT_0811。
图 14
注意:当中任何一个符号,例如“.”和“_”符号不可有任何缺漏。
8.记下前面步骤获取的资料后,现在要新建两个注册表项目。
(1)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ CriticalDeviceDatabase\注册表项目下新增一个子项,子项的名字是从“Vid_&Pid_名字”修改而成的,本例中为USB#Vid_05e3&Pid_0702。然后,在该子项中新增两个字符串(图15)。
图 15
Service=usbstor
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
(2)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ CriticalDeviceDatabase\注册表项目下新增一个子项,子项的名字取自第7步的HardwarelD。本例中是USBSTOR#DiskFUJITSU_MHF2043AT_0811。然后,在该子项中新建两个字符串(图16)。
图 16
ClassGUID={4D36E967-E325-11CE-BFC1-08002BE10318}
Service=disk
注意:在以上所有针对注册表文件进行的修改中,字母大小写必须完全正确。
9.在HKEY_LOCAL_MACHINE\SYSTEM\注册表项目下,将子项MountedDevices及其里面的东西全部删掉(图17)。
图 17
10.在HKEY_LOCAL_MACHINE\SYSTEM\Setup注册表项目下,将字符串SystemPartition删除(图18)。
图 18
11.检查HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\USBSTOR注册表项目,确定字符串“Start”被设置为0。在“USBSTOR”项目上单击鼠标右键,选择“权限”,设置不让操作系统在这里再进行任何更改。方法是在组中点选“SYSTEM”,并在“权限”一栏勾选“拒绝”(图19)。
图 19
之所以进行此设置,是为了避免系统将Start字符串改回“3”。若改回3,XP启动时就会出现蓝屏错误。不过,当Start字符串为O时,XP将不再自动检测和启用其他USB设备,这也是XP@USB方案最大的缺憾。网上介绍的补救方法是,用户想使用其他USB设备时,可将Start字符串改成3,用完谨记将之改成0,否则下次从USB设备启动XP便会失败。
12.以上所有设置完成后,关闭这个新安装的XP操作系统,千万不要用它启动电脑。
13.将刚才装好XP的硬盘取下来,并装到另一台正常使用XP操作系统的电脑中,用另一个XP操作系统引导(切记不能让刚才新装的硬盘启动电脑)。进入桌面后,找到新装XP的硬盘中,将WINDOWS\System32\Config文件夹下后缀名为.sav、.log及.evt的所有文件删除。
14.打开新装XP的硬盘根目录下的boot.ini文件,检查是否与以下资料相同或相近:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional"/fastdetect
15.利用HP USB Disk Storage Format Tool闪存盘格式化工具软件,将准备用来安装XP的USB闪存盘或USB移动硬盘格式化,可选择FAT、FAT32或NTFS任何一种文件格式,但注意不要勾选“Create a DOS startup disk”一项(图20)。
图 20
16.用一般的复制/粘贴法,将装有这个特别版XP系统的硬盘分区上的所有文件复制到USB设备。注意,Recycle及System Volume Information两个文件夹不要复制。尤其不能够将System Volume Information的内容复制进去,因为途中系统会拒绝而使复制中断。
17.完成以上所有步骤后,在主板BIOS中设置优先从USB设备引导系统。然后用USB闪存盘启动电脑,因为是第一次尝试的缘故,最好先将其他硬盘拔掉,保持安装XP时原有的硬件配置!若XP@USB能够顺利启动,反复运行多次后,再安装其他有必要的硬件驱动程序。
(三)测试结果
笔者自己在换过一个USB存储器及多次的启动尝试后,并进入XP的安全模式解决了一些硬件问题,最终XP@USB能够正常启动使用,效果与正常安装XP系统到硬盘上没有多大分别。同时,功能方面,USB版XP系统内的大部分功能如硬盘版XP系统般都可正常使用。速度方面,由于笔者使用的是一个低速的USB 1.1标准存储器,且不支持USB2.0的主机,所以感觉上是慢了一点,但仍可接受。
笔者建议用户使用1GB容量以上的USB存储器(目前市场上便宜的1GB闪存盘价格不到200元),这样可避开USB存储器不能Set Active的问题。另外,由于XP的安装在没有分页文件的情况下已经超过1GB容量,所以1GB以上容量的USB设备在安装时较为方便。当然,如果用户手上的闪存盘容量较小,想让XP安装后的体积缩小,可利用nLite之类的工具软件预先制作一个精简版的XP再进行安装。
正常使用的XP@USB系统,最好不要进行Windows Update在线升级,因为可能会使XP@USB无法启动,尤其是升级SP2补丁包。如果用户出于安全上网需要确实想升级SP2,则请参考Dietmar在网上论坛的相关报告。
最后,也是最重要的一点,闪存盘或USB读卡器中的存储卡这类Flash存储设备其实并不适合反复进行引导启动,原因是会影响闪存盘或存储卡的寿命。