你的位置:首页 > 软件开发 > 操作系统 > Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

发布时间:2017-10-03 02:00:10
一、系统启动流程一般来说,Linux 系统的启动流程是这样的:1. 开机之后,位于计算机主板 ROM 芯片上的 BIOS 被最先读取,在进行硬件和内存的校验以及 CPU 的自检没有异常后, BIOS 将被加载到内存中。2. BIOS 按照其存储的启动顺序,依次尝试加载含有 MBR ...

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

一、系统启动流程

一般来说,Linux 系统的启动流程是这样的:

1. 开机之后,位于计算机主板 ROM 芯片上的 BIOS 被最先读取,在进行硬件和内存的校验以及 CPU 的自检没有异常后, BIOS 将被加载到内存中。

2. BIOS 按照其存储的启动顺序,依次尝试加载含有 MBR 信息的可启动设备(一般是硬盘,可设置),然后将控制权交给 MBR 中的 Bootloader(引导程序)。

3. Linux 中使用 GRUB(多操作系统引导程序)作为 Bootloader。GRUB 可以识别(根)文件系统并加载 Kernel(内核),同时将系统的控制权交给 Kernel。

4. Kernel 极其精简,加载过程中也可能会加载一些必要的模块打包文件。

5. 随同 Kernel 一起加载的还有 init(/sbin/init)进程,是 Linux 启动的第一个进程,它负责加载文件系统并根据运行级别启动(重启)和关闭相应服务,最后初始化字符终端和/或启动图形终端,等待用户登录。

至此,系统启动完成。

 

二、流程详解

1. BIOS(Basic Input Or Output,基本输入输出系统)

BIOS 是计算机启动后最先被读取的系统,在硬件和内存的校验以及 CPU 的自检通过、没有异常后,BIOS 将被加载到内存里。BIOS 主要存储了设备(一般是硬盘,可在 BIOS 界面设置)的启动顺序,BIOS 依次尝试加载含有 MBR 信息的可启动设备,找到后将控制权交给 MBR 中的 Bootloader。

 

2. MBR(Master Boot Record,主引导记录)

MBR 在磁盘上的第一个扇区(1 扇区占 512 字节),它的前 446 字节是 Bootloader(引导程序),后 4 个 16 字节是最多 4 个主分区信息,最后 2 字节 55 AA 是启动标识。

Linux 中使用 GRUB 作为 Bootloader。

 

3. GRUB(GRand Unified Bootloader,多操作系统引导程序)

GRUB 是现在 Linux 使用的主流引导程序,可以用来引导现在几乎所有的操作系统。

GRUB 可以识别磁盘文件系统的格式,所以只需要内核所在的分区和内核文件名就可以加载内核,通过 /boot/grub/grub.conf 文件来配置这些内核信息。

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

GRUB 是模块化的,运行时会经历如下阶段:

(1)stage1:stage 1 大小 512 字节(和 MBR 一样大),是 MBR 的备份,MBR 损坏时可以从这里得到一个备份。

(2)*_stage1_5:用于识别多种类型文件系统的文件。CentOS 6 以后的版本默认文件系统是 ext4,会相应地识别 e2fs_stage1_5 文件。识别后,加载文件系统。

(3)stage2:根据 Kernel 配置文件 /boot/grub/grub.conf 的内容来决定如何加载 Kernel。该文件内容一般如下:

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

default:默认启动的内核编号,从0开始(每个内核信息由title标识)timeout:等待用户选择要启动的内核的超时时间,单位为秒splashimage:使用的背景图片hiddenmenu:隐藏菜单title:操作系统或内核的标题 root:内核所在的分区,(hd0,1)表示第1块磁盘的第1个分区 (在grub中,设备统统以hd开头,并紧跟一个数字作为各磁盘设备的标记,从0开始编号;分区也是从0开始编号,而我的(hd0,1)是因为我的第0个分区是swap交换分区) kernel:要加载的内核文件,后面附带启动参数 initrd:额外驱动或模块的打包文件,ram disk 或 ram fs 文件(通常是归档压缩文件,以.img为文件名后缀)

 

4. Kernel(内核)

GRUB 的最后阶段 stage2 会根据 Kernel 配置文件 /boot/grub/grub.conf 的内容来加载 Kernel,并将系统控制权交给 Kernel。

命令 dmesg  可以用来查看本次启动时内核的输出信息。

 

5. init(Linux 启动的第一个进程)

init 进程是 Linux 启动的第一个进程,PID 为 1,其他所有进程是它的子进程。

Linux 的 init 进程是由传统的 sysvinit 演变而来的,init 进程读取的配置文件 /etc/inittab 仅保留了 sysvinit 的 inittab 文件定义的默认运行级别 runlevel,其他的配置则分散到了 /etc/init/*.conf 多个文件中。

init 进程会根据 /etc/inittab 文件定义的 runlevel 去执行相应目录下的脚本。

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

 

6. runlevel(运行级别)

Linux 的 runlevel 有 7 个:

0:系统停机,默认运行级别不能设为0,否则不能正常启动1:单用户模式,root权限,用于系统维护,禁止远程登陆2:多用户模式(无网络)3:多用户状态(命令行界面)4:保留未使用5:多用户模式(图形化界面)6:系统重启,默认运行级别不能设为6,否则不能正常启动

这 7 个 runlevel 分别对应了 /etc/rc.d/rc[0-6].d/ 七个目录:

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

每个目录存储了所有以 K* 和 S* 开头的文件,K 开头的文件表示从其他 runlevel 切换过来需要开启(重启)的服务,S 开头的文件表示从其他 runlevel 切换过来需要关闭的服务。

 

命令 runlevel 可显示上一个及当前运行级别。

命令 init 可用来改变当前的运行级别。

 

三、单用户修改root密码

为内核传递参数 "1" 或 "single" ,可让系统进入单用户模式(runlevel 1)。单用户模式下不启动任何服务,直接以 root 用户登录,并且不需要密码,可以使用 passwd 修改 root 密码。

 

操作步骤如下:

开机后,在 GRUB 引导等待用户选择要加载内核的超时时间内,随意按下一个键,进入内核的选择界面。

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

上图中,选中目标版本内核,按下 "e" 键进入编辑。

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

上图中,选中 kernel,按下 "e" 键进入编辑。

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

上图中,在行末尾为内核传递参数 "1" 或 "single" ,回车确定,按 "b" 启动。

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

上图中,成功进入单用户模式,并且用 root 用户登录,使用 passwd 修改 root 密码,然后 exit 退出,正常重启即可。

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

 

四、GRUB加密

管理员可以通过单用户模式修改 root 密码,但是这也导致任何人都可能通过这种方式入侵系统。为了防止这种危险,可以进行 GRUB 加密。

1. 在 root 用户下输入 grub-md5-crypt 命令,然后输入为 GRUB 设置的密码,产生一组 MD5 加密后的密文。

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

2. 将得到的密文添加到 GRUB 配置文件 /boot/grub/grub.conf 中。

Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

这样在用户在开机后要编辑内核时就会强制要求输入 GRUB 密码,剔除了非法修改 root 密码的可能。

 

参考链接:

Linux系统启动流程

图解Linux系统启动流程

Linux系统启动过程

linux中inittab文件详解

Linux系统有7个运行级别(runlevel)

CentOS 6.4 Grub加密码

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

关键词:linux

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录