http://c.biancheng.net/view/1015.html

MBR 也就是主引导记录,位于硬盘的 0 磁道、0 柱面、1 扇区中,主要记录了启动引导程序和磁盘的分区表。我们通过图 1 来看看 MBR 的结构。

图  1 MBR的结构

MBR 共占用了一个扇区,也就是 512 Byte。其中 446 Byte 安装了启动引导程序,其后 64 Byte 描述分区表,最后的 2 Byte 是结束标记。我们已经知道,每块硬盘只能划分 4 个主分区,原因就是在 MBR 中描述分区表的空间只有 64 Byte。其中每个分区必须占用 16 Byte,那么 64 Byte 就只能划分 4 个主分区。每个分区的 16 字节的规划如表 2 所示。

表 2 分区表内容
存储字节 数据内容及含义
第 1 字节 引导标志
第 2 字节 本分区的起始磁道号
第 3 字节 本分区的起始扇区号
第 4 字节 本分区的起始柱面号
第 5 字节 分区类型,可以识别主分区和扩展分区
第 6 字节 本分区的结束磁道号
第 7 字节 本分区的结束扇区号
第 8 字节 本分区的结束柱面号
第 9~12 字节 本分区之前已经占用的扇区数
第 13~16 字节 本分区的总扇区数

大家注意到了吧,MBR 中最主要的功能就是存储启动引导程序。

启动引导程序的作用

BIOS 的作用就是自检,然后从 MBR 中读取出启动引导程序。那么,启动引导程序最主要的作用就是加载操作系统的内核。当然,每种操作系统的启动引导程序都是不同的。

每种操作系统的文件格式不同,因此,每种操作系统的启动引导程序也不一样。不同的操作系统只有使用自己的启动引导程序才能加载自己的内核。如果我的服务器上只安装了一个操作系统,那么这个操作系统的启动引导程序就会安装在 MBR 中。BIOS 调用 MBR 时读取出启动引导程序,就可以加载内核了。

但是在有些时候,我的服务器中安装了多个操作系统,而 MBR 只有一 个,那么在 MBR 中到底安装哪个操作系统的启动引导程序呢?

很明显,一个 MBR 是不够用的。每块硬盘只能有一个 MBR 是不能更改的,所以不可能増加 MBR 的数量。系统只能在每个文件系统(可以看成分区)中单独划分出一个扇区,称作引导扇区(Boot Sector)。每个分区的引导扇区中也能安装启动引导程序,也就是说,在 MBR 和每个单独分区的引导扇区中都可以安装启动引导程序。这样多个操作系统才能安装在同一台服务器中(每个操作系统要安装在不同的分区中),而且每个操作系统都是可以启动的。

还有一个问题,BIOS 只能找到 MBR 中的启动引导程序,而找不到在分区的引导扇区中的启动引导程序。那么,要想完成多系统启动,我们的方法是増加启动引导程序的功能,让安装到 MBR 中的启动引导程序(GRUB)可以调用在分区的引导扇区中的其他启动引导程序。

因此,启动引导程序拥有以下功能:

  1. 加载操作系统的内核。这是启动引导程序最主要的功能。
  2. 拥有一个可以让用户选择的菜单,来选择到底启动哪个系统。大家如果在服务器上安装过双 Windows 系统,就应该见过类似的选择菜单,不过这个选择菜单是由 Windows 的启动引导程序提供的,而不是 GRUB。
  3. 可以调用其他的启动引导程序,这是多系统启动的关键。不过需要注意的是,Windows 的启动引导程序不能调用 Linux 的启动引导程序,所以我们一般建议先安装 Windows,后安装 Linux,是为了将 Linux 的启动引导程序安装到 MBR 中,覆盖 Windows 的启动引导程序。

当然,这个安装顺序不是绝对的,就算最后安装了 Windows,我们也可以通过手工再安装 GRUB 的方法,来保证 MBR 中安装的还是 Linux 的启动引导程序。

下图为我们展示了启动引导程序的作用。

图 2 启动引导程序的作用

Linux启动管理:主引导目录(MBR)结构及作用详解相关推荐

  1. 主引导目录(MBR)结构及作用详解

    MBR 也就是主引导记录,位于硬盘的 0 磁道.0 柱面.1 扇区中,主要记录了启动引导程序和磁盘的分区表.我们通过图 1 来看看 MBR 的结构. 图 1 MBR的结构 MBR 共占用了一个扇区,也 ...

  2. linux进程管理工具supervisor安装卸载、子配置文件详解、遇到的问题、supervisor group群组管理、启动一个springboot项目示例、update命令注意点

    简介 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启. 它是通过fork/exec的方式把这些被管 ...

  3. linux启动管理,Linux启动管理 详述

    一 系统运行级别 如果想查看运行级别,用runlevel init 运行级别 就可以改变系统运行级别 系统默认级别,也就是开机进入哪个级别,在/etc/inittab中 二 启动过程 首先是BIOS加 ...

  4. Linux(centos)系统各个目录的作用详解

    转自:Linux(centos)系统各个目录的作用详解 现在公司的服务器使用CentOS系统,在网上找到了这篇介绍linux各个目录的文章,觉得十分不错,所以拿来存个档. 整理之后如下: 文件系统的类 ...

  5. mysql安装后目录介绍,MySQL安装后的目录结构及配置文件详解

    MySQL安装后的目录结构及配置文件详解 MySQL安装后的目录结构及配置文件详解 MySQL目录结构说明 MySQL 安装完成后,会在磁盘上生成一个目录,该目录就被称为 MySQL 的安装目录. M ...

  6. linux文件目录:Linux中各目录(文件夹)作用详解(持续更新)

    进入Linux系统,我们就是畅游在各种目录文件中,毕竟Linux是"文件系统",文件的存放就是在目录下面,那我们了解下"Linux中各目录(文件夹)作用详解"还 ...

  7. MySQL目录结构以及配置文件详解

    昨天给大家进行了数据库介绍,今天将正式带领大家进入我们的课题MySQL讲解部分,首先给大家介绍一下MySQL安装后的目录结构和配置文件详解. 一.MySQL的目录结构 1.bin目录 用于放置一些可执 ...

  8. 【BIOS】MBR引导程序类型及详解

    一.前言 在了解MBR引导之前,先需要了解读取MBR之前,机器都干什么了. 直接总结其他博主的文章罗列在此,以便查阅: 首先我们要了解整个启动过程的轮廓,可以读下边这篇文章 计算机的启动过程(详细) ...

  9. 【Linux】shell脚本实战-if多分支条件语句详解

    文章目录 前言 多分支语句的语法 多分支语句举例: 1. 出嫁的条件 2. 管理http服务实战脚本 3. 猜数字游戏v1版本-if版本 总结 前言 前面我们已经学习过单分支语句和双分支语句的使用. ...

最新文章

  1. Java 分布式系统下的 9 点设计与实现
  2. jittor和pytorch生成网络对比之cyclegan
  3. Android ListView常用用法
  4. Uva 11464 偶数矩阵
  5. 上交大计算机导师俞凯,WLA青科聊高考①|偶像剧“男主”、上海交大教授俞凯的学霸人生...
  6. [Leetcode][第632题][JAVA][最小区间][堆][滑动窗口]
  7. 由IDC机房测试谈主动工作教学实战案例!
  8. 2021四川高考成绩位次查询,2021年四川高考位次查询及一分一段表排名查询
  9. python处理era5_python批量下载EC—ERA5再分析资料
  10. 2022-全球最佳混响插件评测
  11. Kotlin-Android-Extensions:不仅仅是替代findViewById
  12. Win10磁盘占用100%的解决办法
  13. JS将sql的dateTime格式数据例如:Wed Sep 30 00:00:00 CST 2020 字符串转换成2020-09-30 00:00:00时间格式
  14. 区间DP例题(持续更新)
  15. 云计算-华为虚拟化平台FusionCompute
  16. 某博数据挖掘:使用Scrapy构建自定义数据采集提取洞察信息
  17. 1367 查找二叉树(tree_a)
  18. 2022英特尔AI开发者大会视频专区
  19. iOS审核用户隐私政策
  20. 极大极小算法和AlphaBeta剪枝算法

热门文章

  1. ORA-00257 archiver error. 错误的处理方法
  2. 团队第一阶段冲刺——第九天
  3. Second easyui框架学习
  4. ssh:Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open
  5. 百度地图——判断用户是否在配送范围内解决方案
  6. JAVA SE 基础复习-基本程序设计(1)
  7. 程序路漫漫兮,上下而求索
  8. nodejs计算时间间隔_NodeJs笔记:setTimeout 或 setInterval 的间隔时间执行
  9. 数据库身份证号用什么类型_鱼缸要不要铺底?用什么铺底?这3种类型,我有4个建议...
  10. solidworks属性管理器_老式经典|如何提高SOLIDWORKS的运行速度