# Linux 启动过程
## 一、计算机的启动过程
### 1、两种启动方式
#### 1.1、传统启动方式(Legacy+mbr)
指传统BIOS启动方式,存在一些不足:比如最大只支持2TB磁盘,磁盘最多四个分区,且不支持图形操作
#### 1.2、UEFI+GPT方式
是新式的启动方式,逐步取代传统启动方式
相对于Legacy+mbr, 优点在启动更快(不要开机自检),最多可支持128个磁盘分区最大可支持18EB硬盘支持图形操作
### 2、计算机启动流程(以Legacy+mbr为参考)
- 开机,系统BIOS加电自检
- 读主引导扇区MBR
- 读取激活分区DBR
- 操作系统引导代码引导系统并读取操作系统初始化文件
![win 启动过程](http://bucketblog.oss-cn-shenzhen.aliyuncs.com/blog/pic2020/03/win_startup.png)
### 3、专业术语介绍
- BIOS:
> Basic Input Output System(基本输入输出系统)的简称,是一组固化到主板中一个ROM芯片上的程序
- Legacy
> 传统的BIOS架构,每次启动需自检,且不支持图形操作
- UEFI:
> 统一的可扩展固件接口(Unified Extensible Firmware Interface),uefi是新式的BIOS架构,每次启动可不需自检,支持图形操作
- MBR
> Master Boot Record: 主引导记录 ,是一种磁盘分区架构
作用:检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序调入内存加以执行,是BIOS转向操作系统的操作入口
不足: 支持的分区少,且最大只支持2TB磁盘
- GPT
> GPT全称:Globally Unique Identifier Partition Table Format,全局唯一标识分区表,一种由基于 Itanium 计算机中的可扩展固件接口 (EFI) 使用的磁盘分区架构,用于取代MBR磁盘分区架构
优点:最多可支持128个磁盘分区,且最高可支持18EB的大硬盘等
- DBR
> 分区引导扇区也称DBR,DBR是由硬盘的MBR装载的程序段。DBR装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。从而完成操作系统的启动
## 二、Linux 的启动过程(Centos 7)
### 1、加载BIOS(Basic Input/Output System)
> 这里在上面的 windows 启动过程中,这里的加载 bois 可以囊括为:开机 -> 找到 Bois -> 自检(检查必要驱动和硬件) -> 找到启动介质(一般指的是系统所在磁盘) -> 读取并执行主引导分区(MBR)
### 2、进入GRUB
> GRUB(Grand Unified Bootloader) 引导程序,可以对各种linux 大型版本进行引导,也可以引导其他操作系统
### 3、加载Linux Kernel
> 加载 linux 的内核
#### 3.1、探测可识别到的所有硬件设备
#### 3.2、加载硬件驱动程序
#### 3.3、以只读方式挂载根文件系统
- 内核初始化信息可在启动完成后用dmesg命令查看。
### 4、执行init进程
> 第一个进程,PID为1,是所有进程的父进程。负责产生其他所有用户进程
在 Linux 操作系统也是一个进程,每个进程都会有对应的 pid (进程号),这个 id = 1。
### 5、根据init配置文件设置默认运行级别
#### 5.1、在centos7中:
初始化程序init是systemd,其配置文件在:/usr/lib/system/systemd/, /etc/systemd/system/
#### 5.2、查看/etc/inittab 文件, 可获取系统默认运行级别
Linux 系统中运行级别总共分为 7 个:
- L0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- L1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
- L2:多用户状态(没有NFS)
- L3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- L4:系统未使用,保留
- L5:X11控制台,登陆后进入图形GUI模式
- L6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
### 6、执行默认级别中的所有 Script 脚本
### 7、执行/bin/login程序,提示用户输入帐户和口令
![Linux启动过程](http://bucketblog.oss-cn-shenzhen.aliyuncs.com/blog/pic2020/03/linux_startup.png)
## 三、Grub 的启动过程
### 1、GRUB
> GRUB(Grand Unified Bootloader)引导程序,可以对各种linux发行版本进行引导,也可以引导其它操作系统
### 2、查看 GRUB 配置文件
> grub配置文件名:grub.cfg , 保存在/boot/grub2目录中(需要进入root用户 ,才有权查看)
#### 2.1、查看 GRUB 内容
- 查看内容命令:
sudo /boot/grub2/grub.cfg
- 查看内容命令:
cat /etc/default/grub
- 查看目录列表命令:
ls /etc/grub.d
#### 2.2、修改grub引导菜单等待时间
- 详细信息可以查看文章[《Linux 修改 GRUB 引导菜单等待时间》](https://blog.csdn.net/CalledJoker/article/details/104969253) https://blog.csdn.net/CalledJoker/article/details/104969253
#### 2.3、重置 root 密码
- 详细信息可以查看文章[《Linux、CentOS 强制重置 Root 账户密码》](https://blog.csdn.net/CalledJoker/article/details/105026700) https://blog.csdn.net/CalledJoker/article/details/105026700
## 四、设置 Linux 运行级别(图形化 or 命令行)
- 详细信息可以查看文章[《Linux、CentOS 强制重置 Root 账户密码》](https://blog.csdn.net/CalledJoker/article/details/105026890) https://blog.csdn.net/CalledJoker/article/details/105026890
----
人若无名,专心练剑~!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。