操作系统启动原理解析

  • 目录

  • 磁盘分区
    • 1.磁盘分区表
    • 2.开机流程与MBR的关系
    • 3.磁盘分区



一开始学习linux的时候我是直接按照网上的教程装了一个双系统,磁盘分区这些配置那个时候也不是很懂就照猫画虎的配置了一遍。之后因为一些需求又装了几次系统,也帮女朋友装过一次。每一次都要重新翻找原来的博客,而且在碰到女票的SSD比较小的情况时,磁盘分区的问题还着实费了翻功夫。巧的是大三打算进学院的实验室划划水,院长钦点的考核项目需要考察对系统的了解,少不了要装个系统吧。忙里偷闲从头系统的学习一下Linux系统的安装,顺序手写一篇博客方便以后翻看。


磁盘分区


1.磁盘分区表

我们知道磁盘的盘片上面会有很多的扇区,其中整块磁盘的第一个扇区最为重要,因为这个扇区上保存了两个特别重要的信息:

  • 主引导分区 Master Boot Record(MBR)可以安装引导加载程序的地方,有446Bytes
  • 分区表(partition table)记录整块硬盘分区的状态,有64Bytes

MBR之所以重要,是因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才会知道你的程序存放在哪里并且如何开机。这个概念一会儿还会用到。

那么磁盘分区表呢?我们的硬盘就像是一块原木,我们根据需要将这块原木分割成我们想要大小的区段。在分区表的64Bytes里面,总共分为了4个记录区,分别记录了该区段的启示与结束的柱面号码(请参看机械硬盘相关概念)。注意虽然我们可以分出很多个分区,但是分区表实际只能容纳4个分区而已,硬盘默认的分区表仅能写入四组分区信息,这四组分区我们成为主分区或者扩展分区,其中分区的最小单位是柱面。分成比4个更多的分区这样的操作的确存在,是如何做到的呢?其实是那个扩展分区做的。4个分区记录里(第一扇区上),一个(P1)主分区,一个扩展分区指向其他扇区上面的其他区块,在这个区块上继续分区。这些分区就被称为逻辑分区(L),总共所使用的柱面范围就是上面扩展分区里面指定的柱面范围。例如一个分区实例:

  • P1:/dev/hda1
  • P2:/dev/hda2
  • L1:/dev/hda5
  • L2:/dev/hda6

细心的你一定发现了吧,hda3 和 hda4被跳过了,原因就是L1逻辑分区是由P2扩展分区持续分割而来的。1~4号是留给主/扩展分区的,逻辑分区就只能从5号开始排号喽。


2.开机流程与MBR的关系

我们原来一直忽略的一点,其实操作系统也是软件。开机时的计算机没有任何软件系统,那么他是如何读取磁盘中的操作系统程序并运行的呢,本节将为你解答。
开机的时候计算机要去执行的第一个软件时BIOS,这个是在固定的硬件里面写死的。BIOS会根据用户的设置去取得能够开机的磁盘,读取它的第一个扇区的MBR,其中放置的是一个最基本的引导加载程序(Boot loader),接下来就是这个程序的任务啦,BIOS就可以宣告休息了。
这个引导文件的目的是加载内核文件(load),之后的工作就由操作系统接手啦。
以上是正常的只安装有一个操作系统的机器的开机流程。其实Boot loader还可以把引导加载功能转交给其他loader,MBR虽然只有一个,但是引导加载程序却可以安装在MBR之外的每个分区的引导扇区(Boot sector),这也就实现了多重引导的功能。


3.磁盘分区

to be continue。。。。  

你可能感兴趣的:(linux,linux)