Linux引导过程和排除启动类故障的介绍,让你快速学习引导过程,解决开机故障小技巧

1.引导过程管理

系统引导是操作系统运行的开始,在用户能够正常登录到系统之前,Linux的引导过程完成了一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备。

1.1引导过程

总览:

  • Linux操作系统的引导过程一般包括以下几个阶段:开机自检、MBR引导、GRUB菜单、加载Linux内核、init进程初始化。

1)开机自检:
服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多数时候会移交给本机硬盘;
2)MBR引导:
当从本机硬盘启动系统时,首先根据硬盘第一个扇区中MBR的设置,将系统 控制权传递给包含操作系统引导文件的分区,或者直接根据MBR中的引导信息调用启动菜单;
3)GRUB菜单:
对于Linux系统来说,GRUB算是使用最为广泛的多系统引导器程序了。系统控制权传递给GRUB以后,将会显示启动菜单提供给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核;
4)加载Linux内核:
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。默认的内核文件位于"/boot/vmlinuz“
5)init进程初始化:
为了完成进一步的系统引导过程,Linux内核首先将系统中的" /sbin/init "程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的初始化过程,最后等待用户进行登录。

1.2系统的启动流程

粗略介绍:
当你按下电源按键后计算机硬件会读取BIOS或UEFI BIOS来加载硬件信息及进行硬件系统的自我测试,之后系统会主动去读第一个可启动的设备(BIOS设定),此时就可以读入启动引导程序了。启动引导程序可以指定使用哪个内核文件来启动,并实际加载内核到内存当中解压缩与执行。此时内核就能够开始在内存中活动,并检测所有硬件信息与加载适当的驱动程序来使整台主机并始运行,等到内核检测硬件写加载驱动程序完毕后,操作系统就启动好了。
流程:
1)加载BIOS的硬件信息与进行自我检测,根据BIOS设置来取得第一个可启动的设备;
2)读取并执行第一个启动设备内MBR的启动引导程序(可以是grub2,也可以是spfdisk);
3)根据启动引导程序的设置加载kernel,kernel会开始检测硬件与加载驱动程序;
4)在硬件驱动成功后,kernel会主动调用systemd程序,并以default.target流程启动;

  • systemd执行sysinit.target初始化系统及basic.target准备操作系统;
  • systemd启动multi-user.target下的本机与服务器服务;
  • systemd执行multi-user.target下的getty.target及登录服务;
  • systemd执行graphical需要的服务。

专有名称解释:
BIOS:不论是传统BIOS还是UEFI BIOS都会被简称为BIOS;
MBR:虽然分区表有传统MBR及新式GPT,GPT有保留一块兼容MBR的区块,因此,都简称MBR;
关于内核文件:
内核文件存放路径:/boot/vmlinuz

2.init进程

概述:

  • Linux系统中的进程(运行中的程序)使用数字进行标记,每个进程的身份标记号称为PID。在引导Linux系统的过程中,“/sbin/init”是内核第一个加载的程序,因此init进程对应的PID号总是为“1”;
  • init进程运行以后将陆续执行系统中的其他程序,不断生成新的进程,这些进程称为init进程的子进程,反过来说,init进程是这些进程的父进程。当然,这些子进程也可以进一步生成各自的子进程,依次不断繁衍下去,最终构成一棵枝繁叶茂的进程树,共同为用户提供服务;
  • 从以上描述可以看出,init进程正是维持整个Linux系统运行的所有进程的“始祖”,因此init进程是不允许被轻易终止的。需要切换不同的系统运行状态时,可以向init进程发送正确的执行参数,由init自身来完成相关操作。

init进程特点:
1)由Linux内核加载运行/sbin/init程序;
2)init进程是系统中第一个进程;
3)init进程的PID(进程标记)号永远为1;

3.inittab 配置文件

3.1 inittab配置文件概述及基本格式

查看配置命令:

cat /etc/inittab

在/etc/inittab文件中,除了以“#”号开头的注释信息和空行以外,只有一条有效配置记录。配置记录中的四个字段之间使用半角的冒号“:”进行分割,基本格式如下:

id:runlevels:action:process
即
标记:运行级别:动作类型:程序或脚本

3.2 inittab文件中各个字段的作用

(1) id—标记字段
标记字段可以由1~4个字符组成,用以区别于其他行的配置。
(2)runlevels—运行级别字段
Linux 通过将不同的系统服务(指运行在后台并提供特定功能的应用程序,如网站服务、FTP服务等)进行搭配组合,来协同满足不同的功能需求,不同的服务组合其实现的功能也各不相同。
命令格式:

init 运行级别

运行级别说明:

运行级别Systemd的target说明
0poweroff.target关机状态,使用该级别时将会关闭主机;
1rescue.target单用户模式,不需要密码验证即可登录系统,多用于系统维护;
2multi-user.target字符界面的多用户模式(不支持访问网络),运行级别默认为3;
3multi-user.target字符界面的完整多用户模式,大多数服务器主机运行在此级别;
4multi-user.target用户定义/域特定运行级别,默认为3;
5graphical.target图形界面的多用户模式,提供了图形桌面操作环境;
6reboot.target重新启动,使用该级别时将会重启主机。

(3)action—动作类型字段
动作类型字段描述了该行配置所对应的操作类别,initdefault表示“设置初始化系统后默认进入的运行级别”。
(4) process—程序或脚本字段
此字段用于指定该行配置所对应的实际操作,可以是具体的命令、脚本程序等,此处为空。

3.3 Systemd单元类型

单元类型扩展名说明
Service.service描述一个系统服务
Socket.socket描述一个进程间通信的套接字
Device.device描述一个内核识别的设备文件
Mount.mount描述一个文件系统的挂载点
Automount.automount描述一个文件系统的自动挂载点
Swap.swap描述一个内存交换设备或交换文件
Path.path描述一个文件系统中文件或目录
Timer.timer描述一个定时器(用于实现类似cron的调度任务)
Snapshot.snapshot用于保存一个systemd的状态
Scope.scope使用systemd的总线接口以编程的方式创建外部进程
Slice.slice描述居于Cgroup的一组通过层次组织的管理系统进程
Target.target描述一组systemd的单元

Systemd特点:
1)Systemd是Linux操作系统的一种init软件;
2)CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit;
3)CentOS7中运行的第一个init进程是/lib/systemd/systemd。

4.排除启动类故障

4.1 修复MBR扇区故障

故障原因:

  • 病毒、木马等造成的破坏;
  • 不正确的分区操作、磁盘读写误操作。

故障现象:

  • 找不到引导程序,启动中断;
  • 无法加载操作系统,开机后黑屏。

解决思路:

  • 应提前作好备份文件;
  • 以安装光盘引导进入急救模式;
  • 从备份文件中恢复。

MBR扇区特点:
mbr扇区存在于第一块硬盘空间里,因此想要破坏mbr数据,只需要破坏第一块硬盘空间里的数据即可。对第一块硬盘备份时,注意备份磁盘空间不能小于第一块硬盘的空间大小。

模拟MBR扇区实验:
1)添加一块硬盘做实验;
2)进系统查看磁盘

fdisk -l ##看是否有sdb

3)格式化sdb

mkfs -t ext4 /dev/sdb

4)挂载sdb

mount /dev/sdb /opt

5)备份MBR扇区数据

dd if=/dev/sda of=/opt/mbr.bak bs=512k count=1

6)模拟MBR扇区故障

dd if=/dev/zero of=/dev/sda bs=512k count=1

7)重启后观察系统是否出现问题:operating system not found

此时表示MBR出现了故障,恢复步骤如下:

1)装入光盘,在光盘引导界面选择 troubleshooting;
2)进入troubleshooting菜单选择Rescue a centos syst;
3)进入引导可以按回车,或者等待。按1 再按回车进入sh-4.2#;
4)急救模式下sdb的挂载:

mkdir /sdd
mount /dev/sdb/sdd
cd /sdd ##查询下该备份文件是否存在

5)恢复备份数据:

dd if=/sdd/mbr.bak of=/dev/sda count=1 bs=512k

6)重启reboot 进入系统测试是否正常。

4.2 grub故障修复

故障原因:

  • MBR中的GRUB引导程序遭到破坏;
  • grub.conf文件丢失、引导配置有误。

故障现象:

  • 系统引导停滞,显示“grub>”提示符

解决思路:

  • 尝试手动输入引导命令;
  • 进入急救模式,重写或者从备份中恢复grub.conf;
  • 向MBR扇区中重建grub程序;

模拟故障:

cd /boot/grub2  ##进入grub2
rm -rf grub.cfg  ##删除grub2.cfg模拟故障
init 6 重启

出现故障如下:grub>

修复步骤:
1.引导急救模式,加载系统镜像;

chroot  /mnt/sysimage/

2.重新建立加载sda分区

grub2-install /dev/sda

3.重新构建grub菜单配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg

4.退出bash环境,exit

5.重启,reboot

4.3 遗忘root密码

故障原因:

  • 遗忘root用户的密码

故障现象:

  • 无法进行需要root权限的管理操作;
  • 若没有其他可用帐号,将无法登录系统。

解决思路:

  • 进入急救模式,重设密码

忘记root密码实验步骤:

sh-4.2# chroot /mnt/sysimage  ##加载系统镜像
bash-4.2# passwd root	##设置密码
new:  ##新密码
retry: ##确认新密码
exit	##退出bash环境
reboot	##重启系统
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值