1、设备文件的分类
在Linux下的/dev目录中有大量的设备文件,根据设备文件的不同,又分为字符设备文件和块设备文件。
字符设备文件的存取是以字符流的方式来进行的,一次传送一个字符。常见的有打印机,终端(TTY)、绘图仪和磁带设备等等,字符设备文件有时也被称为“raw” 设备文件。
块设备文件是以数据块的方式来存取的,最常见的设备就是磁盘。系统通过块设备文件存取数据的时候,先从内存中的buffer中读或写数据。而不是直接传送数据到物理磁盘。这种方式有效的提高了磁盘的I/O性能。
2、MBR和GPT
MBR(Master Boot Record):即硬盘的主引导记录分区列表,硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT和硬盘有效标志(55AA)。在总共512字节的主引导扇区里,主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。
GPT(GUID Partition Table):即全局唯一标识分区列表,是一个物理硬盘的分区结构。它用来替代BIOS中的主引导记录分区表(MBR)。
传统BIOS主要支持MBR引导,UEFI则是取代传统BIOS,它加入了对新硬件的支持。
3、UEFI和BIOS
UEFI(Unified Extensible Firmware Interface):全称“统一的可扩展固件接口”,它定义了一种在操作系统和平台固件之间的接口标准。这种接口用于操作系统自动从预启动的操作环境(在系统启动之后,但是操作系统开始运作之前)加载到一种操作系统上,从而使开机程序化繁为简,节省时间。需要注意,UEFI最准确的说它仅是一种规范,不同厂商根据该规范对UEFI的实现,并做出PC固件后,该固件就称为UEFI固件。
BIOS(基本输入和输出系统),是最古老的一种系统固件和接口,采用汇编语言进行编程,并使用中断来执行输入/输出操作,在出现之初即确定了 PC 生态系统的基本框架。
UEFI比BIOS先进在三个方面:
(1) 读取分区表
(2) 访问某些特定文件系统中的文件
(3) 执行特定格式的代码【可以说UEFI像一个简易的操作系统】
表格对比:
| 对比项 | BIOS | UEFI | MBR | GPT |
| 类型 | 固件(基本输入输出系统) | 固件(统一可扩展固件接口) | 分区表格式 | 分区表格式 |
| 诞生时间 | 1975年 | 2005年 | 1983年 | 2000年 |
| 存储位置 | 主板ROM芯片 | 主板闪存/硬盘ESP分区 | 磁盘第一个扇区 | 磁盘开头和结尾 |
| 最大磁盘 | 无限制(受MBR限制) | 无限制 | 2.2TB | 9.4ZB(理论) |
| 最大分区 | 受MBR限制 | 受GPT限制 | 4个主分区(或3+扩展) | 128个主分区 |
| 启动方式 | Legacy/传统模式 | UEFI模式 | BIOS-MBR | UEFI-GPT |
| 安全特性 | 无 | 安全启动(Secure Boot) | 无 | CRC校验,分区表备份 |
| 图形界面 | 文本界面 | 支持图形界面 | – | – |
| 启动速度 | 慢 | 快(并行初始化) | – | – |
4、UEFI、BIOS和MBR、GPT之间的关系?
MBR的特点
MBR分区的分区表保存在硬盘的第一个扇区,而且只有64字节,所以最多只能有四个表项。也就是说,我们只能把硬盘分为4主分区,或者分成小于等于3个主分区再加一个扩展分区。
MBR分区的优点就是简单,支持度高,很多操作系统都可以从MBR分区的硬盘启动。 缺点就是MBR分区不能识别大于2T的硬盘空间,也不能有大于2T的分区.
MBR支持32位和64位系统。
GPT的特点
没有4个主分区的限制,对分区的数量没有限制。
GPT可管理硬盘大小最大18EB
要从GPT分区的硬盘启动,则需要UEFI主板、硬盘使用GPT分区、操作系统支持GPT这三 个条件。
必须使用64位系统。
UEFI的目标是取代传统BIOS,它不支持MBR模式,仅支持GPT格式。不过,近年出现的UEFI主板,采用UEFI+BIOS共存模式,并且BIOS中集成UEFI启动项。
5、Linux操作系统GPT-UEFI支持列表
其中,1=BIOS+MBR,2=UEFI+GPT
| 操作系统平台 | 版本范围 (64bit) | GPT-UEFI 支持情况 | 备注 / 引导限制 |
| RHEL / CentOS | 6.X / 7.X | GPT 需要 UEFI | 1、2 (RHEL 7 之后完全支持) |
| RHEL | 8.X / 9.X/10.x | 原生支持 | 全面支持 UEFI & Secure Boot |
| Ubuntu | 20.04 / 22.04 / 24.04 | 原生支持 | 默认 GPT,支持 HTTP Boot |
| Debian | 10 / 11 / 12 / 13 | 原生支持 | Debian 13 (Trixie) 强化了 UEFI 兼容性 |
主要是两种分区方式:
| 特性 | fdisk | parted |
| 主要用途 | MBR分区表管理 | GPT和MBR都支持 |
| 交互方式 | 纯命令行交互 | 命令行和交互式 |
| 实时性 | 操作缓存,需w命令写入 | 实时生效,需要小心 |
| 磁盘大小 | ≤2TB(MBR限制) | 支持超大磁盘 |
| 分区数量 | 4主分区或3主+扩展 | 最多128分区(GPT) |
| 文件系统 | 只管理分区,不处理文件系统 | 可直接创建文件系统 |
| 使用难度 | 简单直观 | 较复杂,功能强大 |
| 脚本支持 | 支持非交互模式 | 支持脚本和单行命令 |
第一种:fdisk
常用组合:
fdisk -l(查看分区情况)
fdisk的使用分为两个部分,查询部分和交互操作部分。通过fdisk device即可进入命令交互操作界面。
常用命令:
d:删除一个分区
l:查看指定分区的分区表信息
m:显示fdisk每个交互命令的详细含义
n:增加一个新的分区
p:显示分区信息
q:退出交互操作,不保存操作的内容
t:改变分区类型
w:写分区表信息到硬盘,保存操作退出
第二种是parted
对于GPT格式的分区,fdisk工具是无能为力的,同时,fdisk工具对分区是有大小限制的,它只能划分小于2T的磁盘。但是现在的磁盘空间很多都已经是远远大于2T,此时就需要另外一个磁盘管理工具parted来完成大于2T的磁盘分区工作。
查看系统是否有parted命令,如果没有,执行如下命令直接安装即可:
yum -y install parted
parted交互模式下常用的一些参数:
mklabel 创建分区表, 也就是设置使用msdos还是使用gpt格式。例如:mklabel gpt,表示设定分区表为gpt格式。
mkpart 创建新分区命令。
使用格式为:mkpart PART-TYPE [FS-TYPE] START END
其中,PART-TYPE,表示分区类型,主要有primary(主分区),extended(扩展分区),logical(逻辑区),其中,扩展分区和逻辑分区只针对msdos分区表。
fs-type,表示文件系统类型,主要有fat32,NTFS,ext2,ext3等,可不填写。
start,表示分区的起始位置。
end,表示分区的结束位置。
print 输出分区信息,可简写为p。该功能有3个选项:
free,显示该盘的所有信息,并显示磁盘剩余空间。
number, 显示指定的分区的信息。
all或list, 显示所有磁盘信息。
rm 删除分区。命令格式 rm number 。
例如:rm 2 就是将编号为3的分区删除。
select 选择设备。
当输入parted命令后直接回车进入交互模式时,默认设置的是系统的第一块硬盘,如果系统有多块硬盘,需要用select命令选择要操作的硬盘。
例如:select /dev/sdb
发表回复