目录

计算机硬件

系统硬件

CMOS是一块芯片,记录计算机硬件信息。BIOS 是可以修改 CMOS 的程序,该程序为写死在硬件上,不可修改。硬件开机,第一个执行的程序便是 BIOS ,然后再是操作系统的引导程序(MBR:主引导记录,GRUB:统一引导加载器),然后是操作系统内核,再是内核上的操作系统。

开机固件接口标准

功能包括开机自检、启动流程(如何找到引导程序)、给操作系统和引导程序提供系统服务等。

启动方式: 是指如何主板上的固件在开机自检后如何找到引导程序。

BIOS

Legacy模式:BIOS + MBR 启动。CMOS 是 PC 上的另一个重要的存储器,用于保存 BIOS 的设置结果,CMOS 是 RAM。

  1. 开机自检

  2. 加载引导程序(MBR中的,通常是bootloader的第一级)

  3. 向OS提供抽象的硬件接口

启动方式:

  1. BIOS加电自检(Power On Self Test -- POST)。

  2. 读取主引导记录(MBR)。BIOS根据CMOS中的设置依次检查启动设备:将相应启动设备的第一个扇区(也就是MBR扇区)读入内存。

    1. 检查MBR的结束标志位是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示"NO ROM BASIC"然后死机。

    2. 当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备的MBR。

  3. 根据MBR中的引导代码启动[引导程序]。

UEFI

UEFI模式:UEFI + GPT 启动。架设在系统固件之上的软件接口,用于替代BIOS接口.

  1. Pre-EFI初始化模块

  2. EFI驱动程序执行环境(DXE)

  3. EFI驱动程序

  4. 兼容性支持模块(CSM)

  5. EFI高层应用

  6. GUID磁盘分区表(GPT)

启动方式:

  1. Pre-EFI初始化模块运行,自检

  2. 加载DXE(EFI驱动程序执行环境),枚举并加载EFI驱动程序(设备ROM或ESP中)

  3. 找到ESP中的引导程序,通过其引导操作系统。

硬件设备名

在Linux系统中的文件名:

设备文件名
SCSI / SATA / USB/dev/sd[a-p]
Virtual/O 虚拟硬盘/dev/vd[a-p] 虚拟机内
软盘/dev/fd[0-7]
鼠标/dev/input/mouse[0-15] /dev/mouse /dev/psaux
CDROM / DVDROM/dev/scd[0-1] /dev/sr[0-1] /dev/cdrom
IDE硬盘/dev/hd[a-d]

磁盘分区格式

MBR

一整块硬盘按 512 Byte 划分为一个一个的 sector (扇区),编号从 0 开始。

0 号扇区里存储了:

  • 开机管理程序(446 Byte)

  • 分区表 (64Byte),存储 4 条记录,每条记录为扇区 [开始编号,结束编号]

  • 结束标志 0x55AA (2Byte)

image-20210305213430777

所谓的分区,就是设置分区表。

假如硬盘文件名为 /dev/sda ,则划分后的分区名为:

/dev/sda1
/dev/sda2
/dev/sda3
/dev/sda4

由于分区表总大小的限制,顶多能分4个区,普通的叫做 Primary 主分区,最多能有4个。

如果希望能有更多个分区,则需要将其中一个主分区的位置让出来,设置成 Extends 拓展分区(最多只有一个)。拓展分区表里,记录了一个 512 Byte 大小空间的[开始编号,结束编号],这个空间被称为 EBR (Extended Boot Record)。

EBR 中记录了:

  • 一个逻辑分区的[开始编号,结束编号],作为新的分区

  • 下一个 EBR 的[开始编号,结束编号]

image-20210305213025925

GPT

GUID partition table 使用 LBA (512Byte) 来规划磁盘。

  • 第一个 LBA 称为 LBA0,为了兼容MBR,不使用。

  • LBA1记录了GPT表头,以及GPT备份所在位置

  • LBA2到LBA33是记录表,每个LBA可以写入4条分区记录,每个记录使用64bit记录扇区位置,所以单个分区最大可达到230TB大小,总分区数可以达到128个

image-20210305225846992

开机顺序

CMOS + BIOS + MBR

  1. BIOS: 开机主动执行的固件,会读取CMOS

  2. MBR: 第一块,内含有 Bootstrap Code,这个代码可以载入其他的 bootloader 来引导操作系统,双系统的实现就是依靠这一点

2.5 : 开机管理程序bootloader,在这里,可以选择进入哪个系统

  1. 指定操作系统的 bootloader

  2. 核心文件:操作系统功能个

image-20210305230545100

UEFI + GPT

GPT 分区格式虽然优点多,但是BIOS固件只是个16位的程序,根本无法使用GPT分区。所以,人们开发出了UEFI固件,替代了BIOS.

UEFI 强大之处

  • C语言开发

  • 内置 TCP/IP ,不需要进入操作系统,就可以联网使用

  • 图形化能力强

  • 可以直接使用硬件驱动程序

  • 提供类似操作系统的shell环境

  • secure boot 安全机制(这个机制,会验证即将载入的操作系统,所以开启后,有些Linux系统可能无法顺利开机,所以一般建议关闭)

UEFI简直就像是一个低阶的操作系统。

网络硬件

双绞线

多用于从主机到集线器或交换机的连接

光纤

则主要用于交换机间的级联和交换机到路由器间的点到点链路上

交换机

交换机为了方便数据传输,通常会存储每个端口所对应的MAC地址,形成一张表。当交换机收到计算机发来的以太帧时,就会查看帧中的源MAC地址,并查找存储的表。如果表中存在该MAC地址,就直接转发数据。如果没有,则将该MAC地址存入该表中。当其他计算机向这个MAC地址发送数据时,可以快速决定向哪个端口发送数据。由于该表不可能是无穷大的,所以当达到一定数量时,将不会储存其他新的MAC地址。再有新的主机发来数据帧时,部分交换机将不再查找对应的端口,而是以广播的形式转发给所有的端口。