最新消息:

<转>用grub直接启动xp embedded的sdi成功!

grubdos 大步 674浏览 0评论

来源:http://bbs.wuyou.com/viewthread.php?tid=33753
早在去年某个grub版本之后,grub就加入了启动sdi的功能,但是一直没有成功启动过。今天,经过我的一些尝试之后,终于用grub成功启动了xp embedded的sdi。这样,结合了grub和sdi的优点,启动方法有又多了一种选择。
在测试中,我使用了hnlyzhd在下面帖子中制作的xp embedded(20M的和90多兆的都能成功)
http://bbs.wuyou.com/cgi-bin/top ... topic=57&show=0
sdi的制作和启动方法如下:
1、下载并安装我提供的sdi制作工具精简版,
http://bbs.wuyou.com/cgi-bin/top ... =10744&show=100
如果已安装了xp embedded自定义工具的可以略去此步。
2、请准备三个文件:osloader.exe,ntdetect.com,bootfont.bin(这个文件可以不要)
以上三个文件可以从任意一张xp/2003的安装光盘中获得(光盘中的文件可能是压缩的,请解压),只是要注意文件版本不能比所要引导的xp embedded版本低(对于hnlyzhd的xp embedded,三个文件只要xp sp1以上版本的即可)。
下载并解压startrom.com(此文件来自2003 sp1光盘)下载处在文章末尾。
3、提取hnlyzhd的sdi中的所有文件(关于xp embedded sdi的文件提取方法在后面附注中说)。
以那个20M的sdi为例,就是KERNEL一个文件夹。
4、把提取出来的文件复制到一个空分区下面(如果没有空分区,就用sdi loader制作一个容量适当的虚拟磁盘分区),设这个分区盘符为f:盘。
复制步骤2的ntdetect.com和bootfont.bin至此盘(若原有就覆盖之,以保持步骤2中文件版本的一致性)。
5、在f:盘中创建一个boot.ini(若原有就删除),内容如下:
[boot loader]
timeout=0
default=ramdisk(0)KERNEL
[operating systems]
ramdisk(0)KERNEL="Windows XP EMBEDDED" /fastdetect
其中ramdisk(0)KERNEL是以20M的那个xp embedded为例的,请根据实际路径编写;timeout的值随便。
6、用cmd进入sdimgr.wsf所在目录执行以下命令:
sdimgr /new d:new.sdi  (创建一个名为d:new.sdi的新sdi)
sdimgr d:new.sdi /readpart:f:  (把f:分区加入new.sdi)
sdimgr d:new.sdi /import:BOOT,0,pathstartrom.com
sdimgr d:new.sdi /import:LOAD,0,pathosloader.exe   (分别把startrom.com和osloader.exe导入new.sdi文件,请在startrom.com和osloader.exe前加上 相应路径)
sdimgr d:new.sdi /pack  (重新排布此sdi的结构)
7、至此sdi制作完成,此sdi文件便可在grub中启动了。在grub中调用的的命令如下:
chainloader --sdi (path)/new.sdi
boot
另外,sdi文件还可以用gzip格式压缩,照样能用grub启动。

附注:提取xp embedded的sdi中文件的方法:
设此sdi文件名为xpe.sdi,执行命令:
sdimgr pathxpe.sdi /export:PART,pathxpe.ima  (path要为指定路径),
生成xpe.ima,用winimage 8.0打开此文件即可提取其中的所有文件了。

转载请注明:大步's Blog » <转>用grub直接启动xp embedded的sdi成功!

SiteMap