Linux 内核的命名格式为 “R.X.Y-Z”,查看内核版本的命令为 “uname -r”,例如:
[root@MiWiFi-R4A-srv ~]# uname -r
4.18.0-305.3.1.el8.x86_64
不过,这种奇数、偶数的编号格式在 3.0 推出后就失效了。从 3.0 版开始,核心主要依据主线版本(MainLine)来开发,开发完毕后会往下一个主线版本进行。而旧的版本在新的主线版本出现之后,会有两种机制来处理:1、一种机制为结束开发(End Of Live;EOL),不会有继续维护的状态;2、另外一种机制为保持该版本的持续维护,亦即为长期维护版本(Longterm)。此可以参考网址:内核版本
早期的 Linux 系统为了兼容于 Windows 的磁盘,因此使用的是支持 Windows 的 MBR(Master Boot Record,MBR,主引导记录)的方式来处理开机管理程序与分区表!而==开机管理程序与分区表则通通放在磁盘的第一个扇区==,这个扇区通常是 512bytes 的大小。所以说,第一个扇区 512bytes 会有这两个数据:
由于分区表所在的区块仅有 64bytes 容量,因此最多仅能有四组记录区,每组记录区记录了该区段的起始和结束的磁柱号码。这四个分区的记录被称为主分区(Primary)或扩展(Extended)分区。总结如下:
- 其实所谓的 “分区” 只是针对那个 64bytes 的分区表进行设定而已;
- 硬盘默认的分区表仅能写入四组分区信息;
- 这四组分区信息我们称为主分区和扩展分区。
那么,就会有一个问题:一个磁盘是否只能最多分出四个分区???
当然不!!!
既然第一个扇区所在的分区表只能记录四笔数据,那我可否利用额外的扇区来记录更多的分区信息?扩展分区的目的就是使用额外的扇区来记录分区信息,扩展分区本身不能被格式化。在扩展分区内再划分出来的分区,称为==逻辑分区==,这个分区可以格式化,并作为文件系统使用。
同时,MBR 还有一个很重要的性质,文件系统的命名会按照顺序使用数字命名,其中 1-4 已经分配给了分区表中的四个分区,所以逻辑分区只能从 5 开始!
关于 MBR 的主分区、扩展分区和逻辑分区总结如下:
- 主分区与扩展分区最多可以有四个,其中扩展分区最多可以有一个;
- 逻辑分区是由扩展分区划分出来的;
- 主分区和逻辑分区可以被格式化作为文件系统使用,而扩展分区不可以。
由于分组分区表仅有 16bytes 而已,因此可记录的信息是相当有限的,所以,MBR 分区表存在着如下缺点:
- 操作系统无法抓取到 2.2T 以上的磁盘容量!
- MBR 仅有一个区块,若被破坏,经常无法或很难救援!
- MBR 内的存放开机管理程序的区块仅有 446bytes,无法容纳较多的程序代码。
因为过去的一个扇区大小都是 512bytes,为了兼容所有的磁盘,因此在扇区定义上面,大多会使用所谓的==逻辑区块地址(Logical Block Address,LBA)==来处理。GPT 将磁盘所有区块以此 LBA(预设为 512bytes)来规划,而第一个 LBA 称为 LBA0(从 0 开始编号)。
上图的解释如下:
LBA0(MBR 兼容区块)
与 MBR 相似,这个兼容区块也分为两个部分,一个就是跟之前 446bytes 相似的区块,存储了第一阶段的开机管理程序!而在原本的分区表的记录区内,这个兼容模式仅放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式之意。
LBA1(GPT 表头记录)
这个部分记录了分区表本身的位置与大小,同时记录了备份用的 GPT 分区(就是前面谈到的在最后 34 个 LBA 区块)放置的位置,同时放置了分区表的检验机制码(CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以通过这个记录区来取得备份的 GPT(磁盘最后的那个备份区块)来恢复 GPT 的正常工作!
LBA2-33(实际记录分区信息处)
从 LBA2 区块开始,每个 LBA 都可以记录 4 笔分区记录,所以在默认情况下,总共可以有 4*32=128 笔分区记录。因为每个 LBA 有 512bytes,因此每笔记录用到 128bytes 的空间,除了每笔记录所需的标识符与相关的记录外,GPT 在每笔记录中分别提供了 64bits 来记载开始/结束的扇区号码,因此,GPT 分区表对于单一分区来说,它的最大容量限制就会在 264 * 512bytes = 264 * 1Kbytes = 233TB = 8 ZB.
但是,在磁盘管理工具上面,==fdisk 这个命令并不认识 GPT!得需要使用 gdisk 或者是 parted 命令才行!==另外,开机管理程序方面,grub 第一版并不认识 GPT!得要用 grub2 以后才认识!而且,是否能够读写 GPT 格式又与开机的检测程序有关,那开机检测程序又是什么呢?就是 BIOS 和 UEFI。
首先我们需要提到 BIOS 和 CMOS,CMOS 是记录各项硬件参数且嵌入在主板上面的存储器,BIOS 则是一个写入到主板上的一个韧体(韧体就是写入到硬件上的一个软件程序)。这个 BIOS 就是在开机的时候,计算机系统会主动执行的第一个程序!
接下来,BIOS 会分析计算机里面有哪些存储设备,我们以硬盘为例,BIOS 会依据使用者的设定去取得能够开机的硬盘,并且到该硬盘里面读取第一个扇区的 MBR 位置。MBR 这个仅有 446bytes 的硬盘容量里面会放置最基本的开机管理程序!此时,BIOS 就功德圆满,接下来就是 MBR 内开机管理程序的工作了!
这个开机管理程序的目的是加载(load)系统核心文件!由于开机管理程序是操作系统在安装的时候所提供的,所以它会认识该操作系统的文件系统,因此就能读取该操作系统的内核文件,接下来就是操作系统内核文件的工作了。开机管理程序和 BIOS 也功德圆满,接下来就是操作系统的工作了!
总结,整个开机流程到操作系统之前的应该是这样的:
- BIOS:开机主动执行的韧体,会认识第一个可开机的装置;
- MBR:第一个可开机装置的第一个扇区内的主要启动记录区块,内含开机管理程序(如果是 GPT 格式,那么 BIOS 可以从 LBA0 兼容区块读取到开机管理程序);
- 开机管理程序(boot loader):一个可以读取系统内核文件的软件;
- 内核文件:开始操作系统的功能…
BIOS 和 MBR 都是硬件本身支持的功能,至于 Boot Loader 则是操作系统安装在 MBR 上面的一套软件了。由于 MBR 只有 446bytes 而已,因此这个开机管理程序是非常小而美的。这个 boot loader 的主要任务如下:
注意第 3 个功能,那么它表示你的计算机系统里边可能具有两个以上的开机管理程序!有可能吗?我们的硬盘不是只有一个 MBR 吗?是没错!但是开机管理程序除了可以安装在 MBR 外,还可以安装在每个分区的启动扇区(boot sector)!
总结如下:
- 每个分区都拥有自己的启动扇区(boot sector);
- 实际可开机的内核文件是放置在各分区内的;
- loader 只会认识自己的系统区内的可开机内核文件,以及其他 loader 而已;
- loader 可直接指向或者间接将管理权转交给另一个管理程序。
GPT 可以提供 64bits 寻址,而且 BIOS 是不兼容 GPT 的,还要通过 GPT 提供的兼容模式才能读写这个磁盘设备,而且 BIOS 仅为 16 位的程序,因此,UEFI(Unified Extensible Firmware Interface)这个统一可延伸韧体界面就产生了。
怎么切换 X window 与文件模式呢?我们通常称文本模式为终端机接口、terminal 或 console!Linux 预设下会提供 6 个 Terminal 来让使用者登录,切换的方式为使用:[Ctrl] + [Alt] + [F1]~[F6]。
是否默认就启动图像界面,只需要在后续管理服务中,将 “graphical.target” 这个目标服务设定为默认,就能够默认使用图像界面了。在服务管理中,已经开始使用 systemd 模式,这个模式将很多的服务进行相依性管理。
正常关机情况下,需要注意以下几件事:
观察系统的使用状态:
查看目前有谁在线:who;
查看网络的联机状态:netstat -a
查看背景执行的程序:ps -aux
通知在线使用者关机的时刻:
shutdown 的特别指令
正确的关机指令使用
shutdown 和 reboot
与关机/重启相关的指令:
惯用的关机指令:shutdown
[root@MiWiFi-R4A-srv ~]#/sbin/shutdown [-krhc] [时间] [警告信息]
选项与参数:
-k : 不要真的关机,只是发送警告信息出去!
-r : 在将系统的服务停掉之后就重新启动(常用)
-h : 将系统的服务停掉后,立即关机。(常用)
-c : 取消已经在进行的 shutdown 指令内容。
时间 : 指定系统关机时间!
范例:
[root@MiWiFi-R4A-srv ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins.'
Shutdown scheduled for Thu 2021-08-19 17:46:54 CST, use 'shutdown -c' to cancel.
[root@MiWiFi-R4A-srv ~]# shutdown -h now 现在就关机
[root@MiWiFi-R4A-srv ~]# shutdown -h 20:25
Shutdown scheduled for Thu 2021-08-19 20:25:00 CST, use 'shutdown -c' to cancel.
[root@MiWiFi-R4A-srv ~]# shutdown -h +10
Shutdown scheduled for Thu 2021-08-19 17:48:49 CST, use 'shutdown -c' to cancel.
[root@MiWiFi-R4A-srv ~]# shutdown -r now 现在重启
[root@MiWiFi-R4A-srv ~]# shutdown -r +30 'The system will reboot.'
Shutdown scheduled for Thu 2021-08-19 18:13:22 CST, use 'shutdown -c' to cancel.
[root@MiWiFi-R4A-srv ~]# shutdown -k now 'The system will reboot.' 并不会重启,只是吓唬人
重新启动,关机:reboot,halt,poweroff
[root@MiWiFi-R4A-srv ~]# sync; sync; sync; reboot
[root@MiWiFi-R4A-srv ~]# halt #系统停止~屏幕可能会保留系统已经停止的信息!
[root@MiWiFi-R4A-srv ~]# poweroff #系统关机,所以没有提供额外的电力,屏幕空白!
实际使用管理工具 systemctl 关机
这些指令,都会去完成一样的工作,即:都会去呼叫 systemctl 这个重要的管理命令!