在结束了C++ Primer Plus和计算机组成原理的第一遍学习之后,我又开始了新课程的学习。目前在学习鸟哥的Linux私房菜(基础篇),采用的是第三版(书本学习)和第四版(电子版)相结合的方式,所以整理的笔记会混合第三版和第四版的知识点,但是考虑版本更迭关系,整理知识会以第四版为主。

第0章 计算机概论

1.计算机的五大单元:输入设备输出设备控制单元算术逻辑单元内存

2.CPU的种类:精简指令集(RISC)和复杂指令集(CISC)。

3.CPU的外频和倍频:

(1)外频指CPU和外部组件进行数据传输/运算速度;倍频则是CPU内部用来加速工作性能的倍数。

CPU的频率=CPU外频X倍频。

4.新的CPU设计中,已经将北桥的内存控制芯片整合到CPU内,而CPU与主存储器、显示适配器沟通的总线通常被称为系统总线,是内存传输的主要通道,速度较快南桥是输入输出总线,联系硬盘、USB、网卡等。

5.CMOS主要功能为记录主板上面的重要参数,包括系统时间、CPU电压与频率、各项设备的I/O地址与IRQ等;BIOS为写入到主板上某一块闪存或者EEPROM的程序,它可以在开机的时候执行,加载CMOS中的参数,并尝试调用存储设备中的开机程序,进一步进入操作系统当中

6.操作系统的角色

图0.1 操作系统的角色

7.系统内核的功能:

(1)系统调用接口;

(2)程序管理;

(3)内存管理;

(4)文件系统管理;

(5)设备驱动。

8.个人计算机的主存储器主要组件为动态随机存取内存(DRAM),CPU内部的第二层缓存(Cache)则使用SRAM。

9.磁盘连接到主板的接口多为SATA和SAS,目前主流为SATA3.0。

第1章 Linux是什么

1.GNU是GNU’s Not Unix的缩写。GPL是GNU General Public License的缩写。

第3章 主机规划与磁盘分区

1.在Linux中,每个设备都被当做一个文件来对待,每个设备都有设备文件名。各硬件设备在Linux中的文件名

设备设备在Linux内的文件名
SCSI/SATA/USB硬盘/dev/sd[a-p]
U盘/dev/sd[a-p]
virtl/O界面/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界面)

CDROM/DVDROM/dev/scd[0-1](通用)

/dev/sr[0-1](通用,CentOS较常见)

/dev/cdrom(当前CDROM)

磁带机IDE型:/dev/ht0

/dev/tape(当前磁带)

SATA/SCSI型:/dev/st0

IDE硬盘/dev/hd[a-d]

注意:

(1)由于现在IDE的磁盘基本都被淘汰,所以现在连IDE的文件名也被仿真成/dev/sd[a-p]了。

(2)正常机器的SATA借口的文件名都是/dev/sd[a-p],但由于我使用的是虚拟机安装linux,所以使用的是/dev/vd[a-p]。

2.IDE的硬盘文件名顺序是按照接口顺序来的,如下:

IDEMasterSlave
IDE1(Primary)/dev/hda/dev/hdb
IDE2(Secondary)/dev/hdc/dev/hdd

但是在SATA是按照LINUX核心侦测到磁盘的顺序来设置顺序。

3.早期磁盘第一个山区内含有重要的信息我们称为MBRMaster Boot Record格式,但是现在硬盘越来越大,也就出现了新的GPT(GUID partition table)格式。

4.关于MBR

分区的原因:

(1)数据的安全性;

(2)数据的效能考虑。

MBR仅使用第一个512bytes区块来记录。第一个512bytes有两个数据,MBR(可以安装开机管理程序的地方,有446bytes)和分区表(记录整个硬盘分区状态,有64bytes)。

我们利用参考柱面号码来进行分区,在分区表所在的64bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的柱面号码。例如:

P11~100/dev/hda1
P2101~200/dev/hda2
P3201~300/dev/hda3
P4301~400/dev/hda4

由于分区表仅能写入四组分区信息,这四个分区被称为(Primary)或扩(Extended)分区。我们可以用扩展分区来将一个硬盘分为更多的分区。扩展分区的想法是:既然第一个扇区所在的分区表只能记录四条数据,那就可以利用额外的扇区来记录更多的分区信息。由扩展分区继续切出来的分区,就被称为逻辑分区(logical partition)。例如:

P11~100(primary)/dev/hda1
P2101~400(extended)/dev/hda2
P3无记录/dev/hda3
P4无记录/dev/hda4
L1101~160(logical)/dev/hda5
L2161~220(logical)/dev/hda6
L3221~280(logical)/dev/hda7
L4281~340(logical)/dev/hda8
L5341~400(logical)/dev/hda9

注意:由于前四个号码都是保留给PrimaryExtended用的。所以逻辑分区的设备名称号码应该从5开始。

MBR主要分区、拓展分区和逻辑分区的特性:

(1)主分区和拓展分区最多只能有4组(硬盘限制);

(2)扩展分区最多只能有一个(操作系统限制);

(3)逻辑分区是由扩展分区持续切割出来的分区;

(4)能够被格式化后作为数据访问的分区为主分区逻辑分区,扩展分区无法格式化;

(5)逻辑分区的数量以操作系统而不同,在LINUX系统中SATA硬盘已经可以突破63个以上分区的限制。

5.关于GPT

GPT已经没有扩展分区和逻辑分区的概念。GPT使用34个LBA(Logical Block Address,逻辑区块地址)区块来记录分区信息。如图3.1所示。

图3.1 GPT的LBA块示意图

LBA0(MBR相容区块):分为两个部分,第一个就是跟之前相似,储存了第一阶段的开机管理程序;后面的那部分放入一个特殊标志,表示此磁盘为GPT格式。

LBA1(GPT表头记录):记录了分区表本身的位置和大小,同时记录了备份用的GPT分区(即最后34个LBA区块)放置的位置,同时放置了分区表的检验机制码(CRC32)。

LBA2-LBA33(实际记录分区信息的地方):每个LBA都可以记录4个分区记录,所以默认情况下总共有4*32=128个分区记录。GPT在美国记录中分别提供了64bits来记载开始/结束的扇区号码

6.MBR的开机流程

简单来说,整个个开机流程到操作系统之前的动作如下:

(1)BIOS:开机主动执行,会认识第一个可开机的设备;

(2)MBR:第一个可开机设备的第一个扇区内的主要启动记录区块,内含开机管理程序;

(3)引导加载程序(Boot loader):一个可读取内核文件来执行的软件;

(4)内核文件:开始操作系统的功能。

7.UEFIBIOS搭配GPT的开机流程

传统BIOS与UEFI差别如下:

 BIOSUEFI
使用程序语言汇编语言C语言
硬件资源控制使用中断(IRQ)管理

不可变的内存存取

不可变的输入/输出存取

使用驱动程序和协议
处理器运行环境16位CPU保护模式
扩展方式通过IRQ直接加载驱动程序
第三方支持较差较好且可支持多平台
图形化能力较差较好
内建简化操作系统前环境不支持支持

 

8.目录树结构

整个目录树架构中最重要的就是根目录(root directory),这个根目录的表示方法为一条斜线(/),所有文件都与目录树有关,呈现方式如下图。

图3.2 目录树相关性示意图

9.文件系统与目录树的关系——挂载

所谓挂载,就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,也就是说进入该目录就可以读取该分区的信息。

10.boot loader的主要功能:提供菜单载入内核文件转交其它loader。boot loader的安装地点可以是MBR或者Boot sector