分享

GRUB?引导?移动硬盘上的XP安装程序

 昵称8686 2010-09-22

GRUB 引导 移动硬盘上的XP安装程序

(2009-02-06 23:19:07)
标签:

grub

移动硬盘

安装

xp

it

分类:技术
我在移动硬盘上加入了13 in 1的引导程序,这是启动菜单。
GRUB <wbr>引导 <wbr>移动硬盘上的XP安装程序

但美中不足的是没有XP安装程序的启动项,我就试着加入一个。

分析了XP光盘2K的引导扇区中会加载I386中的两个文件,BOOTFIX.BIN SETUPLDR.BIN。前者只是显示Press any key boot from CDROM....,后面是加载XP安装程序。那么我可不可以先加载这个2K的引导扇区呢?EasyBoot下就是通过加载光盘的引导扇区来启动的,但在 硬盘下使用Grub就做不出来了,提示找不到文件。那么grub是否能够直接加载SETUPLDR.BIN呢,至少PE是可以的。
我把XP安装盘中的I386复制到G盘后,用grub成功的启动了setupldr.bin。
menu.lst
title 【00】  安装XP SP3简体中文版
chainloader /I386/SETUPLDR.BIN

但提示找不到 TXTSETUP.SIF文件。
GRUB <wbr>引导 <wbr>移动硬盘上的XP安装程序
感觉用grub启动setupldr.bin,可能相关路径就无法控制了
如果在mbr能够直接控制就好了,类似光盘的模拟。

13 in 1的组件中有一个“启动XP故障恢复控制台”。可以进入和安装一样的界面下。
分析借鉴一下看是否能模仿的启动XP的安装盘。

复制WINXPSP3.ISO文件到“UBOOT”盘下的WINXP目录中,这是615MB的镜像。
复制一份本来用于加载《XP故障恢复控制台》的“SETUPLDR.001”文件到BOOT目录下,改名为“SETUPLDR.SP3”。用WinHex 打开把原来所有的“winnt.001”字段全部改为“winxp.sp3”,共有9处。在BOOT目录下建立一个“winxp.sp3”文件。
winxp.sp3
[SetupData]
BootDevice = "ramdisk(0)"
BootPath = "\i386\"
OsLoadOptions = "/noguiboot /fastdetect /rdexportascd /rdpath=WINXP\WINXPSP3.iso"

在菜单加加入一段命令。
menu.lst
title 【00】  安装XP SP3简体中文版
chainloader /BOOT/SETUPLDR.SP3


我的VM内存开了512MB,测试结果。
GRUB <wbr>引导 <wbr>移动硬盘上的XP安装程序
Windows could not start due to an error while booting from a RAMDISK.
Windows failed to open the RAMDISK image.

             File xxxxxx Could not be loaded
            The error code is 16.
            Setup cannot continue.Press any key to exit.

    这个错误是内存太小造成的,xxxxxx 文件是系统的镜像文件,为ISO格式文件,由“RAMDISK”猜想系统启动时会解压这个文件到内存中并虚拟内存文件为一个随机盘符的磁盘,通过这个虚拟磁盘来引导PE系统,因内存不足而解压失败。关闭虚拟机,修改内存超过镜像大小后就可以顺利启动了。
    这是很不理想的一个结果,也许只有机器内存大于1G的系统才比较适合。继续寻找更好的解决办法。

附录:



①做到这里引发了一个疑问--SETUPLDR.BIN 和NTLDR有什么区别呢,看起来都是LOADER。

我不知道 SETUPLDR.BIN 和 NTLDR 有什么差别。我只知道,NTLDR 被启动时,除了它自己需要被放置到 2000:0000 之外,它还要求 0000:7C00 处的一个扇区正好是启动分区的 Volume Boot Record,也就是说,必须含有正确的 BPB 表。否则,启动会失败。

Grub4dos 的 chainloader 在装入 NTLDR 时,已经把 --edx 所指定的分区(默认就是 NTLDR 文件所在的分区)的引导扇区放置在 0000:7C00 了,所以,启动 NTLDR 才会成功。我不知道光盘的情况又该是怎样的,也不知道 SETUPLDR.BIN 对此有何特别的要求。

②NOTE: Although the code used in this MBR is no mystery to anyone who has a search engine and a bit of Assembly knowledge (since it is all Open-Source code), I decided that many would still like to see a listing and comments on the Assembly instructions from GRUB's MBR (or "stage1" as it's called) in an effort to help computer users understand what happens when their Master Boot Record is replaced by the boot code from GRUB.
我不明白为什么GRUB的源代码中总是提到 "stage2",原来MBR被称为 "stage1"。


③boot.ini文件中针对不同的镜像要使用的命令:
      当WinPE映像文件类型是.SDI文件时,WINNT.SIF文件内容为:

      [SetupData]
      BootDevice = "ramdisk(0)"
      BootPath = "i386System32"
      OsLoadOptions = "/minint /fastdetect /rdimageoffset=36352 /rdpath=WinPE.SDI"

      当WinPE映像文件类型是.ISO文件时,WINNT.SIF文件内容为:

      [SetupData]
      BootDevice = "ramdisk(0)"
      BootPath = "I386SYSTEM32"
      OsLoadOptions = "/minint /fastdetect /rdexportascd /rdpath=WinPE.ISO"

      当WinPE映像文件类型是.IS_文件时,WINNT.SIF文件内容为:

      [SetupData]
      BootDevice = "ramdisk(0)"
      BootPath = "I386SYSTEM32"
      OsLoadOptions = "/minint /fastdetect /rdexportascd /rdpath=WinPE.IS_"

      当WinPE映像文件类型是.IMG文件时,WINNT.SIF文件内容为:

      [SetupData]
      BootDevice = "ramdisk(0)"
      BootPath = "I386SYSTEM32"
      OsLoadOptions = "/minint /fastdetect /rdpath=WinPE.IMG"

      当WinPE映像文件类型是.IMA文件时,WINNT.SIF文件内容为:

      [SetupData]
      BootDevice = "ramdisk(0)"
      BootPath = "I386SYSTEM32"
      OsLoadOptions = "/minint /fastdetect /rdpath=WinPE.IMA"

      当WinPE映像文件类型是.IM_文件时,WINNT.SIF文件内容为:

      [SetupData]
      BootDevice = "ramdisk(0)"
      BootPath = "I386SYSTEM32"
      OsLoadOptions = "/minint /fastdetect /rdpath=WinPE.IM_"

④有个地方不错专门介绍不同系统下MBR和BPB部分的内容,很详细,建议想多深入的可以看看:
Boot Records Revealed!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多