<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>swigger's BLOG &#187; boot</title>
	<atom:link href="http://www.swigger.net/archives/category/boot/feed" rel="self" type="application/rss+xml" />
	<link>http://www.swigger.net</link>
	<description>醉卧沙场君莫笑 古来征战几人回</description>
	<lastBuildDate>Tue, 24 Jan 2012 05:34:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>卡住在 “setup is starting windows” 时的问题</title>
		<link>http://www.swigger.net/archives/172.html</link>
		<comments>http://www.swigger.net/archives/172.html#comments</comments>
		<pubDate>Sun, 28 Mar 2010 17:10:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[boot]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=172</guid>
		<description><![CDATA[用2003的setupldr.bin加载ram盘做XP的一些启动时发现，老是卡死在 “setup is starting windows” 这里，永远也不会恢复。 N天都无果，今天无意中发现，原来是必须是用windows 2003 sp1的setupldr.bin才行。sp2的就不行。 ramdisk.sy_ 倒是好像可以随意。 so, you must use win2k3sp1 &#8216;s sutupldr.bin to avoid hangs on “setup is starting windows”.]]></description>
			<content:encoded><![CDATA[<p>用2003的setupldr.bin加载ram盘做XP的一些启动时发现，老是卡死在</p>
<p>“setup is starting windows” 这里，永远也不会恢复。</p>
<p>N天都无果，今天无意中发现，原来是必须是用windows 2003 sp1的setupldr.bin才行。sp2的就不行。</p>
<p>ramdisk.sy_ 倒是好像可以随意。</p>
<p>so, you must use win2k3sp1 &#8216;s sutupldr.bin to avoid hangs on “setup is starting windows”.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/172.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>移动XP的新情况</title>
		<link>http://www.swigger.net/archives/157.html</link>
		<comments>http://www.swigger.net/archives/157.html#comments</comments>
		<pubDate>Sun, 21 Mar 2010 17:37:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[boot]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=157</guid>
		<description><![CDATA[我的WINXP移动版，也就是装在移动硬盘上的XP。在应用到我的新电脑（联想LENOVO G455A M320）时，发生了新的情况。 本来，移动的XP应该是，不论在哪里，插到新电脑上，一用USB启动，就自动进入到系统中，这样我不论在什么地方，都可以使用我原来的系统，最熟悉的系统，不用担心要同步文档配置啥的。而且这个绝对不是WINPE能比的，WINPE能在任何电脑上启动XP，但它只是用于维护和简单的使用。而移动版XP的功能是完整的，跟装在机箱内部硬盘的XP一样的功能。 移动的理想是美好的，现实是，在遇到全新的硬件时，它不一定能启动启来，可能发生BSOD 0x000007b错误。在G455A上就遇到了。 由于这个笔记本没有PCI Express Card接口，无法用我高价买的express 1394卡进行kernel debugging。它也没有串口，无法用串口kernel debuging. XP不支持USB kernel debugging, 就算换到vista或win7, 估计ehci的usb debug port也没有导出（有没有导出纯粹看运气，厂商一般不会故意导出）。总而言之，kernel debugging来诊断为什么从USB移动硬盘上启动不了，是没戏了。只能瞎子乱摸了。 说说最后的成果： 1.  HKLM\SYSTEM\MountedDevices下的值 \DosDevice\C: 必须删掉，换了硬件后，后面的二进制可能变了，不删掉此项，可能导致C盘不能挂载，从而发生蓝屏。把此功能加到移动XP的recovery module中。 2. 需要copy安装盘安装时生成的 HKLM\SYSTEM\ControlSet001\Enum\PCI 全目录。由于我在recovery module中copy的是winpe的。跟安装盘的setupldr.bin生成的PCI信息有些差别，导致不能启动。要彻底解决，必须基于安装盘而不是PE重写recovery mode。不过我没有时间搞这玩意儿了。而且接下来可能要研究移动版win7而不是XP了，所以&#8230;算了吧。 再说说过程： 由于只能瞎子乱撞的试验，最开始试了很多次都成功不了。后来还是想到，重头再来，在机器上的主硬盘上新装一个全新的XP，先不装驱动，为了省时间，反正能登录进去的XP就行了。然后改注册表重启，使得用winobj看arcnames的时候，可以看到插上电脑的USB移动硬盘的记录。看到后说明，这份COPY的XP已经可以从USB移动硬盘启动。 然后，有了一个成功的版本，也有了一个失败的版本，就让它们不断的逼近吧。这里又出了一个问题：方案上，可以用二分法快速逼近找出问题的关键，也可以用经验为主的方式进行重点排查，我选择了后者，尝试重启若干次，无果。 只好往第一种方法偏，最终发现了1和2这两个结论。少一个也不行。 我以前碰到的电脑，尝试了好多种硬件，都发现只需要COPY WINPE的PCI信息就可以修复成功启动了，但现在这电脑非得要安装时产生的。不知道是不是新硬件搞出的新脾气。 移动版XP以后也没有太大的研究价值了，希望移动版的WIN7会更容易配置。不过VISTA/WIN7的boot配置就够麻烦的了，还是boot.ini来得简洁直观。 我在一些论坛上说移动的操作系统时，总要被人用WIN  PE来拍砖。 其实移动OS是用来替换平时工作学习娱乐所用的OS的，跟WINPE主要用于维护是十分的不同。 你需要背着笔记本从家里到公司，或从宿舍到实验室吗，或者带着它从A地出差到B地吗？如果你在两处都有电脑，用移动的OS肯定好过背一台电脑。现代社会在目标地找或借一台电脑已经不难了，背个硬盘相比于背台笔记本，那肯定是爽了很多。 你需要同步在家里电脑和公司电脑上产生的不同的内容吗？如果用了移动的OS，那所有的文档设置和生产出来的文件都已经在移动硬盘上同步了，根本没有合并和版本选择的烦恼。 LINUX是很容易做成移动的OS的，微软则则不知是有意还是无意制造了一些烦恼，让你的WIN不能在移动硬盘上启动任何一台电脑，只是提供了一个用于维护的WINPE。还好XP和WIN7都是可以做成移动系统的。前者我已经成功了，后者，在网上能找到有些人的成功记录，估计应该不会太难实现。待到有空时，再搞个500G的移动硬盘，试试移动WIN7了。]]></description>
			<content:encoded><![CDATA[<p>我的WINXP移动版，也就是装在移动硬盘上的XP。在应用到我的新电脑（联想LENOVO G455A M320）时，发生了新的情况。</p>
<p>本来，移动的XP应该是，不论在哪里，插到新电脑上，一用USB启动，就自动进入到系统中，这样我不论在什么地方，都可以使用我原来的系统，最熟悉的系统，不用担心要同步文档配置啥的。而且这个绝对不是WINPE能比的，WINPE能在任何电脑上启动XP，但它只是用于维护和简单的使用。而移动版XP的功能是完整的，跟装在机箱内部硬盘的XP一样的功能。</p>
<p>移动的理想是美好的，现实是，在遇到全新的硬件时，它不一定能启动启来，可能发生BSOD 0x000007b错误。在G455A上就遇到了。</p>
<p>由于这个笔记本没有PCI Express Card接口，无法用我高价买的express 1394卡进行kernel debugging。它也没有串口，无法用串口kernel debuging. XP不支持USB kernel debugging, 就算换到vista或win7, 估计ehci的usb debug port也没有导出（有没有导出纯粹看运气，厂商一般不会故意导出）。总而言之，kernel debugging来诊断为什么从USB移动硬盘上启动不了，是没戏了。只能瞎子乱摸了。</p>
<p>说说最后的成果：<br />
1.  HKLM\SYSTEM\MountedDevices下的值 \DosDevice\C: 必须删掉，换了硬件后，后面的二进制可能变了，不删掉此项，可能导致C盘不能挂载，从而发生蓝屏。把此功能加到移动XP的recovery module中。<br />
2. 需要copy安装盘安装时生成的 HKLM\SYSTEM\ControlSet001\Enum\PCI 全目录。由于我在recovery module中copy的是winpe的。跟安装盘的setupldr.bin生成的PCI信息有些差别，导致不能启动。要彻底解决，必须基于安装盘而不是PE重写recovery mode。不过我没有时间搞这玩意儿了。而且接下来可能要研究移动版win7而不是XP了，所以&#8230;算了吧。</p>
<p>再说说过程：</p>
<p>由于只能瞎子乱撞的试验，最开始试了很多次都成功不了。后来还是想到，重头再来，在机器上的主硬盘上新装一个全新的XP，先不装驱动，为了省时间，反正能登录进去的XP就行了。然后改注册表重启，使得用winobj看arcnames的时候，可以看到插上电脑的USB移动硬盘的记录。看到后说明，这份COPY的XP已经可以从USB移动硬盘启动。</p>
<p>然后，有了一个成功的版本，也有了一个失败的版本，就让它们不断的逼近吧。这里又出了一个问题：方案上，可以用二分法快速逼近找出问题的关键，也可以用经验为主的方式进行重点排查，我选择了后者，尝试重启若干次，无果。 只好往第一种方法偏，最终发现了1和2这两个结论。少一个也不行。</p>
<p>我以前碰到的电脑，尝试了好多种硬件，都发现只需要COPY WINPE的PCI信息就可以修复成功启动了，但现在这电脑非得要安装时产生的。不知道是不是新硬件搞出的新脾气。</p>
<p>移动版XP以后也没有太大的研究价值了，希望移动版的WIN7会更容易配置。不过VISTA/WIN7的boot配置就够麻烦的了，还是boot.ini来得简洁直观。</p>
<p>我在一些论坛上说移动的操作系统时，总要被人用WIN  PE来拍砖。 其实移动OS是用来替换平时工作学习娱乐所用的OS的，跟WINPE主要用于维护是十分的不同。</p>
<p>你需要背着笔记本从家里到公司，或从宿舍到实验室吗，或者带着它从A地出差到B地吗？如果你在两处都有电脑，用移动的OS肯定好过背一台电脑。现代社会在目标地找或借一台电脑已经不难了，背个硬盘相比于背台笔记本，那肯定是爽了很多。</p>
<p>你需要同步在家里电脑和公司电脑上产生的不同的内容吗？如果用了移动的OS，那所有的文档设置和生产出来的文件都已经在移动硬盘上同步了，根本没有合并和版本选择的烦恼。</p>
<p>LINUX是很容易做成移动的OS的，微软则则不知是有意还是无意制造了一些烦恼，让你的WIN不能在移动硬盘上启动任何一台电脑，只是提供了一个用于维护的WINPE。还好XP和WIN7都是可以做成移动系统的。前者我已经成功了，后者，在网上能找到有些人的成功记录，估计应该不会太难实现。待到有空时，再搞个500G的移动硬盘，试试移动WIN7了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/157.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>折腾了一下，加强U盘的启动能力</title>
		<link>http://www.swigger.net/archives/56.html</link>
		<comments>http://www.swigger.net/archives/56.html#comments</comments>
		<pubDate>Mon, 02 Mar 2009 15:54:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[boot]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=56</guid>
		<description><![CDATA[今天新买的群联芯片的 8G U盘启动方面遇到一点问题。过程中觉得很奇怪，当然事实上是不奇怪的，只是目前bios和千差万别导致如此了。 首先是发现我的笔记本与公司电脑不一样，调好一边另一边启不动。后来发现grub4dos的启动能力强点。 就用它了，搞定一个 case。 然而又发现，在公司同样的dell 740版电脑，A机器进BIOS发现启动可选USB-HDD，而USB-ZIP旁边标示着not present. B机器进BIOS，情况就反过来了，USB-ZIP可用，而USB-HDD则标为not present。 这两台机器，只有BIOS的版本不一样，其它硬件都一样。因为其中一台是刷过BIOS的。 这两种不同的情况导致了严重的后果。USB-ZIP的那台机器无法启动。显示 Remove disks or other media. Press any key to restart 经查，这句话位于活动活区的第一扇区。把它改为其它值后发现，提示信息跟着变化。 这说明，bios直接启动了第一扇区的代码，未经过mbr.(mbr上装着grub4dos) 接下来就简单了，修改一下这个第一扇区的代码。还是老办法，0&#215;40处的0&#215;00一定要改为0&#215;80，这是非软盘启动的基础。这个字节表示启动的介质类型。不是软盘就得填0&#215;80。还有就是0xe6的四个字节跳转指令全部nop掉。强制用LBA方式（扩展int 13）读盘。这样不同BIOS的CHS参数不一样的问题 可以被绕过。此外0&#215;170处的NTLDR改为GRLDR，强制启动grub4dos. 修改完成后，这个盘就可以在两台机器上都启动了。]]></description>
			<content:encoded><![CDATA[<p>今天新买的群联芯片的 8G U盘启动方面遇到一点问题。过程中觉得很奇怪，当然事实上是不奇怪的，只是目前bios和千差万别导致如此了。</p>
<p>首先是发现我的笔记本与公司电脑不一样，调好一边另一边启不动。后来发现grub4dos的启动能力强点。<br />
就用它了，搞定一个 case。</p>
<p>然而又发现，在公司同样的dell 740版电脑，A机器进BIOS发现启动可选USB-HDD，而USB-ZIP旁边标示着not present.<br />
B机器进BIOS，情况就反过来了，USB-ZIP可用，而USB-HDD则标为not present。<br />
这两台机器，只有BIOS的版本不一样，其它硬件都一样。因为其中一台是刷过BIOS的。</p>
<p>这两种不同的情况导致了严重的后果。USB-ZIP的那台机器无法启动。显示<br />
Remove disks or other media.<br />
Press any key to restart<br />
经查，这句话位于活动活区的第一扇区。把它改为其它值后发现，提示信息跟着变化。</p>
<p>这说明，bios直接启动了第一扇区的代码，未经过mbr.(mbr上装着grub4dos)</p>
<p>接下来就简单了，修改一下这个第一扇区的代码。还是老办法，0&#215;40处的0&#215;00一定要改为0&#215;80，这是非软盘启动的基础。这个字节表示启动的介质类型。不是软盘就得填0&#215;80。还有就是0xe6的四个字节跳转指令全部nop掉。强制用LBA方式（扩展int 13）读盘。这样不同BIOS的CHS参数不一样的问题 可以被绕过。此外0&#215;170处的NTLDR改为GRLDR，强制启动grub4dos.</p>
<p>修改完成后，这个盘就可以在两台机器上都启动了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/56.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>真正的U盘启动安装XP系统，不需要PE</title>
		<link>http://www.swigger.net/archives/54.html</link>
		<comments>http://www.swigger.net/archives/54.html#comments</comments>
		<pubDate>Wed, 11 Feb 2009 16:19:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[boot]]></category>
		<category><![CDATA[usb install setup winxp]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=54</guid>
		<description><![CDATA[U盘启动安装XP，方法也有不少了。大约有以下几种： 1. 启动到dos，加载smartdrv, 用winnt安装。缺点：很慢。安装时无法给硬盘重新分区，不能格式化C盘。 2. 启动到WINPE，在WINPE里分区，格式化。可加载虚拟光驱，安装时选择高级，拷贝所有文件到硬盘。方法比较麻烦。 3. 某老外发明的，还做了一个大bat，把winxp先安装一半到U盘上，同用U盘装到系统上。兼容性差，不能从A电脑装一半再应用到B电脑。放弃。 4. 量产为USBCDROM， 受硬件条件限制，有的U盘量产的CDROM不能在某些主板上启动。不好。 我这里提出一种全新的方案，使得从U盘装XP就像U盘装vista一样，或者说像是从CDROM里装XP一样。首先，在WINXP/2003下用分区工具(如hpusbfw.exe)给U盘分区并格式化好(这样格式化的分区可直接启动ntldr)。然后，把光盘上的文件全拷到U盘根目录（其实只要拷I386目录和根目录下的win51开头的文件就行了） 很多人不会设置U盘启动ntldr，在这里说一下过程： 1. 用hpusbfw.exe格式化U盘。选fat32就行了。格完取下再插上。 2. 再次用winxp自己的工具格式化成fat32。 3. 放一个ntldr文件和boot.ini文件。boot.ini中至少有两个项目，timeout设为30秒，从U盘启动，看看有没有出现boot.ini中的选单，如果有，则成功。如果没有，那就用winhex把分区第一扇区的0&#215;40偏移处的00改为80，然后再试。如果还是不能成功，那估计碰上死硬电脑了，请看这一篇： http://www.swigger.net/archives/56.html   最后，下载这个文件： usb_inst_xp1.rar            解压密码：cygwin 把文件解开把U盘根目录。（注，解开后，ntldr/boot.ini/ntdetect.com在U盘根目录，i386下增加winnt.sif和instxp文件） 好了，现在从U盘启动，会出现启动菜单，第一次选install xp，就跟光盘安装一样了，安装时可以格式化硬盘和分区，跟光盘安装全一样。 安装过程后来要求重启时，都选 run xp ondisk1。最后安装成功后还是从这个菜单项进入windows。显示全部文件包括受系统保护的文件，去除c:\boot.ini的只读属性，把C:\boot.ini里的： multi(0)disk(0)rdisk(1)partition(1)  改为： multi(0)disk(0)rdisk(0)partition(1) 即把一个1改成0. 现在可以拔除U盘，从BIOS设置硬盘启动了。xp安装完毕。就跟从光盘装一样。]]></description>
			<content:encoded><![CDATA[<p>U盘启动安装XP，方法也有不少了。大约有以下几种：</p>
<p>1. 启动到dos，加载smartdrv, 用winnt安装。缺点：很慢。安装时无法给硬盘重新分区，不能格式化C盘。</p>
<p>2. 启动到WINPE，在WINPE里分区，格式化。可加载虚拟光驱，安装时选择高级，拷贝所有文件到硬盘。方法比较麻烦。</p>
<p>3. 某老外发明的，还做了一个大bat，把winxp先安装一半到U盘上，同用U盘装到系统上。兼容性差，不能从A电脑装一半再应用到B电脑。放弃。</p>
<p>4. 量产为USBCDROM， 受硬件条件限制，有的U盘量产的CDROM不能在某些主板上启动。不好。</p>
<p>我这里提出一种全新的方案，使得从U盘装XP就像U盘装vista一样，或者说像是从CDROM里装XP一样。首先，在WINXP/2003下用分区工具(如hpusbfw.exe)给U盘分区并格式化好(这样格式化的分区可直接启动ntldr)。然后，把光盘上的文件全拷到U盘根目录（其实只要拷I386目录和根目录下的win51开头的文件就行了）</p>
<p><span style="color: #800080;">很多人不会设置U盘启动ntldr，在这里说一下过程：<br />
1. 用hpusbfw.exe格式化U盘。选fat32就行了。格完取下再插上。<br />
2. 再次用winxp自己的工具格式化成fat32。<br />
3. 放一个ntldr文件和boot.ini文件。boot.ini中至少有两个项目，timeout设为30秒，从U盘启动，看看有没有出现boot.ini中的选单，如果有，则成功。如果没有，那就用winhex把分区第一扇区的0&#215;40偏移处的00改为80，然后再试。如果还是不能成功，那估计碰上死硬电脑了，请看这一篇：</span> <a href="http://www.swigger.net/archives/56.html">http://www.swigger.net/archives/56.html</a></p>
<p> </p>
<p>最后，下载这个文件： <a href="http://www.swigger.net/soft/usb_inst_xp1.rar">usb_inst_xp1.rar </a>           解压密码：cygwin</p>
<p>把文件解开把U盘根目录。（注，解开后，ntldr/boot.ini/ntdetect.com在U盘根目录，i386下增加winnt.sif和instxp文件）</p>
<p>好了，现在从U盘启动，会出现启动菜单，第一次选install xp，就跟光盘安装一样了，安装时可以格式化硬盘和分区，跟光盘安装全一样。 安装过程后来要求重启时，都选 run xp ondisk1。最后安装成功后还是从这个菜单项进入windows。显示全部文件包括受系统保护的文件，去除c:\boot.ini的只读属性，把C:\boot.ini里的：</p>
<p>multi(0)disk(0)rdisk(1)partition(1)</p>
<p> 改为：</p>
<p>multi(0)disk(0)rdisk(0)partition(1)</p>
<p>即把一个1改成0.</p>
<p>现在可以拔除U盘，从BIOS设置硬盘启动了。xp安装完毕。就跟从光盘装一样。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/54.html/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>尝试把windows xp装到移动硬盘上，一些情况</title>
		<link>http://www.swigger.net/archives/53.html</link>
		<comments>http://www.swigger.net/archives/53.html#comments</comments>
		<pubDate>Sun, 28 Dec 2008 14:22:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[boot]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=53</guid>
		<description><![CDATA[首先这个windows xp绝对不是win pe，PE就不用说了，放到U盘或移动硬盘上很容易。 试了把原版XP装到移动硬盘上，快成功了，以下是一些有意思的问题或情况： 1. 有的驱动会出问题，比如我最初在x200上实现装到移动硬盘，后来移到T43再移到台机。   移到台机发现一个有意思的蓝屏，查了一下是intelppm.sys引起的。而这个.sys是 intel cpu的驱动程序。它里面调用了rdmsr读寄存器，换成amd cpu它这一读就异常了intel 又没处理这个异常，就蓝屏了。其实它完全可以在driverentry里调用cpuid判断    一下是不是自己的CPU，不是就return fail，这样就不会有问题了。这个驱动算是写得不好的。这个问题的解决方案就是把intelppm设为手动运行。（SYSTEM_START改为DEMAND_START）。还好CPU的驱动不重要，不装都没事。 2. 写得好点的驱动会判断设备存不存在或对不对，这就带来另一个问题，降低了win的启动速度。它很可能向设备发送一条命令，然后等待响应，可能要等到超时才发现没有设备。在移动硬盘上启动xp,启动画面可能要转9圈。比专为一套硬件安装的要慢一点。此外，在多台机器启动后安装了多个驱动，为了各处启动本身驱动要装得多，也导致变慢。不过还好，不是很慢。影响不大。 3. 2导致的另一个结果是，很多驱动启动失败（ms的驱动跟win32 services一样是以服务形式安装在注册表）。这样启动完后进入windows一看事件查看器，一堆的红叉叉。 4. 蓝屏是个很好的东西，内核发现什么不对就调用bugcheck蓝屏。这样我就可以根据它来查找和解决原因。这样蓝屏了无数次后终于实现了可在三台机器都启动。最难查的问题就是没有错误提示的东西。比如我在台机上启动后发现xp的主题出不来，窗口发白。手动在桌面右键那里修改一下就出主题了。这个问题就查不了，没有地方报错，估计只能每次这样手动调了。 5. windows好像还挺聪明的，我的移动硬盘的第一分区只剩下2G左右空间，它启动后很智能的把pagefile放到机器自带硬盘的主分区去了（即平时的C盘）。  ]]></description>
			<content:encoded><![CDATA[<p>首先这个windows xp绝对不是win pe，PE就不用说了，放到U盘或移动硬盘上很容易。</p>
<p>试了把原版XP装到移动硬盘上，快成功了，以下是一些有意思的问题或情况：</p>
<p>1. 有的驱动会出问题，比如我最初在x200上实现装到移动硬盘，后来移到T43再移到台机。   移到台机发现一个有意思的蓝屏，查了一下是intelppm.sys引起的。而这个.sys是 intel cpu的驱动程序。它里面调用了rdmsr读寄存器，换成amd cpu它这一读就异常了intel 又没处理这个异常，就蓝屏了。其实它完全可以在driverentry里调用cpuid判断<br />
   一下是不是自己的CPU，不是就return fail，这样就不会有问题了。这个驱动算是写得不好的。这个问题的解决方案就是把intelppm设为手动运行。（SYSTEM_START改为DEMAND_START）。还好CPU的驱动不重要，不装都没事。<br />
2. 写得好点的驱动会判断设备存不存在或对不对，这就带来另一个问题，降低了win的启动速度。它很可能向设备发送一条命令，然后等待响应，可能要等到超时才发现没有设备。在移动硬盘上启动xp,启动画面可能要转9圈。比专为一套硬件安装的要慢一点。此外，在多台机器启动后安装了多个驱动，为了各处启动本身驱动要装得多，也导致变慢。不过还好，不是很慢。影响不大。</p>
<p>3. 2导致的另一个结果是，很多驱动启动失败（ms的驱动跟win32 services一样是以服务形式安装在注册表）。这样启动完后进入windows一看事件查看器，一堆的红叉叉。</p>
<p>4. 蓝屏是个很好的东西，内核发现什么不对就调用bugcheck蓝屏。这样我就可以根据它来查找和解决原因。这样蓝屏了无数次后终于实现了可在三台机器都启动。最难查的问题就是没有错误提示的东西。比如我在台机上启动后发现xp的主题出不来，窗口发白。手动在桌面右键那里修改一下就出主题了。这个问题就查不了，没有地方报错，估计只能每次这样手动调了。</p>
<p>5. windows好像还挺聪明的，我的移动硬盘的第一分区只剩下2G左右空间，它启动后很智能的把pagefile放到机器自带硬盘的主分区去了（即平时的C盘）。</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/53.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>winpe进程启动顺序</title>
		<link>http://www.swigger.net/archives/52.html</link>
		<comments>http://www.swigger.net/archives/52.html#comments</comments>
		<pubDate>Fri, 26 Dec 2008 18:56:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[boot]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=52</guid>
		<description><![CDATA[想用WINPE来做点事情，深山红叶里有个很好的迷你PE盘。只有一点点文件，才几十M。 用windbg调了一下进程启动顺序，发现如下： 首先内核创建第一个用户进程 smss.exe 后来smss.exe创建 csrss.exe 再后 csrss.exe创建winlogon.exe winlogon创建services.exe, lsass.exe , pelogon.exe等。 如下图： smss -&#62; csrss.exe -&#62; winlogon.exe -&#62; services.exe -setup                 -&#62; X:\WXPE\system32\lsass.exe -setup                 -&#62; PELOGON.EXE PECMD.EXE LOAD %SystemRoot%\SYSTEM32\PECMD.INI =&#62; pecmd.exe =&#62; showdrive.exe 因为smss和csrss是native应用程序，而winlogon开始是win32子系统程序，因此，如果想要做点事的话，还是替换winlogon.exe比较好。这样编程方便。]]></description>
			<content:encoded><![CDATA[<p>想用WINPE来做点事情，深山红叶里有个很好的迷你PE盘。只有一点点文件，才几十M。</p>
<p>用windbg调了一下进程启动顺序，发现如下：</p>
<p>首先内核创建第一个用户进程 smss.exe</p>
<p>后来smss.exe创建 csrss.exe</p>
<p>再后 csrss.exe创建winlogon.exe</p>
<p>winlogon创建services.exe, lsass.exe , pelogon.exe等。</p>
<p>如下图：</p>
<p>smss -&gt; csrss.exe</p>
<p>-&gt; winlogon.exe -&gt; services.exe -setup<br />
                -&gt; X:\WXPE\system32\lsass.exe -setup<br />
                -&gt; PELOGON.EXE PECMD.EXE LOAD %SystemRoot%\SYSTEM32\PECMD.INI =&gt; pecmd.exe =&gt; showdrive.exe</p>
<p>因为smss和csrss是native应用程序，而winlogon开始是win32子系统程序，因此，如果想要做点事的话，还是替换winlogon.exe比较好。这样编程方便。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/52.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>U盘启动小结</title>
		<link>http://www.swigger.net/archives/49.html</link>
		<comments>http://www.swigger.net/archives/49.html#comments</comments>
		<pubDate>Sun, 23 Nov 2008 16:05:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[boot]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=49</guid>
		<description><![CDATA[现在的U盘都比较大了，所以ZIP模式和HDD模式已经不太重要了，可以忽略了。 本文只说  USB-CD模式和USB-HDD模式。 USB-CD 模式是比较不错的一个方式，可惜对硬件有一定要求。现在我们去买U盘的时候，能买到一些U盘带有一些特殊的功能，比如杀毒功能。这种U盘插入电脑后，会多出两个盘符，一个是光盘，里面放的是实现这些特殊功能的软件，还有一个就是移动盘符，也就是给用户使用的U盘存储了。 那么，这个光盘是怎么出来的呢？实际上，每个U盘都可以这样造出光盘来，用量产工具就可以了，量产工具可以在这里找到： http://bbs.mydigit.cn/read.php?tid=20620 不过，这样生产出来的光盘，不一定能用来启动。这跟BIOS有关系，一个U盘上同时有光盘和移动存储时，可能有两种情况。情况A：光盘在前面，移动存储在后面。情况B：移动存储在前，光盘在后。 如果碰到情况B，问题不太好办。有的主板只认第一个东西。比如IBM笔记本，我的T43和刚买的X200，BIOS都不支持这种状况。碰到情况A就比较好了。遗憾的是，这个A和B不是自己能选的，量产工具并不支持调整，所以，只能买不同芯片的U盘来达到这一目的。目前我用过的，只有iCreate的芯片的量产工具是支持情况A的。有了这样的U盘后，量产一下，只要主板支持USB-CD，就什么ISO都能拿来启动了。 小结一下步骤： 确定U盘的量产工具 量产放入一个支持启动的ISO。 改BIOS从USB-CD启动，实验。如果主板支持情况B，则什么U盘都能启动。 如果主板不支持情况B，就只能去找个别的芯片的U盘了，比如找个iCreate芯片的。然后重新从2试。 另一模式是USB-HDD模式。对于U盘，如果量产时设置成移动型，那么windows在格式化时，不会生成分区表，不会有MBR，这样主板是不认识也不能启动的。可以在linux下fdisk，可以生成MBR和分区表。当然，不用linux的话，下载一个HPUSBFW.exe格式化一下，也有MBR和分区表了。不过用hpusbfw格式化后，最好再用XP自己格一下，这样生成的分区就肯定支持启动微软自家的NTLDR了。启动了NTLDR其它都好办了。不过整完后，还需要用winhex改一下，把分区改为活动的，可以用winhex打开整个设备，改一下0x1be处，把00改为80。还需要改一下分区，用winhex打开格式化后的分区，把0&#215;40处从00改为80。这样后，把C盘的NTLDR,NTDETECT.com,boot.ini放过去，就可以实验一下支持启动的感觉了。 小结一下步骤： 用HPUSBFW.exe格式化U盘为FAT32格式。假设完成后有M盘。 用XP自己格一下M盘，确保启动代码更适合微软的NTLDR。 用Winhex的打开磁盘功能，打开物理设备(physical media)下的U盘，改0x1be处，从00改为80。 用winhex的打开磁盘功能，打开逻辑驱动器M盘，把0&#215;40处从00改为80。（注：如果不是FAT/FAT32这样做就损坏数据了） 此U盘已经能以USB-HDD形式启动，可以放入C盘下的ntldr,ntdetect.com,boot.ini去试验。试验时确保boot.ini具有多项，且等待时间较长，这样就能看到选择启动的画面，从而确定此U盘已经确实能支持启动。]]></description>
			<content:encoded><![CDATA[<p>现在的U盘都比较大了，所以ZIP模式和HDD模式已经不太重要了，可以忽略了。</p>
<p>本文只说  USB-CD模式和USB-HDD模式。</p>
<p>USB-CD 模式是比较不错的一个方式，可惜对硬件有一定要求。现在我们去买U盘的时候，能买到一些U盘带有一些特殊的功能，比如杀毒功能。这种U盘插入电脑后，会多出两个盘符，一个是光盘，里面放的是实现这些特殊功能的软件，还有一个就是移动盘符，也就是给用户使用的U盘存储了。</p>
<p>那么，这个光盘是怎么出来的呢？实际上，每个U盘都可以这样造出光盘来，用量产工具就可以了，量产工具可以在这里找到：</p>
<p><a href="http://bbs.mydigit.cn/read.php?tid=20620">http://bbs.mydigit.cn/read.php?tid=20620</a></p>
<p>不过，这样生产出来的光盘，不一定能用来启动。这跟BIOS有关系，一个U盘上同时有光盘和移动存储时，可能有两种情况。情况A：光盘在前面，移动存储在后面。情况B：移动存储在前，光盘在后。</p>
<p>如果碰到情况B，问题不太好办。有的主板只认第一个东西。比如IBM笔记本，我的T43和刚买的X200，BIOS都不支持这种状况。碰到情况A就比较好了。遗憾的是，这个A和B不是自己能选的，量产工具并不支持调整，所以，只能买不同芯片的U盘来达到这一目的。目前我用过的，只有iCreate的芯片的量产工具是支持情况A的。有了这样的U盘后，量产一下，只要主板支持USB-CD，就什么ISO都能拿来启动了。</p>
<p>小结一下步骤：</p>
<ol>
<li>确定U盘的量产工具</li>
<li>量产放入一个支持启动的ISO。</li>
<li>改BIOS从USB-CD启动，实验。如果主板支持情况B，则什么U盘都能启动。</li>
<li>如果主板不支持情况B，就只能去找个别的芯片的U盘了，比如找个iCreate芯片的。然后重新从2试。</li>
</ol>
<p>另一模式是USB-HDD模式。对于U盘，如果量产时设置成移动型，那么windows在格式化时，不会生成分区表，不会有MBR，这样主板是不认识也不能启动的。可以在linux下fdisk，可以生成MBR和分区表。当然，不用linux的话，下载一个HPUSBFW.exe格式化一下，也有MBR和分区表了。不过用hpusbfw格式化后，最好再用XP自己格一下，这样生成的分区就肯定支持启动微软自家的NTLDR了。启动了NTLDR其它都好办了。不过整完后，还需要用winhex改一下，把分区改为活动的，可以用winhex打开整个设备，改一下0x1be处，把00改为80。还需要改一下分区，用winhex打开格式化后的分区，把0&#215;40处从00改为80。这样后，把C盘的NTLDR,NTDETECT.com,boot.ini放过去，就可以实验一下支持启动的感觉了。</p>
<p>小结一下步骤：</p>
<ol>
<li>用HPUSBFW.exe格式化U盘为FAT32格式。假设完成后有M盘。</li>
<li>用XP自己格一下M盘，确保启动代码更适合微软的NTLDR。</li>
<li>用Winhex的打开磁盘功能，打开物理设备(physical media)下的U盘，改0x1be处，从00改为80。</li>
<li>用winhex的打开磁盘功能，打开逻辑驱动器M盘，把0&#215;40处从00改为80。（注：如果不是FAT/FAT32这样做就损坏数据了）</li>
<li>此U盘已经能以USB-HDD形式启动，可以放入C盘下的ntldr,ntdetect.com,boot.ini去试验。试验时确保boot.ini具有多项，且等待时间较长，这样就能看到选择启动的画面，从而确定此U盘已经确实能支持启动。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/49.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>将深山红叶放到U盘上的办法</title>
		<link>http://www.swigger.net/archives/48.html</link>
		<comments>http://www.swigger.net/archives/48.html#comments</comments>
		<pubDate>Sun, 23 Nov 2008 15:13:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[boot]]></category>
		<category><![CDATA[U盘]]></category>
		<category><![CDATA[深山红叶]]></category>

		<guid isPermaLink="false">http://www.swigger.net/?p=48</guid>
		<description><![CDATA[这个网上有很多人说，有的人整出了非常复杂的办法，我也是很久之前研究的了，还是写下来，否则下次还要到处找。 方法超级简单，对于深山红叶，最终版似乎就是 V30正式版，也就是所谓的“嫦娥一号记念版”。 这个版本打开后目录结构如下： I:. │  WINNT.XPE │  WINPE.IS_ │  深山红叶系统工具箱.EXE │  ├─BOOT │  │  CDMENU.BIN │  │  CDMENU.EZB │  │  DOS98.IMG │  │  GRLDR │  │  ISOGRUB.BIN │  │  LOADER.BIN │  │  MEMTEST.BIN │  │  MENU.BM1 │  │  MENU.BMP │  │  SETDOS.CMD │  │  STAGE2 │  │  WINDIAG │  │  WINPE.INI │  │  WINS.BIN [...]]]></description>
			<content:encoded><![CDATA[<p>这个网上有很多人说，有的人整出了非常复杂的办法，我也是很久之前研究的了，还是写下来，否则下次还要到处找。</p>
<p>方法超级简单，对于深山红叶，最终版似乎就是 V30正式版，也就是所谓的“嫦娥一号记念版”。</p>
<p>这个版本打开后目录结构如下：</p>
<p>I:.<br />
│  WINNT.XPE<br />
│  WINPE.IS_<br />
│  深山红叶系统工具箱.EXE<br />
│ <br />
├─BOOT<br />
│  │  CDMENU.BIN<br />
│  │  CDMENU.EZB<br />
│  │  DOS98.IMG<br />
│  │  GRLDR<br />
│  │  ISOGRUB.BIN<br />
│  │  LOADER.BIN<br />
│  │  MEMTEST.BIN<br />
│  │  MENU.BM1<br />
│  │  MENU.BMP<br />
│  │  SETDOS.CMD<br />
│  │  STAGE2<br />
│  │  WINDIAG<br />
│  │  WINPE.INI<br />
│  │  WINS.BIN<br />
│  │  XLYBIG.IMG<br />
│  │ <br />
│  └─GRUB<br />
│          CDBOOT.BS<br />
│          FAT_STAGE1_5<br />
│          HD_MENU.LST<br />
│          MEMDISK.GZ<br />
│          MENU.LST<br />
│          NTFS_STAGE1_5<br />
│          STAGE1<br />
│          STAGE2<br />
│         <br />
├─PROGRAMS (文件太多，此处省略）<br />
│             <br />
└─WXPE<br />
        NTDETECT.COM<br />
        SETUPLDR.BIN</p>
<p>先确保U盘可以启动NTLDR，</p>
<p>然后把所有文件copy到U盘上，把WXPE下的两个文件移到U盘根目录，将Setupldr.bin改名为NTLDR</p>
<p>BOOT目录下只留WINPE.ini，其它全删。</p>
<p>这样就完成了把深山红叶最终版的U盘化。汗，是不是太简单了，但在不知道方法去试的时候，还是很麻烦的。</p>
<p>最后的目录结构如下：</p>
<p>Z:.<br />
│  NTLDR<br />
│  WINPE.IS_<br />
│  深山红叶系统工具箱.EXE<br />
│  NTDETECT.COM<br />
│  WINNT.XPE<br />
│ <br />
├─PROGRAMS  (文件太多，此处省略）<br />
│             <br />
└─BOOT<br />
        WINPE.INI</p>
<p>说明：BOOT下本来有很多文件，可以完成很多的功能，用了这种办法来启动后，这些功能都做不到了（比如启动到DOS，微软内存检测等）。试过了用ezboot的那些东西在非光盘上是用不了的。所以这些文件就都删了。</p>
<p>当然这些功能要加回来，还是很简单的，在这个方法上添加就行了。可以用grub4dos来启动，添加这些功能。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swigger.net/archives/48.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

