cncwl 发表于 2006-2-15 23:47:16

是ML更改了分区的顺序号?导致win2k3无法启动

过程:
1先使用专门硬盘软件(winhdm)重写mbr代码,使其象普通ms系统一样引导,然后删除扩展分区以外的所有分区,也就是只留扩展分区一个主分区,扩展分区前剩余12g的自由空间;
在硬盘的最前面划分5g的主分区;
全新安装win2k3到这个5g的主分区,正常完成,正常启动,正常运行,此时c盘下boot.ini文件中内容为:

timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="2003" /fastdetect /NoExecute=OptOut

可见这个分区的顺序标识是第一个分区,物理上也确是第一个主分区;

再安装ML2.0f,安装过程中将剩下的7g自由空间全部划给/(swap分区原经在扩展分区中建有),物理上该分区应该是第二个主分区。安装顺利,启动顺利,运行正常;
重启,在grub命令行模式输入:
grub>root (hd0,0)
grub>chainloader +1
grub>boot
启动win2k3失败。

进入ML,看到挂载的分区,win2k3所在的物理第一分区是hda4.

重启,在grub命令行模式输入:
grub>root (hd0,3)
grub>chainloader +1
grub>boot
启动win2k3失败,Ntldr 文件丢失。

进入ML,修改hda4下面boot.ini文件内容为:

timeout=5
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS

multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="2003" /fastdetect /NoExecute=OptOut

重启,在grub命令行模式输入:
grub>root (hd0,3)
grub>chainloader +1
grub>boot
启动win2k3成功。连windows自己也认为其所在分区为2了。

疑问:
是否ML的安装程序一定要把boot所在分区设置成hda1(hd0,0)?
另外的主分区设置的顺序号是依据什么来排的呢?我的硬盘一共只有三个主分区,物理位置第一主分区却是hda4(hd0,3)?为何会跳过hda2?
在已有windows的系统上安装双系统不就破坏了windows的启动吗?对了,安装过程中并没有检测到我已安装的windows而将它加入启动菜单,我记得以前1.2f版的时候有这个功能的啊?

大家探讨。

wanglaow 发表于 2006-2-16 14:58:21

你直接看看MBR的最后四行二进制数据。

最后一个的分区标志肯定是0F了,

但前面几个分区标志的位置在哪里?是按照顺序来的么?

cncwl 发表于 2006-2-16 20:53:01

你直接看看MBR的最后四行二进制数据。

最后一个的分区标志肯定是0F了,

但前面几个分区标志的位置在哪里?是按照顺序来的么?

能介绍一下linux下看MBR数据的命令吗?谢谢!

wanglaow 发表于 2006-2-17 06:54:53

我也不知道。

你用dos下的工具看看吧。

cncwl 发表于 2006-2-20 13:57:14

看了,最后四行数据为:
41 7f 83 fe ff fb bf e2 5d 00 3d 26 9c 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c1 fc 0f fe ff ff fc 08 fa 00 c5 88 ae 03 80 01
01 00 07 fe 7f 7e 3f 00 00 00 80 e2 5d 00 55 aa

linux下显示硬盘分区情况为:
                                                               
# fdisk -l

Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   IdSystem
/dev/hda1             384      1020   5116702+83Linux
/dev/hda3            1021      4865    30884962+   fW95 Ext'd (LBA)
/dev/hda4   *         1         383   3076416    7HPFS/NTFS
/dev/hda5            1021      1275   2048256    7HPFS/NTFS
/dev/hda6            1276      4814    28426986    bW95 FAT32
/dev/hda7            4815      4865      409626   82Linux swap / Solaris

Partition table entries are not in disk order

第一个分区标志是83,就是linux分区,
第二个分区标志是00,跳过了第二分区,
第三个分区标志是0f,是整个扩展分区,
第四个分区才是07,ntfs分区。
怎么会这样? :roll:

cncwl 发表于 2006-2-20 21:01:06

今天手工修改mbr中的分区表,将分区顺序调整回与物理位置相同。修改linux中相关设置(fstab、grub.conf),修改windows中boot。ini。正常启动。
也许有时间再重现一下,或许不是ML的安装程序引起,而是我原来的分区表还是不万全附合物理位置?

blance2599 发表于 2006-2-20 21:24:06

不一定吧?我用双硬盘,hda1是win,hdb1才是linux。。。一切正常
页: [1]
查看完整版本: 是ML更改了分区的顺序号?导致win2k3无法启动