云网牛站
所在位置:首页 > Linux培训 > Linux入门记录六:系统启动流程+单用户修改root密码+GRUB加密

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

2017-12-03 15:37:40作者:mingc稿源:博客园

本文是Linux入门记录六,本记录为你讲述Linux系统的启动流程、Linux系统单用户修改root密码及GRUB加密内容。

 

Linux入门记录系列

Linux入门记录五:命令行文本/文件处理工具,包管理工具RPM及YUM

Linux入门记录四:网络基础和基本配置,多命令协作之管道及重定向

Linux入门记录三:获取帮助,Linux用户基础,权限机制,扩展权限

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

Linux入门记录一:Bash基本,文件结构,文件操作,常用命令,vim编辑器

 

一、系统启动流程

一般来说,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 是模块化的,运行时会经历如下阶段:

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

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

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

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

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 会根据 GRUB 配置文件 /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入门记录六:系统启动流程+单用户修改root密码+GRUB加密

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

6.runlevel(运行级别)

命令 runlevel 可显示上一个及当前 runlevel。命令 init 可用来改变当前的 runlevel。

Linux 的 runlevel 有 7 个:

0:系统停机,默认运行级别不能设为0,否则不能正常启动

1:单用户模式,root权限,用于系统维护,禁止远程登陆

2:多用户模式(无网络)

3:多用户状态(命令行界面)

4:保留未使用

5:多用户模式(X11图形化界面)

6:系统重启,默认运行级别不能设为6,否则不能正常启动

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

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

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

 

三、单用户修改root密码

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

操作步骤如下:

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

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

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

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

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

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

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

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

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

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

 

四、GRUB加密

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

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

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

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

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

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

其次,也可以在 title 段添加一个 passward,它是用于内核(系统)启动时要求输入的密码。

 

注意

Linux入门记录系列共有一、二、三、四、五、六章节,到这里所有的内容就讲解完了。更多Linux入门教程请看初入Linux圈频道。

精选文章
热门文章