Liunx操作系统的引导过程(系统操作引导过程,模拟MBR,GRUB故障,root密码遗忘解决,优化启动过程 ,运行级别的分类)

Liunx操作系统的引导过程

1:开机BIOS自检,加载硬盘。
2:读取MBR,进行MBR引导。
3:grub引导菜单(Boot Loader)。
4:加载内核kernel。
5:启动init进程,依据inittab文件设定运行级别
6:init进程,执行rc.sysinit文件。
7:启动内核模块,执行不同级别的脚本程序。
8:执行/etc/rc.d/rc.local
9:启动mingetty,进入系统登陆界面:开机自检,MBR引导,GRUB菜单, 加载linux内核,init进程初始化

引导过程

引导过程能以两种方式之一初始化。其一,如果系统处于关机状态,那么打开电源按钮将开启系统引导过程。其二,如果操作系统已经运行在一个本地用户(该用户可以是 root 或其他非特权用户),那么用户可以借助图形界面或命令行界面通过编程方式发起一个重启操作,从而触发系统引导过程。重启包括了一个关机和重新开始的操作。

Blos自检

在 1981 年,IBM 设计的第一台个人电脑中,BIOS 被设计为用来初始化硬件组件。POST 作为 BIOS 的组成部分,用于检验电脑硬件基本功能是否正常。如果 POST 失败,那么这个电脑就不能使用,引导过程也将就此中断。

BIOS 上电自检确认硬件的基本功能正常,然后产生一个 BIOS 中断 INT 13H,该中断指向某个接入的可引导设备的引导扇区。它所找到的包含有效的引导记录的第一个引导扇区将被装载到内存中,并且控制权也将从引导扇区转移到此段代码。

grub引导菜单(Boot Loader)

GRUB2 全称是 GRand Unified BootLoader,Version 2(第二版大一统引导装载程序)。它是目前流行的大部分 Linux 发行版本的主要引导加载程序。GRUB2 是一个用于计算机寻找操作系统内核并加载其到内存的智能程序。由于 GRUB 这个单词比 GRUB2 更易于书写和阅读,在下文中,除特殊指明以外,GRUB 将代指 GRUB2。

内核启动

内核文件都是以一种自解压的压缩格式存储以节省空间,它与一个初始化的内存映像和存储设备映射表都存储于 /boot 目录之下。

在选定的内核加载到内存中并开始执行后,在其进行任何工作之前,内核文件首先必须从压缩格式解压自身。一旦内核自解压完成,则加载 systemd 进程(其是老式 System V 系统的 init 程序的替代品),并转移控制权到 systemd

启动init进程,依据inittab文件设定运行级别

内核加载到内存中并开始执行后,在其进行任何工作之前,内核文件首先必须从压缩格式解压自身。一旦内核自解压完成,则加载 systemd 进程(其是老式 System V 系统的 init 程序的替代品),并转移控制权到 systemd。

由Linux内核加载运行 /sbin/init程序
是系统第一个进程
PID(进程标记)号永远是1

SystemV 运行级别 systemd 目标态 systemd 目标态别名 描述
halt.target 停止系统运行但不切断电源。
0 poweroff.target runlevel0.target 停止系统运行并切断电源.
S emergency.target 单用户模式,没有服务进程运行,文件系统也没挂载。这是一个最基本的运行级别,仅在主控制台上提供一个 shell 用于用户与系统进行交互。
1 rescue.target runlevel1.target 挂载了文件系统,仅运行了最基本的服务进程的基本系统,并在主控制台启动了一个 shell 访问入口用于诊断。
2 runlevel2.target 多用户,没有挂载 NFS 文件系统,但是所有的非图形界面的服务进程已经运行。
3 multi-user.target runlevel3.target 所有服务都已运行,但只支持命令行接口访问。
4 runlevel4.target 未使用。
5 graphical.target runlevel5.target 多用户,且支持图形界面接口。
6 reboot.target runlevel6.target 重启。

系统初始化进程

init进程

由linux内核加载运行/sbin.inint程序

Init 进程是系统第一进程

init进程的PID号永远为1

systemd进程

ystemd 是所有进程的父进程。它负责将 Linux 主机带到一个用户可操作状态(可以执行功能任务)

systemd是linux操作系统的一个init软件

centos7中采用全新的systemd启动方式,取代了传统的sysvinit

centos7中运行第一个init进程是/ilb/systrmd/sysytemd

运行级别对应systemd目标

########当MBR扇区出现故障如何操作#####

1创建磁盘

2格式化磁盘

3.挂载磁盘到opt下

4备份MBR扇区

5模拟MBR故障

6进入光盘

7把磁盘备份到mnt下

8把MBR扇区备份到SDA中

创建一个30G的硬盘

image-20200618142439334

mkfs -t ext4 /dev/sdb ###格式化sdb

image-20200618142644330

挂载mount /dev/sdb /opt

image-20200618143356808

1、备份MBR扇区数据
dd if=/dev/sda of=/opt/mbr.bak bs=512 count=1 ,磁盘字节

image-20200618143326382

2、模拟MBR扇区故障
dd if=/dev/zero of=/dev/sda bs=512 count=1

image-20200618171152400

init 6重启

F2进入系统

1.装入光盘,在光盘引导界面选择troubleshooting:检修
image-20200618161626411
image-20200618144039861

2、进入troubleshooting菜单 选择Rescue a centos system拯救centos系统

image-20200618153620439

3、进入引导可以按回车,或者等待
按1 在按会车进入sh-4.2#继续

image-20200618144313557

4、mount /dev/sdb1 /mnt ## 将备份sdb备份的文件挂到mnt下 然后进去看下是否有mbr.bak

image-20200618144522748

4、dd if=/mnt/sda.mbr.bak of=/dev/sda

image-20200618155935631

init 6 重启

image-20200704110633077

image-20200618160739917

#####模拟centos 7.4 grub修复####

cd /boot/grub2 ###进入grub2

image-20200618161040249

mv grub.cfg grub.cfg.bak

image-20200618161244230

image-20200618161626411

image-20200618172853060

image-20200618161716442

重新启动

image-20200618161752845

image-20200618153620439

3、进入引导可以按回车,或者等待
按1 在按会车进入sh-4.2#

image-20200618162243648

4、进入救援模式后切根
chroot /mnt/sysimage/

image-20200618162232163

5、使用 grub2-install 命令修复grub
grub2-install /dev/sda

image-20200618162406620

6、修复grub.cfg配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg

image-20200618162728516

image-20200618163035759

7、重启
exit
reboot ###主要改启动项,否认还是进光盘模式

image-20200618163426194

image-20200618163506852

#######忘记root密码#####

随便更一下密码

1.装入光盘,在光盘引导界面选择troubleshooting:

image-20200618164119056

image-20200618164153637

image-20200618164231994

3、进入引导可以按回车,或者等待
按1 在按会车进入sh-4.2

image-20200618164343908

4、进入救援模式后切根
chroot /mnt/sysimage/

image-20200618164539272

image-20200618164647543

image-20200618170559382

、重启
exit
reboot ###主要改启动项,否认还是进光盘模式

image-20200618173320084

image-20200618173240143

系统服务—使用systemd管理

systemd不是一个单独的命令,而是一个集合体

systemd是维持整个Linux系统的始祖

主要目的就是为了将服务开启


常用控制类型
start  启动
stop   停止
restart  重新启动		'//重新启动,会中断服务,此服务的PID值会改变'
reload  重新加载		'//重新加载配置文件不会中断服务,此服务的PID值会改变'
status  查看服务状态

例如:
[root@localhost ~]# systemctl start httpd		启动httpd服务
[root@localhost ~]# systemctl stop httpd		停止httpd服务
[root@localhost ~]# systemctl restart httpd		重新启动httpd服务
[root@localhost ~]# systemctl reload httpd		重新加载httpd服务配置文件

Linux运行级别

runlevel命令:查看切换运行级别与当前运行级别

[root@localhost ~]# runlevel 
N 3
N 是上一次运行的级别,3是这一次运行的级别,若从init 3 切换到 init 5 ,在init3中输入runlevel命令

init切换运行命令

init命令
0		关机状态,使用该级别时会关闭主机
1		单用户模式,不需要密码验证即可登录系统,多用于系统维护
2		用户定义/域特定运行级别,默认等同于3
3		字符界面的完整用户模式,大多数服务器主机运行在此级别
4		用户定义/域特定运行级别,默认等同于3
5	    图形界面的多用户模式,提供了图形桌面操作环境
6		重新启动,使用该级别时将会重启主

优化启动过程(开机自启)

使用ntsysv命令:提供交互仿图像界面,便于管理多个服务

image-20200703152427716

按tab键可以确认退出或取消,空格可以加米子号选择开启或关闭【*】表示开启 【】表示关闭

systemctl 工具

不提供交互式,可视化窗口

image-20200703152728663

[root@localhost ~]# systemctl disable httpd		将httpd服务设置关闭开机自启
[root@localhost ~]# systemctl enable httpd		将httpd服务设置开机自启


面,便于管理多个服务

[外链图片转存中…(img-6ds6ipsO-1593762222749)]

按tab键可以确认退出或取消,空格可以加米子号选择开启或关闭【*】表示开启 【】表示关闭

systemctl 工具

不提供交互式,可视化窗口

[外链图片转存中…(img-Fg9gf8go-1593762222752)]

[root@localhost ~]# systemctl disable httpd		将httpd服务设置关闭开机自启
[root@localhost ~]# systemctl enable httpd		将httpd服务设置开机自启


猜你喜欢

转载自blog.csdn.net/weixin_47151717/article/details/107107232