2021.1.18 P64 ~ 76
在Linux系统中,每个设备都被当做一个文件对待:几乎所有的硬件都在/dev目录下。
如果是虚拟机,为了加速,其内的磁盘是使用模拟器产生的,该模拟器产生的磁盘文件名可能为/dev/vd[a-p]系列的文件名。
虚拟化:CPU指令集中整合了硬件虚拟化指令集。
磁盘分区:C、D、E盘就是一块磁盘的几个分区。
正常的物理机器使用的磁盘文件名:/dev/sd[a-p];虚拟机:/dev/vd[a-p]
a~p的命名顺序为内核扫描磁盘接口的顺序,例如SATA接口只插上了第1、5号,但是对应的文件名为/dev/sda,/dev/sdb
整块磁盘的第一个扇区特别重要,其记录了整块磁盘的重要信息。通常包含以下信息:
- 主引导记录(MBR):可以安装启动引导程序的地方,446Bytes
- 分区表:记录整块硬盘分区的状态,64Bytes
分区表最多只能划分成四块,每块中记录开始柱面与结束柱面编号。
每块可以被称为C、D、E、F盘。
/dev/sda1,即为a号磁盘的C分区(C盘)
在其中一个分区中,可以划分出单独的一块MBR分区表,记录【逻辑分区】的信息(可以类比二级索引!),从而将磁盘划分出多于4个分区。在硬盘的第一块MBR分区表中,记录扩展分区记录区的那16个字节被称为【扩展分区】(名词别弄混了)
例如:在第0块,记录P1主要分区:0~100号柱面,P2扩展分区:101~400号柱面。
在101号柱面的第一块,记录逻辑分区L1:101~160,L2:161~220,L3:221~280,L4:281~340,L5:341~400,则设备文件名为:
P1:/dev/sda1,P2:/dev/sda2,L1:/dev/sd5,……L5:/dev/sd9
因为sda3~4编号被扩展分区用了。
GPT磁盘分区表:为了兼容所有的磁盘,使用【逻辑区块地址】(LBA)
GPT使用34个LBA记录分区信息,且磁盘最后34个LBA作为一个备份。
LBA0:MBR兼容区块,与MBR格式相同,存储主引导记录,以及一个特殊标志符号,表示磁盘为GPT格式。
LBA1:记录分区表本身的位置与大小;记录备份用的GPT分区位置;记录分区表的校验码,操作系统根据这个校验码判断GPT是否正确。
LBA2~33:每个LBA记录4组分区记录,因此一共有4
GPT分区已经没有所谓的主、扩展、逻辑分区的概念。(可以理解为,所有的分区都是主要分区)
启动的检测程序:BIOS、UEFI。
2021.1.19 P76 ~ 87
固件:写入到硬件上的一个软件程序。BIOS就是启动的时候计算机系统主动执行的第一个程序,读取第一个扇区的MBR位置。
MBR启动引导程序的目的是加载内核文件。
Boot loader可以将启动管理功能交给其他启动引导程序。因为磁盘分区内可以有各自的启动扇区。(不同分区可以安装不同的操作系统)
第19章节会详细解释【启动引导程序】与【引导扇区】
启动需要启动引导程序;启动引导程序可以安装在MBR及引导扇区两处。
因为BIOS只是16位的程序,因此与现阶段的操作系统(64位)接轨比较弱。UEFI:统一可扩展固件接口,帮助解决此问题。
UEFI大多用来实现启动操作系统之前的硬件检测、启动管理、软件设置等目的。
开机流程:BIOS–>MBR–>引导启动程序–>内核文件
Linux系统最重要的地方就是在于目录树架构
挂载(mount):帮助解决结合目录树的架构与磁盘内的数据问题
挂载的含义:利用一个目录当做进入点,将磁盘分区的数据放在该目录下。进入该目录就可以读取该分区。(进入点的目录我们称为【挂载点】)
例如,将磁盘分区1挂载到/下,将磁盘分区2挂载到/home下
判断某个文件在哪个分区下:只需要反向查找目录,例如/home/file,上层目录为/home,而/home被磁盘分区2挂载,因此/home/file文件在磁盘分区2。
光驱等设备与磁盘分区同理,设备被挂载到某个目录下,则可以在该目录下访问该设备。
/usr目录:Linux的可执行程序及相关的文件存放的目录(容量需求较高)
.iso文件:image文件(镜像文件)
DHCP:提供客户端自动获取IP的功能
硬盘规划:将容量需求较高、IO较频繁的目录独立出来,不与根目录放在一起,当这些分区出问题时,至少不会影响到根目录的数据,容易恢复。符合这些条件的目录有:/, /boot, /home, /var, swap