无MBR引导记录,以直接复制文件的方式变态的安装windows

背景:

普通笔记本电脑,新换了一只500G硬盘,安装操作系统时,基于把Linux/fedora作为首选OS的原因,规划分区如下

sda1  ext2  linux /boot  1G
sda2  扩展分区
sda5  ext3  linux /   30G
sda6  ntfs   windows安装分区C   36G
sda7  ext3  linux  /home 120G
sda8  swap  linux  swap 3.5G  [3G内存,为了使用休眠功能需要交换分区,至少应该等于物理内存大小]
sda9  ext3  linux  /data  140G
sda10  ntfs  win_D 30G
sda11  fat32  win_E
sda12 ntfs win_F
[注:无sda3与sda4的主分区]

linux在前些天早已经安装成功;有时候需要用windows,以前是用windows2003,有以前的windows2003的C盘ghost备份文件,直接还原到sda6,却无法启动。经过几天的探索学习,找到解决方法:

在Linux(fedora14 gnome)下,使用fedora自带的“硬盘实用工具”,把sda6重新格式化,格式化时选中“可启动”——这一非常重要,之前不能启动就是这个原因——然后启动windowsPE,使用Ghost镜像浏览器ghostxp,把所有文件提取到sda6,之后修改boot.ini,把其中启动项目修改为如下形式(注意其中粗体红字):

multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect

sda6在windows启动引导对硬盘分区的识别,sda6是partition(3) 。个人对windows启动分区计算方式不熟悉,可能就是windows计算机管理-磁盘管理 里面显示的分区从左到右依次排序,如果不确定,可以试一下其它数字。再次启动,在grub里执行

root (hd0,5)
chainloader +1
boot

进行引导windows。至此windows安装成功。(下面还有第二个windows操作系统的安装)

这一过程中其中几点注意事项及问题:

1. 因为对“window系统安装程序,不管三七二十一的要重写mbr的行为”感觉到非常不满,加上全新重新安装系统后还要安装驱动程序、常用程序太麻烦,所以起初不考虑使用安装盘安装而是使用ghost备份。启动时使用grub 引导windows启动分区。

2. 使用ghost还原,不能正常引导,于是考虑使用windows安装光盘全新安装,但在选择windows安装分区时,却得到提示说硬盘配置与windows不兼容,无法继续,可能就是因为sda1 (或是sda的mbr)是linux分区,windows不认所致。所以只能使用ghost备份入手了。

3. 格式化启动分区时,要格式化为“可引导”,这一点非常重要。起初发现直接ghost还原无法启动时,判断是因为sda6的启动分区中没有正常的启动扇区,于是使用安装光盘进入系统修复模式,以 fixboot 命令执行重建系统分区的引导扇区,但结果还是不能启动。

虽然windows2003在绝大多数跟xp是一致的,但有少数程序却无法在03下运行。也正是因为要一个游戏,它无法在windows2003运行,于是考虑还需要安装一个xp,之前没有做过xp的ghost镜像。因为无聊,加上无法使用全新安装光盘进行,所以准备使用网上的ghost版安装。网上的ghost都是没有完全安装完成的,还原后,还要进行几个步骤。

网上下载来的ghost镜像,都是要安装到C盘的,尝试安装到别的盘里,出错而无法继续进行,看来只能从C盘安装。于是想到了一个很巧妙的方法:在C盘下新建一个文件夹,并把C盘下的所有windows2003的文件转移到这个文件里,然后到windowsPE下,把xp的gho镜像里所有文件提取到C盘根目录里,修改boot.ini,跟上而安装03类似(这几个步骤当然不能在windows03下进行,我在PE里进行)。

然后重启动电脑,以grub启动sda6下的系统,就是ghost释放的分区,这步就是启动ghost安装的后面几步(自动进行,不受人工控制的)。这样正常安装xp到C盘下,安装完成后,进入xp,把ghost里带的没用的东西卸载掉,最好卸载所有程序。

再次启动到PE或linux里,把C盘下所有xp的文件复制到sda11里,并个性C盘下的boot.ini,加入

multi(0)disk(0)rdisk(0)partition(8)\WINDOWS=”Microsoft Windows XP Professional” /noexecute=optin /fastdetect /DETECTHAL

作为sda11的引导项目。

启动windows,进入sda11的xp,这时这个XP应该能正常工作,但它还是要依赖C盘下的不少文件,因为ghost系统的注册表里写入了大量对C盘文件的注册项,而不是使用当前系统所在的E盘里的文件。这里就需要修改注册表,把对C盘文件的注册项全部个性成对E盘的引用项,windows自带的注册表编辑器没有“替换”的功能,手工替换会累死人:替换了几个,感觉这样的项目太多了,因为看到有大量的SID项目,单这些项目就有至少几百条。于是网上查找注册表批量替换工具,还真的有,下载使用。查找 C:\,并全部替换成为 E:\

替换完成后,重启系统,发现C盘下的 Program Files ,windows等目录可以执行重命名操作了;而在之前,是无法对其进行改名的。这就证明 E盘下的xp已经不再使用C盘的文件了。

至此,两个windows都以相当变态的方法安装成功。整个过程前后花费了将近一个月时间,当然不是这一个月时间别的什么事情没干,就在搞这东西的,是一个月的闲暇时间。

以前还曾尝试过把虚拟机里的C盘备份出来,拷到实际硬盘上,尝试引导,不过引导过程中蓝屏死机,没有成功过,可能是驱动不配所致吧.

其实操作系统也都只是一系列文件,windows也是如此,相比linux,它的特点之一,就是注册表,大量配置信息都 在注册表里,只要修改得当,应该还是有很大的配置灵活性的。还有就是它的启动方式,跟linux不一样,它是要求使用一个可引导分区引导系统,严格说是启动导入系统ntldr(在vista/win7上是bootmgr),再由引导系统按照boot.ini加载相应分区下的windows的系统。

这里所述,其中有个人总结出来的,可能不全正确,还请高手多多指正。

http://www.path8.net/tn/archives/3995

http://www.path8.net/tn/archives/4065




coded by nessus
发表评论?

3 条评论。

  1. 我试过,在可启动硬盘分区内,把老的系统的文件拷贝过来就可以了。
    不可启动分区内如扩展分区,只好用grub启动了。

    WIN7好像就没这么好办了,希望到时候可以抛弃它。

    feng 回复:

    深入解析windows操作系统(潘爱民译)里的windows开机停机一章里有讲解,需要“分区可启动”。感觉windows应该可以使用类似的方式。使用fedora14格式化的ntfs可启动分区,不放任何文件(包括ntldr)使用grub root+chainloader 从该分区引导,会得到提示无法找到bootmgr类似的消息,而bootmgr就是win7的启动程序。

  2. 太麻烦了!ghost后,把chainloader 后面的 1改成/ntldr就行了,另外不需要格式化成可引导。而且你的分区结构,Windows2003装完后会把第一个能识别的分区sda6认为C盘,在装Xp的时候,既然你有Pe,先用
    1.cn

发表评论