基础概念:
GNU与GPL:
GNU计划:理查德·马修·斯托曼在1984年发起的计划,目标是建立一个自由的、开放的UNIX操作系统
GPL(General public License):通用公共许可证
Linux其实就是操作系统最底层的内核及其提供的内核工具,它是GNU GPL授权模式,所以,任何人均可取得源代码与可执行这个内核程序,并且可以修改,因为Linux参考POSIX设计规范,于是兼容UNIX操作系统,故亦可称之为UNIX-like(类UNIX的一种)
发行版:
Linux发行版:为了让用户能够接触到Linux,“内核+软件+工具+可完全安装程序”的东西
事实上鸟哥认为distributions主要分为两大系统,一种是使用RPM方式安装软件的系统,包括Red Hat, Fedora, SuSE等都是这类; 一种则是使用Debian的dpkg方式安装软件的系统,包括Debian, Ubuntu, B2D等等。
主要的Linux发行版官方网址:
- Red Hat: http://www.redhat.com
- Fedora: http://fedoraproject.org/
- Mandriva: http://www.mandriva.com
- Novell SuSE: http://www.novell.com/linux/
- Debian: http://www.debian.org/
- Slackware: http://www.slackware.com/
- Gentoo: http://www.gentoo.org/
- Ubuntu: http://www.ubuntu.com/
- CentOS: http://www.centos.org/
硬件设备在Linux中的文件名:
在Linux系统中,每个设备都被当成一个文件来对待
中括号表示法:sd[a-c] 等价于 sd[a]、sd[b]、sd[c]
磁盘连接与设备文件名关系:
不同接口的磁盘的设备文件名根据Linux内核检测到磁盘的顺序来命名
例如,PC上有两个SATA磁盘和一个USB磁盘,主板上有6个SATA插槽,两个SATA磁盘分别插在SATA1和SATA5两个插槽上,那么这三个磁盘对应的设备文件名如下:
SATA1上的文件名:/dev/sda
SATA5上的文件名:/dev/sdb
USB磁盘(系统启动完成后才被系统识别):/dev/sdc
磁盘分区的分区表:
磁盘主要由碟片、机械手臂、磁头、主轴马达组成,而数据的写入是在碟片上面。而碟片又可细分出扇区(Sector)与磁道(Track)两种单位。
碟片中的第一个扇区非常重要,因为里面一些重要信息。
MBR(Master Boot Recor)分区表:
MBR是一种较为传统的分区表格式。
早期,启动引导程序记录区和分区表放在磁盘的第一个扇区
- 主引导记录(Master Boot Record,MBR):可以安装启动管理程序的地方,有446 bytes
- 分割(区)表(partition table):记录整颗硬盘分割的状态,有64 bytes
简单分区示例:
对应设备文件名:
P1:/dev/sda1
P2:/dev/sda2
P3:/dev/sda3
P4:/dev/sda4
做一个简单总结:
- 所谓分区只是针对那个64字节的分区表进行操作而已
- 硬盘默认的分区表仅能写入四组分区信息
- 四组划分信息称为 主要(Primary)或扩展(Extended)分区
- 分区的最小单位通常为柱面(Cylinder)
对扩展分区再进行分区,即为逻辑分区
扩展分区的目的是使用额外的磁区来记录分区信息,扩展分区本身并不能被拿来格式化。
对应设备文件名:
P1:/dev/sda1
P2:/dev/sda2
L1:/dev/sda5
L2:/dev/sda6
L3:/dev/sda7
L4:/dev/sda8
L5:/dev/sda9
注意:前四个号码留给主要分区或扩展分区使用的,所以逻辑分区的设备名称号码就由5号开始
做一个简单总结:
- 主要分区与扩展分区最多可以有4个(硬盘的限制)
- 扩展分区最多只能有1个(操作系统的限制)
- 逻辑分区是由扩展分区持续划分出来的分区
- 能够被格式化后作为数据存储的分区是主要分区与逻辑分区,扩展分区无法格式化
- 逻辑分区数量上限依操作系统而不同
- 如果扩展分区被破坏,那么整个逻辑分区将会被删除
而MBR分区表存在以下不足:
- 操作系统无法使用2.2TB以上的磁盘容量
- MBR仅有一个区块,若被破坏后,经常无法或很难修复
- MBR内的存放启动引导程序的区块仅446字节,无法存储较多的程序代码
GPT(GUID partition table)磁盘分区表:
GPT将磁盘所有区块按照LBA(逻辑区块地址:Logical Block Address)来处理,默认LBA为512字节,而第一个LBA成为LBA0(从0开始编号),GPT使用34个LBA块来记录分区信息(同时整个磁盘的最后34个LBA会拿来做一个备份,出于安全考虑)
- LBA0(MBR兼容区块)
①第一部分:启动引导程序 | 存储了第一阶段的启动引导程序 |
②第二部分:存放一个特殊标志 | 放入一个特殊标志,用来表示此磁盘为GPT格式之意 |
- LBA1(GPT表头记录)
① | 记录了分区表本身的位置与大小 |
② | 记录了备份用的GPT分区(就是最后的34个LBA区块)放置的位置 |
③ | 放置了分区表的校验码(CRC32),操作系统可以根据这个校验码来判断GPT是否正确 |
- LBA2-LBA33(实际记录分区信息处)
从LBA2区块开始,每个LBA都可以记录4组分区记录,所以默认情况下,总共可以有4*32=128组分区记录 |
GPT在每组记录中分别提供了64位来记载开始/结束的扇区号码 |
GPT分区已经没有主、扩展、逻辑分区的概念,每个分区都是主要分区,每一个分区都可以拿来格式化使用。
后话:
- 磁盘管理工具fdisk不支持GPT
- 启动引导程序grub不支持GPT,grub2支持
BIOS与UEFI启动检验程序:
目前的主机系统在加载硬件驱动方面的程序,主要有早期的BIOS与新的UEFI两种机制
BIOS搭配MBR/GPT的启动流程:
BIOS是写入到主板的一个固件(固件:写入到硬件上的一个软件程序),是计算机系统会主动执行的第一个程序。
以硬盘为例。BIOS根据用户的设置去取得能够启动的硬盘,并且到该硬盘去读取第一个扇区的MBR位置(MBR虽只有446字节,但放置着最基本的启动引导程序),然后里面的启动引导程序加载内核文件,于是就开启了操作系统。
1、 BIOS:启动主动执行的固件,会认识第一个可启动的设备;
2、 MBR:第一个可启动装置的第一个扇区内的主引导记录块,内含启动引导代码;
3、 启动管理程序(bootloader):一个可读取内核文件来执行的软件;
4、 内核文件:开始启动操作系统;
Boot loader(启动管理程序)是操作系统安装在MBR上的一个小软件主要任务是:
1、 提供选项:用户可以选择不同的启动选项,这也是多重引导的重要功能;
2、 加载内核文件:直接指向可使用的程序区段来启动操作系统;
3、 转交其他操作系统启动程序:将启动管理功能转交给其他启动引导程序负责;
关于第三点:启动引导程序除了可以安装在MBR(主引导记录)之外,还可以安装在每个分区的启动扇区(boot sector),这个特性才能造就“多重引导”的功能。
多重引导如下:
-
-
- 每个分区都拥有自己的启动扇区(boot sector)
- 图中的系统分区为第一及第二分区
- 实际可启动的内核文件是放置到各分区中的
- 启动引导程序只会认识自己系统分区内的可启动的内核文件,以及其他启动引导程序而已
- 启动引导程序可直接指向或是间接将管理权转交给另一个管理程序
-
UEFI BIOS搭配GPT的启动流程:
BIOS在与现阶段新的操作系统接轨方面比较弱,要通过GPT提供的兼容模式才能读写这个磁盘设备,于是就有了UEFI(Unified extensible Firmware Interface)这个统一可扩展固体接口的产生。
UEFI,也叫UEFI BIOS ,可以直接获取GPT的分区表,不过最好依旧拥有BIOS boot 的分区支持,同时,为了与Windows兼容,并且提供其他第三方厂商所使用的UEFI应用程序存储的空间,你必须要格式化一个FAT格式的文件系统分区,大约提供512MB到1GB左右的大小,以让其他UEFI执行比较方便。
另外注意,UEFI为了安全有一个安全启动功能(secure boot),这本是为了安全着想,但可能导致用户无法启动,某些时刻,你需要将UEFI的secure boot关闭
Linux安装模式下,磁盘分区的选择:
根目录:
Linux中所有数据都是以文件的形式呈现的,所以,整个Linux系统最重要的地方就是在于目录树结构,而整个目录树结构最重要的就是根目录——“/”
挂载:
所谓的“挂载(mount)”就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,即进入该目录就可以读取该分区的意思。
如图所示,分区1挂载到根目录,分区2挂载到home目录,当数据在dmtsai中,即数据在分区2中
Windows中的挂载:U盘插入PC,检测到一个F盘,即U盘挂载到了F盘,进入F盘就可以读取U盘内容。
分区还是要考虑自己主机的用途
centOS的安装:
下载CentOS的iso光盘镜像文件
在虚拟机里安装
我下载的是CentOS8,分配了40G,使用的虚拟机是VMware,
开始安装:
加载iso,开启虚拟机
磁盘容量小于2TB的话,系统默认使用MBR分区表来安装,但是为了方便学习,我使用GPT分区表来安装。
所以需要在光标选中Install CentOS Linux 8的时候按下Tab,然后在quiet后面写上 inst.gpt 然后回车。
设置语言:
然后的界面是选择语言,选择中文即可
配置安装信息:
然后的界面是开始安装前的信息配置。
日期和时间:
选择你所在城市的时区即可,因为还没有设置好网络,所以先不要开启网络时间。
键盘:
选中汉语,点击右边的选择,选择一个适合自己的布局切换选项即可,推荐Ctrl+Shift。有需要的朋友还可以添加键盘布局。
安装源:
因为是光盘启动,所以默认即可
软件选择:
⇒安装位置(重点):
一些空间的划分是以我40G的总磁盘来说。
选好我们的磁盘,存储配置里选择自定义(手动分区),然后点击完成
点击完成后会进入分区面板,点击新挂载点得用以下分区方案,不要使用”LVM“,改成”标准分区”(这些概念下面会讲)。
然后点击左下角的+,点击下拉式选项选择(尽量不要手动输入)biosboot,大小分配2M左右即可,添加挂载点。(这个空间是BIOS使用,所以右边的详细数据里没有挂载点,不是Linux的文件系统)
接下来,我们进行其他分区。
按照上面的方法添加挂载点/boot,大小分配了1G左右。
按照上面的方法添加挂载点/(根目录),大小分配了10G左右。接下来要注意,我们的/、/home、交换分区都希望使用CentOS提供的LVM磁盘管理方式,因此在设置好/的挂载点和大小后,要点开详细信息,在右边的详细信息里,将设备类型改为LVM,然后点击右边的 修改,名称随意,大小策略使用 固定/已修复,大小填个30G左右(剩余将近10G在未来利用)其他默认,然后保存。
再添加挂载点/home,分配5G左右,也在详细信息里设置成LVM,确认右边还有剩余空间后,点击更新设置(也可能要先点击才会有显示)。
最后添加挂载点给swap(交换分区),分配个1GB即可。同样的,我们也需要交换分区使用LVM,操作同上。
最后效果是这样,点击完成。
点击完成后会有warning,点击接收更改即可。
KDUMP:
这个选项主要是处理内核问题导致的宕机事件时会将该宕机事件的内存中的数据保存的一项功能,默认开启即可。
网络和主机名:
物理机保证好连网(虚拟机里网络连接个人推荐桥接出来),点开此界面,选中左边的网卡,点击右上角的开启,即可发现系统分配了自动ip,点击右下角的配置,点击常规,选中 优先自动连接到网络。
现在我们来定制一个固定ip上网,还是在配置里,选住ipv4设置,方法改为 手动,点击添加,自己选个好地址,子网掩码写上255.255.255.0,然后点击保存即可。
回来之后编辑个主机名,点击应用,然后完成。
到此,点击开始安装即可~
开始安装和设置密码用户:
开始安装后,系统会自动安装,这时我们可以来做一些其他设置
点击根密码,给你管理系统的root账户,设立一个密码。
点击创建用户,创建你的第一个用户(建议设为管理员)
重新启动:
安装完成后根据提示重新启动即可。
许可证接受:
第二次启动后,系统会让你接受一个许可证,点击我同意即可。
centOS的安装,到此结束!
磁盘分区的知识点补充:
在分区那块,出现了一些名词:
- 标准分区:就是我们一直谈的分区,类似/dev/vda1之类的分区
- LVM:可以弹性增加或缩小文件系统容量的分区
- LVM精简配置:可以让你在使用多少容量才分配磁盘多少容量给你,若LVM设备内的数据量较少,那么你的磁盘其实还可以作更多的数据存储,而不会被平白无故的占用。
- ext2/ext3/ext4:Linux早期使用的文件系统类型,ext3/ext4文件系统新增了日志功能,对于系统的恢复比价快速,不过由于磁盘容量越来越大,ext系列似乎有点挡不住了,所以一般比较少用ext4.
- swap:交换分区,磁盘模拟为内存。由于交换分区并不会使用到目录树挂载,所以用交换分区就不需要指定挂载点。
- BIOS Boot:就是GPT分区表可能会使用到的东西,若你使用MBR,就不需要这个
- xfs:目前centOS 默认的文件系统,它对于大容量的磁盘管理非常好,而且格式化的时候速度相当快,很适合当今动不动就好几个TB的磁盘的环境
- vfat:同时被Linux和Windows所支持的文件系统类型。如果你的主机硬盘内同时存在Windows与Linux,为了方便数据交换,确实可以创建一个vfat操作系统。