Linux(1)各硬件设备在Linux中的文件名,MBR,GPT,BIOS,UEFI启动流程

各硬件设备在Linux中的文件名

在Linux系统中,每个设备都被当做一个文件来对待。例如SATA接口的硬盘文件即为 /dev/sd[a-d],有/dev/sda等四个文件名。

设备文件名
SCSI,SATA,USB磁盘驱动器/dev/sd[a-p]
U盘/dev/sd[a-p]与SATA相同
Virtio接口/dev/vd[a-p] 位于虚拟机内
软盘驱动器/dev/fd[0-7]
打印机/dev/lp[0-2](25针打印机) /dev/usb/lp[0-15]USB接口
鼠标/dev/input/mouse[0-15](通用)/dev/psaux(PS/2接口)/div/mouse(当前鼠标)
CD-ROM,DVD-ROM/dev/scd[0-1](通用) /dev/sr[0-1](通用) /dev/cdrom(当前CD-ROM)
磁带机/dev/ht0(IDE接口) /dev/st0 (SATA/SCS接口) /dev/tape(当前磁带)

磁盘连接方式和设备文件名的关系

个人计算机常见的磁盘接口有SATA,SAS。近年来硬件虚拟化技术成熟,目前普通的中档个人计算机的CPU指令集中,就已经整合了硬件虚拟化指令集。所以计算机可用虚拟化出好几台逻辑独立的系统。这些虚拟机使用的虚拟磁盘并不是正规的磁盘接口,这种情况下。磁盘文件名就不一样了。正常的物理机器大概使用 /dev/sd[a-p] 的磁盘文件名,至于虚拟机环境使用 /dev/vd[a-p]

对于SATA,USB,SAS等磁盘接口都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是用/dev/sd[1-p] 的格式,根据Linux内核检测到的顺序来命名(不是根据插槽位置)

MBR(MS-DOS) 分区表格式与限制

分区嘛,在window里就是一块磁盘分为C盘,D盘。分区表嘛,就是分区的格式和限制。。。。

MBR嘛,就是主引导记录,,
在这里插入图片描述

这四个分区的记录被称为主要或扩展分区。所以所谓的分区就是对那64字节的分区表进行设置而已,,,

为啥要分区:

  • 安全,,
  • 系统的性能考虑,,

当然我们不止可以划分四个分区,若想画出个十个分区,就是用扩展分区的方式来处理。就是基本划分为两个,一个主分区,另一个就是扩展分区,扩展分区就是用包含分区前面的扇区来记录分区信息来进行格外的划分。。。所以这些划分来的就是扩展分区的子分区啦。。这些分区就是逻辑分区

文件名就是: /sda1 /sda2 /sda5 /sda6。。。前四个号是给主要分区和扩展分区用的,逻辑分区就从5号开始,,这是MBR的重要特性。。还有,主分区和扩展分区最多可以有四个(硬盘的限制),扩展分区只能有一个(操作系统的限制)。能被格式化后作为数据存取的分区时主要分区和逻辑分区,扩展分区无法格式化。。

所以如果你的硬盘记录的分区表和MBR没了,那么这个硬盘基本废了。。但是呢对于大容量的磁盘就不好使了,,然后就有了GPT这个磁盘分区格式

GPT磁盘分区表

GPT将所有的磁盘区块以LBA逻辑区块地址,默认512字节)来规划,第一个叫LBA0。,,它使用34个LBA区块来记录分区信息,比MBR的一个确实安全,而且整个磁盘的最后34个LBA用来做备份。。。

  • LBA0(MBR兼容区块),与MBR模式相似,这个兼容区块由两部分,一个时储存了第一阶段的启动引导程序,另一个仅是一个特殊标志符,用来表示这是个GPT格式的意思。。。
  • LBA1(GPT表头记录):这个部分记录了分区表本身的位置和大小,同时记录了备份用的GPT分区放置的位置,同时放置了分区表的校验码,操作系统可以根据这个效验码来判断GPT是否正确。若有错误,就通过这个记录区来获取备份的GPT来恢复GPT的额正常运行
  • LBA2-33(实际记录分区信息处): 从LBA2开始,每个LBA都可以记录四组分区记录,所以在默认情况下有 4*32 组分区记录。。每个LBA有512字节,所以每组记录有128字节的空间,除了每组记录所需要的标识符与相关的记录之外,GPT在每组记录中分别提供了64位来记载开始/结束的扇区号码。所以GPT分区表对于单一分区的容量限制就是 …e。。8 ZB= 8*2^30 TB

GPT分区已经没有了主分区啥的了,,既然每组记录多可以独立存在,当然每个都可以视为时主要分区,每个分区都可以拿来格式化使用。。。但是不是所有的操作系统都可以读取到GPT的磁盘分区格式,也不是所有的硬件都可以支持GPT格式,这与启动的检测程序有关。

BIOS搭配MBR/GPT的启动流程

众所周知,操作系统就是一个软件。。。操作系统控制所有硬件,并且提供内核功能,从而让我们的计算机能够认识硬盘内的文件系统,来进一步进行操作。而这个软件就是用启动程序来启动的。。。

CMOS就是记录各项硬件参数并且嵌入在主板上面的存储器。BIOS就是写入到主板上面的软件程序。这个BIOS就是计算机系统启动时执行的第一个程序。

CMOS主要的功能就是记录主板上面的重要参数,包括系统时间,CPU电压与频率,各项设备的I/O地址 IRQ等,由于这些数据的记录需要电,所以主板上才会有电池。BIOS是写入到主板上的某一个flash 或EEPROM的程序,它可以在计算机启动时执行,已加载CMOS中的参数,并尝试调用存储设备中的引导程序,进一步进入操作系统当中。

接下来BIOS就会根据用户设置去启动硬盘,读取到第一个扇区的MBR位置,在MBR里的启动引导程序就会启动啦。

这个启动引导程序的作用就是加载内核文件。由于启动引导程序时操作系统在安装的时候提供的,所以他会认识硬盘里的文件系统格式,然后就交给操作系统啦。。。

BIOS也能从LBA0的MBR兼容区读取启动引导程序代码。但是如果你的引导程序不支持GPT,就像XP,那就不能启动操作系统啦。。。

由于 LBA0仅提供第一阶段的启动引导程序代码,因此如果你使用的类似 grub 的启动引导程序的话,就要额外划分一个‘BIOS boot’分区,这个分区才能够方式其他开机过程所需要的程序,在centos中,这个分区通常占用2MB.

Boot loader(启动引导程序) 就是操作系统安装在MBR上面的一个软件,他的任务是:

  • 提供选项,用户可以选择不同的启动选项,这就是多重引导功能。
  • 加载内核文件,直接指向可使用的程序区段来启动操作系统
  • 转交其他的引导程序,将启动管理的功能给其他的启动引导程序负责。

虽然我们的硬盘里只有一个MBR,但是启动引导程序还可以安装在每个分区的启动扇区里(BOOT sector),,,就是这个特性造就了 多重引导的功能。

在这里插入图片描述
就是说,MBR里的启动引导程序有了两个选项,M1直接加载window,M2将开机管理工作交给第二个分区的启动管理程序,然后第二个分区里只有M1这个选项,来加载Linux系统。。。实际可启动的内核文件释放到各分区中的。

UEFI BIOS搭配GPT启动的流程

Unified extensible Firmware Interface(UEFI 统一可扩展固件接口)…好厉害的样子。。。

GPT可以提供64位的寻址,而BIOS仅由16位,所以就用C 写出了UEFI。UEFI基本上就是一个低级的操作系统,由于其功能特性,开机速度比BIOS快了不少,但是管理硬件资源的效率低,执行效率无法提升等,所以效果华丽,但是性能不佳,所以UEFI大多用来实现启动操作系统之前的硬件检测,启动管理,软件设置等目的。

虽然UEFI可以直接获取GPT分区表,但是最好依旧拥有BIOS boot的分区支持,同时,为了与window 兼容,并且与其他第三方厂商所使用的UEFI应用程序存储的空间,必须要格式化一个FAT格式的文件系统分区,大约提供512MB到 1G 的大小,已让其他UEFI 执行较为方便,,,(没看懂欸)

目录树结构

整个目录树结构最重要的就是那个根目录 ‘/’

文件系统与目录树的关系(挂载)

所谓的挂载就是利用一个目录当作进入点,将磁盘分区的数据放置在该目录下。也就是所进入该目录就可以读取该分区。进入点的目录就是挂载点。(感觉就是类似CDEF盘)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值