硬盘分区原理及操作系统启动过程(总结自鸟哥Linux私房菜)

  硬盘组成:

       主要许多由盘片,机械手臂,磁头与主抽马达组成。盘片可分为扇区与柱面两种单位,每一个扇区为512bytes。

       整个盘片就如多个同心圆绘制出的饼图,而由圆心以放射状的方式分割出磁盘的最小存储单位,就是扇区。

       扇区组成一个圆就成为磁道,在所有盘片上面的同一个磁道可以组成一个柱面,柱面是一般我们分割硬盘时的最小单位。

       硬盘保存数据的地方是在盘片上。

       硬盘的第一个扇区主要记录了两个重要的信息:1,主引导分区(MBR),是安装引导加载程序的位置,有446bytes;2,分区表,用来记录整块硬盘分区状态,有64bytes。

       在分区表所在的64bytes容量中,总共分为四组记录区,每组记录了该区段的起始与结束的柱面号码。

 硬盘分区原理:  

          其实所谓的“分区”只是针对那个64bytes的分区表进行设置而已。

         由于分区表只有64bytes, 硬盘默认的分区表仅能写入四组分区信息,这四组分区我们称为主(primary)或扩展(extended)分区。一般硬盘最多分为四个主分区或3个主分区+1个扩展分区。其中扩展分区最多只能有一个。扩展分区的目的是使用额外的扇区记录分区信息,扩展分区本身不能被拿来格式化,然后我们可以通过扩展分区所指向的那个区继续做分区的记录,由扩展分区继续切出来的分区成为逻辑分区。

          分区完成之后就是硬盘的格式化(高级格式化)。格式化主要是对硬盘的各个分区进行磁道的格式化,在逻辑上划分磁道。为什么需要进行格式化呢,因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需要的数据,因此就要将分区进行格式化,以成为操作系统能够利用的文件格式系统。

  开机流程:

           BIOS是开机的时候计算机系统会主动执行的第一个程序。接下来BIOS会去分析计算机里面有那些存储设备,以硬盘为例,BIOS会依据用户的设置去取能够开机的硬盘,并且到该硬盘里面去读取第一个扇区MBR的位置。MBR这个仅有446Bytes的硬盘容量例会放置最基本的引导加载程序,此时BIOS就功成圆满,接下来就是MBR内的引导加载程序的工作了。这个引导加载程序的目的是加载内核文件,由于引导加载程序是操作系统在安装的时候所提供的,所以它会识别硬盘内的文件系统格式,因此就能够读取内核文件,然后接下来就是内核文件的工作了,引导加载程序(boot loader)也功成圆满,之后就是操作系统的任务了。

  简单地说,整个开机流程:

1,BIOS:开机主动执行的韧体,会认识第一个可开机的设备;

2,MBR:第一个可开机设备的第一个扇区内的主引导分区快,内包含引导加载程序;

3,引导加载程序:一个可读取内核文件来执行的软件

4,内核文件:开始操作系统的功能。

boot loader的主要任务:

1,提供菜单:用户可以选择不同的开机选项,这也是多重引导的重要功能。

2,载入内核文件:直接指向可开机的程序区段来开始操作系统

3,转交其他loader:将引导加载功能转交给其他的loader负责。

从第三点,我们可以知道

引导加载除了可以安装在MBR以外,还可以安装在每个分区的引导扇区,分区还有个别的启动扇区,这个特点才能造就“多重引导”的功能。

LInux在安装的时候,你可以选择将引导加载程序安装在MBR或个别分区的启动扇区,而且Linux的loader可以手动设置菜单,所以你可以在boot loader里面加入Windows开机选项。

WIndows在安装的时候,它的安装程序会主动覆盖掉MBR以及自己所在分区的启动扇区,你没有选择的机会,而且它没有提供让我们自己选择的功能。

因此,如果现安装Linux再安装WIndows的话,MBR的引导加载程序就会只有Windows的选项而不会有linux选项(因为原本在MBR内的Linux的引导加载程序会被覆盖掉)。那需要重新安装Linux一次吗?当然不需要,你只要用尽各种办法处理MBR的内容即可。例如利用全中文的spdisk软件来安装识别Windows/Linux的管理程序,也能够利用Linux的救援模式来挽救MBR。


我有一次经历是这样的:

      本来我的电脑是Windows操作系统,后来装了个archlinux,由于archlinux总是出现各种问题,我就在Windows上直接将archlinux给格式化了,重新之后就发现Windows操作系统也不能启动了,这是什么原因呢?

我认为:

        已经知道archlinux使用的是grub启动程序。安装操作archlinux时,会改写MBR的内容,使计算机启动的时候装载grub程序(这里的grub程序应该指向了Windows的启动扇区和archlinux的启动扇区),而这个grub程序是装在archlinux上的,所以当我把archlinux删除后,grub程序也就删除了,所以当系统重启后,MBR里面的程序会指向grub程序所在的位置,而此时grub程序已经不见了,所以此时就不知道去哪里去加内核文件,就无法开机了!!!

         鸟哥Linux私房菜中有这样一句话,在整个文件系统的规划中,文件系统最前面有一个启动扇区,这个启动扇区可以安装引导装载程序,这是个非常重要的设计,因为如此以来我们就能够将不同的引导装载程序安装到个别的文件系统最前段,而不用覆盖整块硬盘唯一的MBR,这样才能够制作出多重引导的环境。这句话有是什么意思呢?我上面 说了安装archlinux的时候会改写MBR的内容,而这里又说不会覆盖整块硬盘唯一的MBR,这里应该指的是引导装载程序不会装在MBR里,而是会装在文件系统的引导扇区里,因为装载程序可能有点大吧,真要把装载程序装备MBR里必须要覆盖MBR里的数据,如果装载程序覆盖了硬盘唯一的MBR的话, 那么就只能启动一个操作系统了。      

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值