|
[这个贴子最后由fujianabc在 2006/02/25 01:29pm 第 3 次编辑]
早在去年某个grub版本之后,grub就加入了启动sdi的功能,但是一直没有成功启动过。今天,经过我的一些尝试之后,终于用grub成功启动了xp embedded的sdi。这样,结合了grub和sdi的优点,启动方法有又多了一种选择。
在测试中,我使用了hnlyzhd在下面帖子中制作的xp embedded(20M的和90多兆的都能成功)
http://bbs.wuyou.net/cgi-bin/top ... topic=57&show=0
sdi的制作和启动方法如下:
1、下载并安装我提供的sdi制作工具精简版,
http://bbs.wuyou.net/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,path\startrom.com
sdimgr d:\new.sdi /import:LOAD,0,path\osloader.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 path\xpe.sdi /export:PART,path\xpe.ima (path要为指定路径),
生成xpe.ima,用winimage 8.0打开此文件即可提取其中的所有文件了。
[ 本帖最后由 fujianabc 于 2006-8-1 09:11 AM 编辑 ] |
|