在结束了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的硬盘文件名顺序是按照接口顺序来的,如下:
IDE | Master | Slave |
IDE1(Primary) | /dev/hda | /dev/hdb |
IDE2(Secondary) | /dev/hdc | /dev/hdd |
但是在SATA是按照LINUX核心侦测到磁盘的顺序来设置顺序。
3.早期磁盘第一个山区内含有重要的信息我们称为MBR(Master Boot Record)格式,但是现在硬盘越来越大,也就出现了新的GPT(GUID partition table)格式。
4.关于MBR
分区的原因:
(1)数据的安全性;
(2)数据的效能考虑。
MBR仅使用第一个512bytes区块来记录。第一个512bytes有两个数据,MBR(可以安装开机管理程序的地方,有446bytes)和分区表(记录整个硬盘分区状态,有64bytes)。
我们利用参考柱面号码来进行分区,在分区表所在的64bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的柱面号码。例如:
P1 | 1~100 | /dev/hda1 |
P2 | 101~200 | /dev/hda2 |
P3 | 201~300 | /dev/hda3 |
P4 | 301~400 | /dev/hda4 |
由于分区表仅能写入四组分区信息,这四个分区被称为主(Primary)或扩(Extended)分区。我们可以用扩展分区来将一个硬盘分为更多的分区。扩展分区的想法是:既然第一个扇区所在的分区表只能记录四条数据,那就可以利用额外的扇区来记录更多的分区信息。由扩展分区继续切出来的分区,就被称为逻辑分区(logical partition)。例如:
P1 | 1~100(primary) | /dev/hda1 |
P2 | 101~400(extended) | /dev/hda2 |
P3 | 无记录 | /dev/hda3 |
P4 | 无记录 | /dev/hda4 |
L1 | 101~160(logical) | /dev/hda5 |
L2 | 161~220(logical) | /dev/hda6 |
L3 | 221~280(logical) | /dev/hda7 |
L4 | 281~340(logical) | /dev/hda8 |
L5 | 341~400(logical) | /dev/hda9 |
注意:由于前四个号码都是保留给Primary或Extended用的。所以逻辑分区的设备名称号码应该从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差别如下:
BIOS | UEFI | |
使用程序语言 | 汇编语言 | C语言 |
硬件资源控制 | 使用中断(IRQ)管理 不可变的内存存取 不可变的输入/输出存取 | 使用驱动程序和协议 |
处理器运行环境 | 16位 | CPU保护模式 |
扩展方式 | 通过IRQ | 直接加载驱动程序 |
第三方支持 | 较差 | 较好且可支持多平台 |
图形化能力 | 较差 | 较好 |
内建简化操作系统前环境 | 不支持 | 支持 |
8.目录树结构
整个目录树架构中最重要的就是根目录(root directory),这个根目录的表示方法为一条斜线(/),所有文件都与目录树有关,呈现方式如下图。
图3.2 目录树相关性示意图
9.文件系统与目录树的关系——挂载
所谓挂载,就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,也就是说进入该目录就可以读取该分区的信息。
10.boot loader的主要功能:提供菜单、载入内核文件、转交其它loader。boot loader的安装地点可以是MBR或者Boot sector。