二、制作一个完整版XP@USB启动闪存盘
( W* m" N7 T+ m' l' ~! M, f) M
8 b$ j& h' Y6 T E; B/ @ 上面已经介绍怎样将PE-builder版本的XP操作系统安装到USB闪存盘上。虽然制作成功的USB闪存盘能够引导并以XP系统核心运行,但毕竟这个方案至始至终只是一个BartPE的版本,在功能和操作方面跟实际意义上的硬盘启动版XP系统仍有一段距离。对于真正想将XP操作系统移植到USB存储设备中的用户来说,这绝对不是理想答案。那么,将完整的XP系统安装到USB闪存盘或其他USB设备使用,究竟可不可行?告诉大家,答案是可行的,至于详情,就请一起参看笔者在下面介绍的XP@USB实战报告。
' W- j! Y" d# Z+ q5 D& P, E: B3 K
* J* |! P4 [& O5 ?
(一)从USB设备启动硬盘版XP失败的原因
5 v e# ~ y7 B \5 ~( r% [
3 g3 }5 @; @0 ]6 e* u; d, H7 e. [ 其实,可能已经有一些朋友尝试过将XP操作系统直接安装到大容量的USB闪存盘、USB读卡器中的存储卡或USB移动硬盘中,但结果都以失败者居多。失败的原因主要是XP操作系统启动后,会把USB闪存盘重新识别成外置的USB存储器而非本机磁盘,使系统产生USB闪存盘身份冲突的问题,从而在系统启动时出现蓝屏错误画面。
/ v% x3 p, w& w# n& \ g9 q" G
尽管失败的尝试居多,但成功的案例也有不少。网上有一位德国朋友Dietmar就在一些论坛中分享了他的成功心得。而在回贴中,不少网友按照Dietmar的方法也成功地将XP系统完整安装到USB闪存盘上。
, q, W. M0 p* f1 B6 g1 V2 e& N1 n
由于Dietmar在网上披露的成功心得是以讨论形式存放的,里面夹杂着另外一些网友的回应,以及几种不同的方案,阅读起来相当凌乱,而且当中有些地方说得相当含糊,读者可能要连看几十页后才能看出端倪,因此笔者特意将当中最简单且确实可行的Tutorial 2方案介绍给大家,并整理出以下报告供各位参考。
; m( r' v. L8 f( f- ?7 A
5 ^3 v8 c: d4 M8 A (二)实际操作过程
4 E( f0 e" S4 C$ W- G
1 Q* n* {5 p3 \$ T8 B 1.准备一个经过格式化后的空白硬盘,将Windows XP with SP1操作系统“新鲜地”安装在硬盘当中(必须安装在第一个分区)。在安装前,若主机的CPU为具备超线程(HyperThreading)技术的处理器,用户必须先在主板BIOS中将此功能关闭(Disabled)。同时,用来安装Windows XP with SP1的电脑不能装有其他硬盘,又或是连接任何的USB设备,总之系统的硬件配置越简单越好,至于光驱和软驱则可正常连接。安装用的XP光盘要带有SP1补丁文件包,但却不能有SP2补丁文件包的存在。有SP2的存在,肯定会在启动时出现蓝屏错误画面。如果大家有心安装SP2补丁包,则请自己参考Dietmar在网上论坛中提供的其他方案。
) A0 a2 k/ g' N8 B# t8 {
1 [3 Y& z$ A$ X4 N2 }& ~3 \0 K 为什么要关闭处理器的“超线程”功能,Dietmar并没有作详细解释。但测试中笔者发现,如果没有将之关闭,结果确实是不能使XP@USB系统启动成功。但是,若XP@USB系统已经安装好,用户使用时再在主板BIOS中将“超线程”技术打开,则不会影响到XP@USB系统的启动和运行。
1 {% _* V6 z* s; z; C! f5 I
4 z3 w: i0 I9 q1 [ 2.将XP安装到硬盘上后,不要为系统安装其他硬件的驱动程序,只需使用XP安装光盘本身提供的驱动程序即可。尤其是主板芯片组方面,绝对不能安装Intel等厂商所提供的驱动程序,充其量只能安装网卡和声卡的驱动程序。如有需要,其他硬件的驱动程序必须在成功完成XP@USB启动后再进行安装。
. Y# n6 Y% J; D" N6 c6 C' E# Q; L( `0 W
3.在新安装的XP系统中,将虚拟内存设为0,方法是在桌面“我的电脑”图标上单击鼠标右键,在随后出现的快捷功能菜单中点选“属性”一项。弹出“系统属性”窗口后,在“高级”标签页的“性能”一项中依次点击“设置”→“高级”→“虚拟内存”→“更改”,勾选“无分页文件”,再点击“确定”即可(图10)。
! Y) |: m( x5 F$ r' b4 L9 c7 b' j: M& B b7 L& a; w; x1 J; H+ J) W
" E! E1 k* e y: Z" ]& `5 W
图 10
+ O7 G0 f" s; c q
6 d9 g1 c& i* k: K5 \1 _/ O 4.完成以上准备工作后,插入想用来安装XP系统的USB闪存盘或USB硬盘,让系统成功识别出该USB设备。
8 q! v8 H& [2 U D/ j, H9 k" M" m0 j3 b( E! O% F1 e4 X% \* D, e: [
5.在系统插着USB闪存盘的情况下,运行注册表编辑器(在Windows桌面依次点击“开始”→“运行”→“regedit”),准备修改注册表文件。首先要改的是四个注册表项目。
3 [$ Y5 N. I2 f
7 f* o! ]7 @* z (1)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\usbehci的注册表项目中,将名为“Start”的DWORD值由3改为0,将名为“Group”的字符串由“Base”改为“Boot Bus Extender”,其余不变。
+ q8 u( `' D/ ]! ]
+ T; F' ~7 \* v6 F, l+ S$ @+ k% N 这是一个系统支持USB 2.0时才会出现的注册表项,在本文的例子中,由于准备制作的XP SP1@USB操作系统并不支持USB 2.0,所以此步骤大家可以跳过不看。
4 Y& b3 ^" L$ }
7 |/ R* h, c' T, L2 b% h (2)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\usbuhci的项中,将“Start”DWORD值由3改为0,将“Group”字符串由“Base”改为“Boot Bus Extender”(图11),其余不变。
# j8 ?# w9 M) M. x x
. u% Y9 z. O% Q! z: H& Q: l2 |
) z$ b S4 Z. o/ a3 z4 E4 _! y" `图 11
* G$ p0 c; f' B5 v; e# d z) S% @5 D* O, p
(3)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\usbhub的项中,将“Start”DWORD值由3改为0,将“Group”字符串由“Base”改为“Boot Bus Extender”,其余不变。
5 y: H: f# N8 l9 U6 h* Q& c4 y" z9 P+ y5 @; Y! P$ C! T
(4)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\USBSTOR的项中,将“Start”DWORD值由3改为0,将“Group”字符串由“Base”改为“Boot Bus Extender”,其余不变。
- |, d; T, d$ V) w: ^: L& V
- R+ u6 a9 x1 j9 n2 \ 6.修改了上面四个大致相同的注册表项目后,现在还要创建两个全新的注册表项。
; `. G0 Z0 h6 ^" g9 ]2 F( |7 l) e/ G7 [& J8 i9 {3 Z1 V% m; K
(1)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\注册表项目下,新建一个名为“usb#root_hub”的子项,并在里面创建两个字符串:
% Q! x ?* @- I. P& O+ a
/ }7 Y6 c) \, [% W
Service=usbhub
' x2 x; l4 t4 n ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
" J, E# S' g( w% W6 S( c! y" p& ]; |4 i. b* l$ V- |" Z) V1 q4 `
注意:须包括“{” 及“ }”的大括号。
+ D* R+ I5 L- \5 o+ u4 K. C. P: C+ Q
(2)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\注册表项目下,新建一个名为“usb#root_hub20”的子项,并在里面创建两个字符串(图12)。
& d3 I- j4 U) R' ~: A
6 X0 f% U+ d' a图 12
2 W6 K5 i" j% j! [! Y; q
# {* [$ c3 N; K' s7 i Service=usbhub
& t+ u- B0 i N3 n ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
( [4 |, W& t+ D, a2 N2 ^
: N' L) Q" T' R
注意:须包括“{” 及“}”的大括号。
4 u" v" v" _: M7 g" d$ I7.建立了上面两个全新的注册表项目后,另外还有两个新的注册表项目需要用户手工创建。但在创建前,我们得先在注册表文件中找出一些资料。
* m! D: r( x* J Q% h7 @! G$ `4 y$ j5 `5 X7 ]
(1)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB注册表项目下,从其中一个子项找出准备安装XP系统的USB设备的“Vid_&Pid_名字”。
; j% ^, B A) J" U X
) ?$ H2 n. e8 n “VID_&Pid_名字”的结构是Vid_xxxx&Pid_xxxx,当中x代表数字。如本例中,“Vid_&Pid_名字”是Vid_05e3&Pid_0702(图13),将它用笔记录下来,留待下一步骤使用。
" P& w5 p+ `5 Y- M' y4 S
# _! Q' q$ `; d2 T- R- d; }
9 b- T: D! \0 }图 13
* _9 q% a+ |: D! E$ n- r
+ c* w1 ` W! x
(2)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR注册表项目下,从里面的一个子项中找出HardwarelD这个字符串,将字符串第一行的文字符号完整记录下来。本例中,要记下的文字符号是:USBSTOR\DiskFUJITSU_MHF2043AT_0811(图14),同时将当中的“\”符号改为“#”,所以应改为USBSTOR#DiskFUJITSU_MHF2043AT_0811。
) ~8 |! o; e. W
! C$ h+ N# K: k& A' x) S1 G* S
, u5 e% a! w+ [. z; Z$ w% I& j
图 14
4 e5 z1 n, X! ^/ O
0 k/ |1 G" o- x" T 注意:当中任何一个符号,例如“.”和“_”符号不可有任何缺漏。
6 d/ Y Z' r9 f- G0 a- |
5 @5 q: m# [) y6 ?( I
8.记下前面步骤获取的资料后,现在要新建两个注册表项目。
" u" f% E1 O; t+ ?6 b$ j: F3 e8 f/ L- w- S8 V% A
(1)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ CriticalDeviceDatabase\注册表项目下新增一个子项,子项的名字是从“Vid_&Pid_名字”修改而成的,本例中为USB#Vid_05e3&Pid_0702。然后,在该子项中新增两个字符串(图15)。
/ M. m) a5 q f8 R/ L% y
% K1 w5 J4 c' l4 P# n
7 D! S( e$ o% X+ U
图 15
/ \2 n# x- \2 n6 p
6 Q+ q4 P) a4 C. }8 y Service=usbstor
" o; z( O& h. `& _7 @ I7 v5 Z ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
, C& ^0 j0 O1 C+ B O
" s0 h( {& k8 Y) X (2)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ CriticalDeviceDatabase\注册表项目下新增一个子项,子项的名字取自第7步的HardwarelD。本例中是USBSTOR#DiskFUJITSU_MHF2043AT_0811。然后,在该子项中新建两个字符串(图16)。
0 n; K2 P* C1 x/ G; F8 Q! f1 _) R2 F) D y/ w V
W" N$ r9 S: u& Q图 16
/ R/ \7 s5 l3 V) \* L: J9 u) R2 S3 m- X
ClassGUID={4D36E967-E325-11CE-BFC1-08002BE10318}
( k( f2 d% z/ I. e) Z
Service=disk
/ Y) W4 R, d3 ~! f# p8 _8 x
, z4 U4 f; b, r8 R3 t- ~! ^ 注意:在以上所有针对注册表文件进行的修改中,字母大小写必须完全正确。
* a, ]) b& W% F9 y$ t/ r" l2 v
, U: n( o' d: e. i$ U4 _& p/ ?: q: q 9.在HKEY_LOCAL_MACHINE\SYSTEM\注册表项目下,将子项MountedDevices及其里面的东西全部删掉(图17)。
$ g" u( W- U% d' n1 n
4 X# S3 p$ f$ s- j1 G
# W0 X8 c' o4 B3 H5 K4 C& J
图 17
. x/ l9 M* \/ u. z' b9 B
# `( x1 j8 v6 P' h 10.在HKEY_LOCAL_MACHINE\SYSTEM\Setup注册表项目下,将字符串SystemPartition删除(图18)。
0 A2 c7 @* K" `/ k
( n1 O' j* p/ G K5 i9 Y
7 O- w4 U( N9 T7 W图 18
3 F1 v2 a, L1 k7 g
* y# f9 d, J: h3 f8 Y# {; D 11.检查HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\USBSTOR注册表项目,确定字符串“Start”被设置为0。在“USBSTOR”项目上单击鼠标右键,选择“权限”,设置不让操作系统在这里再进行任何更改。方法是在组中点选“SYSTEM”,并在“权限”一栏勾选“拒绝”(图19)。
0 w$ [7 z! g5 m# _& R0 ~ z1 b& ?6 a
& T9 F) I) F5 g' j' l3 a6 D+ q
" i% S( E: d6 c$ v2 H. Y
图 19
! n% k" q; V1 Y3 M% x7 g" v; v
! w2 L# k$ O6 Q- Y. \5 T( ~
之所以进行此设置,是为了避免系统将Start字符串改回“3”。若改回3,XP启动时就会出现蓝屏错误。不过,当Start字符串为O时,XP将不再自动检测和启用其他USB设备,这也是XP@USB方案最大的缺憾。网上介绍的补救方法是,用户想使用其他USB设备时,可将Start字符串改成3,用完谨记将之改成0,否则下次从USB设备启动XP便会失败。
" ~* a& ]% U7 i1 p- B
3 {: P) z/ F H2 N2 V2 x! z12.以上所有设置完成后,关闭这个新安装的XP操作系统,千万不要用它启动电脑。
3 Q5 I. } ~/ j6 g- A3 B
! \- M* u8 A2 z, @/ J3 C) w! F0 N
13.将刚才装好XP的硬盘取下来,并装到另一台正常使用XP操作系统的电脑中,用另一个XP操作系统引导(切记不能让刚才新装的硬盘启动电脑)。进入桌面后,找到新装XP的硬盘中,将WINDOWS\System32\Config文件夹下后缀名为.sav、.log及.evt的所有文件删除。
5 L; f% b. Q: e) _$ y/ Z2 x" I5 b K i7 S d
14.打开新装XP的硬盘根目录下的boot.ini文件,检查是否与以下资料相同或相近:
# l- ^2 f8 z& U1 e3 ~9 a$ Q# C( E) l6 J4 F; P/ w% X( ]" X$ D
[boot loader]
9 M& A6 V- Y! S
timeout=30
" B3 J( h+ I- q9 |6 A4 _) Y
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
/ z6 T0 _% C% s9 A. Y+ P; e
[operating systems]
( H. n* M8 J7 {: w# g7 c
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional"/fastdetect
U- z" t- D5 Q; r) b: x/ u w( y: S$ q3 @" a' Q
15.利用HP USB Disk Storage Format Tool闪存盘格式化工具软件,将准备用来安装XP的USB闪存盘或USB移动硬盘格式化,可选择FAT、FAT32或NTFS任何一种文件格式,但注意不要勾选“Create a DOS startup disk”一项(图20)。
( B+ G0 _0 ^6 W. K3 j- b/ T, ]# S; ^6 D6 @2 p' J- g9 J
/ @0 d2 b' G' h o7 Z16.用一般的复制/粘贴法,将装有这个特别版XP系统的硬盘分区上的所有文件复制到USB设备。注意,Recycle及System Volume Information两个文件夹不要复制。尤其不能够将System Volume Information的内容复制进去,因为途中系统会拒绝而使复制中断。
! \2 \# G3 Z" a# {$ @1 ~9 g6 J
+ e+ ?" I" N1 X$ I8 h- k8 Z 17.完成以上所有步骤后,在主板BIOS中设置优先从USB设备引导系统。然后用USB闪存盘启动电脑,因为是第一次尝试的缘故,最好先将其他硬盘拔掉,保持安装XP时原有的硬件配置!若XP@USB能够顺利启动,反复运行多次后,再安装其他有必要的硬件驱动程序。
7 N8 @, E g* R
" e/ s7 g |) s5 r. c8 Z (三)测试结果
, L* s0 ^- t# Z5 y Y. C" E3 c+ g% K: z7 `- A% _
笔者自己在换过一个USB存储器及多次的启动尝试后,并进入XP的安全模式解决了一些硬件问题,最终XP@USB能够正常启动使用,效果与正常安装XP系统到硬盘上没有多大分别。同时,功能方面,USB版XP系统内的大部分功能如硬盘版XP系统般都可正常使用。速度方面,由于笔者使用的是一个低速的USB 1.1标准存储器,且不支持USB2.0的主机,所以感觉上是慢了一点,但仍可接受。
4 d- P; y' ] m
2 z! u7 v# Y. E; X; P: H* } W
笔者建议用户使用1GB容量以上的USB存储器(目前市场上便宜的1GB闪存盘价格不到200元),这样可避开USB存储器不能Set Active的问题。另外,由于XP的安装在没有分页文件的情况下已经超过1GB容量,所以1GB以上容量的USB设备在安装时较为方便。当然,如果用户手上的闪存盘容量较小,想让XP安装后的体积缩小,可利用nLite之类的工具软件预先制作一个精简版的XP再进行安装。
, ]$ B- F" v( g
5 D0 o8 X' A6 R% O$ s& d
正常使用的XP@USB系统,最好不要进行Windows Update在线升级,因为可能会使XP@USB无法启动,尤其是升级SP2补丁包。如果用户出于安全上网需要确实想升级SP2,则请参考Dietmar在网上论坛的相关报告。
# z6 z& G) I1 H
; \6 \- E r! r7 N5 E5 b 最后,也是最重要的一点,闪存盘或USB读卡器中的存储卡这类Flash存储设备其实并不适合反复进行引导启动,原因是会影响闪存盘或存储卡的寿命。