linux引导过程:

开机自检(bios)—>MBR引导—->GRUB菜单—->加载内核(kernel)—->init进程初始化

windows用的是GPT引导

第一步:开机自检(bios)

1.服务器开机以后,依照显卡bios中的设置:对cpu,显存、显卡、硬盘等一系列设备进行初步的检查

那些都是初步检测,就是测量设备是否正常运行(正常运行指的是硬碟),系统开始移交控制权,把控制权交给硬碟/dev/sda

第二步:MBR引导:

主引导记录,第一个磁道的MBR,引导系统找到boot分区,就找到了系统的启动程序,按照mbr记录调用启动菜单grub,系统的控制权移交给grub

第三步:grub菜单

grub:统一启动加载器,多系统的引导器程序。控制权到了grub菜单,显示启动菜单给用户进行选择

选择了以后(不动即默认值),加载你所选择的操作系统的linux的内核文件linux图形化界面命令,系统控制权移交,内核

centos7采用的是grub2启动引导器

/boot/grub2/grub.cfg

第四步:加载linux内核

内核也是一个文件,这个文件是一个早已编译好的二补码文件。介于硬件资源和系统程序之间,负责资源的分配,调度,给那些系统程序来进行使用。这个内核文件将控制整个系统的运行过程。

程序包含:驱动程序,用户自定义的开机自启动的程序,以及系统启动的环境程序,这时侯只是在分配资源,程序还没有运行,提早分配好了资源。统统加载到显存当中去。系统控制权的移交———系统初始化程序

第五步:init系统进程初始化:加载到显存中,在显存中开始运行

centos7曾经,在/sbin/init,开启运行上述程序,驱动、用户自定义、系统必要的环境程序,全部启动。等待用户登入。

centos7之前的初始化方法:

init:初始化过程是串行的,一个一个执行,(速率较慢)。init进程是系统的第一个进程,是所有进程的父进程linux系统安装,进程号永远为1

centos7:

systemd:进化的init初始化程序。并行启动,速率快。

centos7上第一个init是systemdpid1同时也是所有进程的父进程

systemd:

1、并行处理

2、支持手动重启服务,确保进程的可靠性和稳定性

3、动态调整服务参数和资源控制,增强灵活性以及可管理性。

4、支持启动依赖关系,并且可以控制依赖关系,确保进程的正确启动和运行。

5.支持命令行,也可以支持图形化工具

systemd用于管理系统进程的管理器

通过单元[unit]来描述和控制系统进程和资源

通过单元类型来进行控制:

service:启动、管理一个系统进程,firewalld,httpdmysqld可以指定进程的启动、关闭、重启、查看状态、依赖关系、日志记录

Socket:通讯套接字linux命令tar,监控网路套接字linux图形化界面命令,管理网路服务,提供网路插口

target:一组服务的集合,用于描述系统在不同运行级别下的状态。以哪些状态来进行系统运行。

比如:图形化模式

字符模式:多用户模式:multi-user.target

systemctl系统的控制命令:

systemctl[控制类型][进程名称]

控制类型:

start开启

stop停止

restart重启,只要是更改了配置文件,必需要重启,否则,不生效(先stop再start)

reload重新加载(不stop直接重新加载)

status查看状态

yum安装会直接写在systemd配置文件中

runlevel查看运行级别:

N表示之前没有切换过运行级别

5表示当前的运行级别(可视化界面)

init3切换到字符界面

运行级别的状态:

0死机

1单用户

2字符界面

3字符界面

4字符界面

5图形化界面

6重启

(生产上默认使用3)

查看默认运行级别:

systemctlget-default

设置运行级别:systemctlset-default

图形界面转字符界面命令为:

systemctlset-defaultmulti-user.target

字符界面转图形界面命令为:

systemctlset-defaultgraphical.target

死机的几种方法:init0;shutdown;poweroff

重启:init6或reboot(死机重启都是对服务器,跟进程无关,是重启机器)

当MBR被删掉造成系统未能启动怎么修补mbr磁道修补?

第一步加载光碟镜像:

fdisk/dev/sdb创建分区

mkfs.xfs/dev/sdb1给sdb1创建文件系统

mkdir/data创建永久挂载目录

vim/etc/fstab打开编辑永久挂载目录

/dev/sdb1/dataxfsdefaults00

ddif=/dev/sdaof=/data/mbr.bakbs=512count=1备份mbr.bak数据(将/dev/sda

从/dev/sda第一个文件到/data/文件为mbr.bak大小为512字节复制一次

ddif=/dev/zeroof=/dev/sdabs=512count=1模拟故障将/dev/sda占满

reboot重启

最后:reboot重启

等待重启成功——修补完成

怎么让修补grub引导故障?

模拟故障:rm-rf/boot/grub2/grub.cfg

reboot重启

重启虚拟机,见到读条快速按下esc

回车

chroot/mnt/sysimage:加载光碟镜像切换到系统根目录

等待重启完成—-->修补成功

倘若不留神遗忘root密码,该怎么解决?

解决方式如下:

重启虚拟机出现读条快速后快速按下esc

下一步:按回车

等待重启结束,输入修改后的密码即可成功登陆

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复