免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7826 | 回复: 19

多系统共存安装记引导问题指引和参考 [复制链接]

论坛徽章:
0
发表于 2006-05-03 00:12 |显示全部楼层
版里相当多的兄弟经常问多系统共存安装和引导的问题,zero-B版主也发了个置顶的帖子敬告一下大家其中存在的麻烦性。不过我觉得这个问题还是很具有普遍意义的,而且也有相当多的实际需求。只要对其中一些关键性的概念有比较清晰的理解,这个问题将会变得很简单。其实类似的文章在网上可以找到很多,在这里我简单引用和总结一下,希望能给有类似问题的兄弟以启发和参考,尤其是希望对新手朋友有所帮助。

以下部分操作细节可能不会仔细叙述,可google相关内容获取更详细的描述。


系统引导过程及硬盘分区结构
作者: zhy2111314
来自: LinuxSir.Org ouc.edu.cn

一、系统引导过程简介

系统引导过程主要由以下几个步骤组成(以硬盘启动为例)
1、 开机;
2、 BIOS加电自检(POST---Power On Self Test),内存地址为0fff:0000;
3、 将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)读入内存地址0000:7c00处;
4、 检查(WORD)0000:7dfe是否等于0xaa55.若不等于则转去尝试其他介质;如果没有其他启动介质,则显示 ”No ROM BASIC” ,然后死机;
5、 跳转到0000:7c00处执行MBR中的程序;
6、 MBR先将自己复制到0000:0600处,然后继续执行;
7、 在主分区表中搜索标志为活动的分区.如果发现没有活动分区或者不止一个活动分区,则停止;
8、 将活动分区的第一个扇区读入内存地址0000:7c00处;
9、 检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示 “Missing Operating System”,然后停止,或尝试软盘启动;
10、 跳转到0000:7c00处继续执行特定系统的启动程序;
11、 启动系统.

以上步骤中(2),(3),(4),(5)步由BIOS的引导程序完成;(6),(7),(,(9),(10)步由MBR中的引导程序完成.
一般多系统引导程序(如Smart Boot Manager, BootStar, PQBoot等)都是将标准主引导记录替换成自己的引导程序,在运行系统启动程序之前让用户选择想要启动的分区.而某些系统自带的多系统引导程序(如 LILO,NT Loader等)则可以将自己的引导程序放在系统所处分区的第一个扇区中,在Linux中即为两个扇区的SuperBlock.

注:以上步骤中使用的是标准的MBR,多系统引导程序的引导过程与此不同.


二、硬盘结构及参数

3D参数(Disk Geometry):CHS(Cylinder/Head/Sector) C-Cylinder柱面数表示硬盘每面盘片上有几条磁道,最大为1024(用10个二进制位存储);H-Head磁头数表示硬盘总共有几个磁头,也就是几面盘片,最大为256(用8个二进制位存储);S-Sector扇区数表示每条磁道上有几个扇区,最大为63(用6个二进制位存储).

1、引导扇区

Boot Sector组成
Boot Sector也就是硬盘的第一个扇区,它由MBR(Master Boot Record), DPT(Disk Partition Table) 和 Boot Record ID三部分组成. MBR又称为主引导记录,占用Boot Sector的前446个字节(0~0x1BD),存放系统主引导程序(它负责从活动分区中装载并且运行系统引导程序). DPT即主分区表占用64个字节(0x1BE~0x1FD),记录磁盘的基本分区信息.主分区表分为四个分区项,每项16个字节,分别记录每个主分区的信息(因此最多可以有四个主分区). Boot Record ID即引导区标记占用两个字节(0x1FE~0x1FF),对于合法引导区,它等于0xaa55,这是判别引导区是否合法的标志).

Boot Secor具体结构如图:



2、分区表结构简介

分区表由四个分区项构成,每一项结构如下:
BYTE State:分区状态,0=未激活,0x80=激活(注意此项);
BYTE StartHead:分区起始磁头号;
WORD StartSC:分区起始扇区和柱面号,底字节的底6位为扇区号,高2位为柱面号的第9,10位,高字节为柱面号的低8位;
BYTE Type:分区类型,如0x0B=FAT32,0x83=Linux等,00表示此项未用;
BYTE EndHead:分区结束磁头号;
WORD EndSC:分区结束扇区和柱面号,定义同前;
DWORD Relative:在线性寻址方式下的分区相对扇区地址(对于基本分区即为绝对地址);
DWORD Sectors:分区大小(总扇区数).
在DOS或Windows系统下,基本分区必须以柱面为单位划分(Sectors*Heads个扇区),如对于CHS为764/256/63的硬盘,分区的最小尺寸为256*63*512/1048576=7.875MB.
由于硬盘的第一个扇区已经被引导扇区占用,所以一般来说,硬盘的第一个磁道(0头0道)的其余62个扇区是不会被分区占用的.某些分区软件甚至将第一个柱面全部空出来.

扩展分区结构如图:



-------------------------------------------------
以上内容是一些概念性的说明,用我的简单的语言简化描述如下(只针对新手,不必计较是否严谨准确)

系统启动过程是:加电先运行BIOS,BIOS随后把控制权交给MBR,MBR决定从哪个分区上继续引导。引导分区的首扇区可能是另一个引导程序,这个程序可以更进一步决定如何引导系统并且引导。

通常我们只用Windows的时候,MBR按照标准的方式找到windows分区并且引导该分区将控制权交给NTLdr(不包含win98及更早的windows,那时候的系统不用ntldr),NTLdr来引导windows。如果你多个windows共存安装,安装程序会自动在ntldr配置中增加引导项。

(建议第一个分区使用FAT32,可安装DOS/Windows各版本,不建议使用NTFS格式分区,原因是一但系统出问题NTFS的读写限制远比FAT32多,不利于解决问题)

如果我们多系统共存安装,每一个操作系统都可能会安装引导程序。常见的是linux的GRUB,其他系统概念上一样,都有自己的类似的引导程序,windows是ntldr。不同的是,安装windows时windows总是/并且不提示、没有其他选择地覆盖MBR并将自己的分区设置成活动分区用ntldr启动。一般linux或者bsd等系统可以选择安装引导程序到mbr/安装引导程序到自己分区的首扇区/不安装。

基于以上原因,通常安装于MBR的引导程序只有一个,不同linux共存安装时GRUB可以选择合并引导菜单的方式安装于MBR。所以,可以适当选择安装顺序并且选择一个主引导程序。如果你对以上内容有准确理解,那么安装顺序并不重要,只要最后选择一个你想用的引导程序并且可以用这个引导程序配置引导所有系统就可以。

通常我们可以选择的有两种方式:

1。用ntldr引导。这种方式可以先安装windows在第一个主分区,然后在后面的主分区或逻辑分区安装其他的linux/unix系统(注意BSD/Solaris等UNIX系统只能安装在主分区,而linux可以安装在逻辑分区),安装的时候记住不要把引导程序安装到MBR。安装完成后用一些磁盘工具(可读取磁盘特定扇区的二进制数据的)找到该系统的分区的首扇区并写成一个二进制文件(该起始扇区的位置可以用分区工具例如PM查看到),把这个文件放到C:下,然后在boot.ini中添加一项:Cxx文件(你获得的那个扇区文件名字)="你要引导的系统",即可。可用的磁盘工具如dos下的diskgen等。在linux/unix下可用dd if=/dev/xxx of= 来获取该文件,是等效的方式

用ntldr引导的时候,可能出现其他分区被设置成激活启动,这个时候可能会无法启动ntldr,看不到ntldr的启动菜单而直接启动该分区的操作系统,这样就可能无法引导windows。这种情况只要用分区工具重新激活windows的分区就可以。

2。使用GRUB引导。这种方式一般选择一个linux最后安装,并且选择将GRUB安装到MBR。通常GRUB可以自动辨识并添加windows的引导。对于BSD/Solaris等系统可以手动添加启动项。

我的一般做法是使用SuSE10.0的GRUB来作主引导程序,因为SuSE有个图形化的很直观简单的GRUB配置界面。

通常在后来又重新安装系统的时候有可能覆盖掉MBR(主要是windows会必然地重新占领MBR,linux/unix系统安装引导程序一般是可选择的),这种情况下,1)可以采用上面方式一配置用ntldr引导;2)找一张linux的启动光盘,重新安装一下grub;3)备份原来的MBR。

我的实践实例:

160G硬盘,安装5个操作系统,依次如下:Win2003 Server(主分区一)、FreeBSD6(主分区二)、Solaris 10(主分区三)、Debian Linux和SuSE Linux(扩展分区里的逻辑分区,共用swap,后安装SuSE并使用SuSE的GRUB),再后面的逻辑分区用FAT32格式作为各系统可以共用的数据存储区。

另外,建议各位准备一张可启动的系统维护工具光盘,这非常有用,尤其是新手往往出现无法引导、分区问题等等问题就以为系统完蛋,其实当然不是。建议这个:http://lib.verycd.com/software/sys/,龙卷风或者MegaBoot这两个都很不错。

仓促写成,如有谬误或有补充,敬请指出。
如有问题,我将尽我所知所能解答。

[ 本帖最后由 pilgrim_kevin 于 2006-5-3 11:23 编辑 ]

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-10-05 06:20:00操作系统版块每日发帖之星
日期:2015-10-05 06:20:00
发表于 2006-05-03 00:42 |显示全部楼层
原帖由 pilgrim_kevin 于 2006-5-3 00:12 发表
版里相当多的兄弟经常问多系统共存安装和引导的问题,zero版主也发了个置顶的帖子敬告一下大家其中存在的麻烦性。不过我觉得这个问题还是很具有普遍意义的,而且也有相当多的实际需求。只要对其中一些关键性的概念 ...



总结得不错,不过需要注意,你在以后安装多系统引导的时候,如果发现有可以改进的地方请及时修改,造福后来人。

:em11:

PS:我是zero-B,ID中的字母不是很多,希望把名字打完

论坛徽章:
0
发表于 2006-05-03 10:17 |显示全部楼层
顶一下

论坛徽章:
0
发表于 2006-05-03 10:29 |显示全部楼层
好文  顶一下...

论坛徽章:
0
发表于 2006-05-03 10:41 |显示全部楼层
收藏了

论坛徽章:
0
发表于 2006-05-03 11:05 |显示全部楼层
其实楼主有一个地方写错了,“个人理解未经实践证实的内容:ntldr必须安装在第一个主分区上,亦即第一个主分区必须是fat/fat32,只能是dos或windows系统”,第一个主分区可以是NTFS的文件系统的,我现在就是这样在用啊!

论坛徽章:
0
发表于 2006-05-03 11:19 |显示全部楼层
原帖由 sunyefei 于 2006-5-3 11:05 发表
其实楼主有一个地方写错了,“个人理解未经实践证实的内容:ntldr必须安装在第一个主分区上,亦即第一个主分区必须是fat/fat32,只能是dos或windows系统”,第一个主分区可以是NTFS的文件系统的,我现在就是这样在 ...


这一点应该是我写错了,未经证实嘛^_^

不过同样地, 不建议第一个分区用NTFS格式,因为如果你的系统出了问题就会发现NTFS远比FAT32麻烦,DOS、Win98不能支持NTFS你无法对这个分区使用dos工具,现在的linux/unix部分系统虽然支持ntfs但是好像支持也不好。老鸟可以在DOS下使用特定的读写NTFS的工具,新手我觉得还是别给自己增加难度。

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-10-05 06:20:00操作系统版块每日发帖之星
日期:2015-10-05 06:20:00
发表于 2006-05-03 14:33 |显示全部楼层
看看,我说什么来的?

论坛徽章:
0
发表于 2006-05-05 10:13 |显示全部楼层
关于两块硬盘、启动第二块硬盘上系统的问题,有知道的请补充一下。

论坛徽章:
0
发表于 2006-05-10 13:18 |显示全部楼层
应该是类似的方法~~~
自己想想吧~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP