Linux启动管理:主引导目录(MBR)结构及作用详解
http://c.biancheng.net/view/1015.html
MBR 也就是主引导记录,位于硬盘的 0 磁道、0 柱面、1 扇区中,主要记录了启动引导程序和磁盘的分区表。我们通过图 1 来看看 MBR 的结构。
![](/assets/blank.gif)
MBR 共占用了一个扇区,也就是 512 Byte。其中 446 Byte 安装了启动引导程序,其后 64 Byte 描述分区表,最后的 2 Byte 是结束标记。我们已经知道,每块硬盘只能划分 4 个主分区,原因就是在 MBR 中描述分区表的空间只有 64 Byte。其中每个分区必须占用 16 Byte,那么 64 Byte 就只能划分 4 个主分区。每个分区的 16 字节的规划如表 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)可以调用在分区的引导扇区中的其他启动引导程序。
因此,启动引导程序拥有以下功能:
- 加载操作系统的内核。这是启动引导程序最主要的功能。
- 拥有一个可以让用户选择的菜单,来选择到底启动哪个系统。大家如果在服务器上安装过双 Windows 系统,就应该见过类似的选择菜单,不过这个选择菜单是由 Windows 的启动引导程序提供的,而不是 GRUB。
- 可以调用其他的启动引导程序,这是多系统启动的关键。不过需要注意的是,Windows 的启动引导程序不能调用 Linux 的启动引导程序,所以我们一般建议先安装 Windows,后安装 Linux,是为了将 Linux 的启动引导程序安装到 MBR 中,覆盖 Windows 的启动引导程序。
当然,这个安装顺序不是绝对的,就算最后安装了 Windows,我们也可以通过手工再安装 GRUB 的方法,来保证 MBR 中安装的还是 Linux 的启动引导程序。
下图为我们展示了启动引导程序的作用。
![](/assets/blank.gif)
Linux启动管理:主引导目录(MBR)结构及作用详解相关推荐
- 主引导目录(MBR)结构及作用详解
MBR 也就是主引导记录,位于硬盘的 0 磁道.0 柱面.1 扇区中,主要记录了启动引导程序和磁盘的分区表.我们通过图 1 来看看 MBR 的结构. 图 1 MBR的结构 MBR 共占用了一个扇区,也 ...
- linux进程管理工具supervisor安装卸载、子配置文件详解、遇到的问题、supervisor group群组管理、启动一个springboot项目示例、update命令注意点
简介 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启. 它是通过fork/exec的方式把这些被管 ...
- linux启动管理,Linux启动管理 详述
一 系统运行级别 如果想查看运行级别,用runlevel init 运行级别 就可以改变系统运行级别 系统默认级别,也就是开机进入哪个级别,在/etc/inittab中 二 启动过程 首先是BIOS加 ...
- Linux(centos)系统各个目录的作用详解
转自:Linux(centos)系统各个目录的作用详解 现在公司的服务器使用CentOS系统,在网上找到了这篇介绍linux各个目录的文章,觉得十分不错,所以拿来存个档. 整理之后如下: 文件系统的类 ...
- mysql安装后目录介绍,MySQL安装后的目录结构及配置文件详解
MySQL安装后的目录结构及配置文件详解 MySQL安装后的目录结构及配置文件详解 MySQL目录结构说明 MySQL 安装完成后,会在磁盘上生成一个目录,该目录就被称为 MySQL 的安装目录. M ...
- linux文件目录:Linux中各目录(文件夹)作用详解(持续更新)
进入Linux系统,我们就是畅游在各种目录文件中,毕竟Linux是"文件系统",文件的存放就是在目录下面,那我们了解下"Linux中各目录(文件夹)作用详解"还 ...
- MySQL目录结构以及配置文件详解
昨天给大家进行了数据库介绍,今天将正式带领大家进入我们的课题MySQL讲解部分,首先给大家介绍一下MySQL安装后的目录结构和配置文件详解. 一.MySQL的目录结构 1.bin目录 用于放置一些可执 ...
- 【BIOS】MBR引导程序类型及详解
一.前言 在了解MBR引导之前,先需要了解读取MBR之前,机器都干什么了. 直接总结其他博主的文章罗列在此,以便查阅: 首先我们要了解整个启动过程的轮廓,可以读下边这篇文章 计算机的启动过程(详细) ...
- 【Linux】shell脚本实战-if多分支条件语句详解
文章目录 前言 多分支语句的语法 多分支语句举例: 1. 出嫁的条件 2. 管理http服务实战脚本 3. 猜数字游戏v1版本-if版本 总结 前言 前面我们已经学习过单分支语句和双分支语句的使用. ...
最新文章
- Java 分布式系统下的 9 点设计与实现
- jittor和pytorch生成网络对比之cyclegan
- Android ListView常用用法
- Uva 11464 偶数矩阵
- 上交大计算机导师俞凯,WLA青科聊高考①|偶像剧“男主”、上海交大教授俞凯的学霸人生...
- [Leetcode][第632题][JAVA][最小区间][堆][滑动窗口]
- 由IDC机房测试谈主动工作教学实战案例!
- 2021四川高考成绩位次查询,2021年四川高考位次查询及一分一段表排名查询
- python处理era5_python批量下载EC—ERA5再分析资料
- 2022-全球最佳混响插件评测
- Kotlin-Android-Extensions:不仅仅是替代findViewById
- Win10磁盘占用100%的解决办法
- JS将sql的dateTime格式数据例如:Wed Sep 30 00:00:00 CST 2020 字符串转换成2020-09-30 00:00:00时间格式
- 区间DP例题(持续更新)
- 云计算-华为虚拟化平台FusionCompute
- 某博数据挖掘:使用Scrapy构建自定义数据采集提取洞察信息
- 1367 查找二叉树(tree_a)
- 2022英特尔AI开发者大会视频专区
- iOS审核用户隐私政策
- 极大极小算法和AlphaBeta剪枝算法
热门文章
- ORA-00257 archiver error. 错误的处理方法
- 团队第一阶段冲刺——第九天
- Second easyui框架学习
- ssh:Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open
- 百度地图——判断用户是否在配送范围内解决方案
- JAVA SE 基础复习-基本程序设计(1)
- 程序路漫漫兮,上下而求索
- nodejs计算时间间隔_NodeJs笔记:setTimeout 或 setInterval 的间隔时间执行
- 数据库身份证号用什么类型_鱼缸要不要铺底?用什么铺底?这3种类型,我有4个建议...
- solidworks属性管理器_老式经典|如何提高SOLIDWORKS的运行速度