Linux操作系统引导过程

简介: Linux操作系统引导过程

一、Linux操作系统引导过程


了解系统开机的引导过程才能进一步对出现的故障进行排查并需要熟练掌握对服务的控制


1.1引导过程讲解


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

image.png


1.开机自检


服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。


总结:检测出第一个能够引导系统的设备,比如硬盘或者光驱


2.MBR 引导


当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如 GRUB)。

可以通过hexdump -C -n 512 /dev/sda查看前512字节

image.png


总结:运行放在MBR扇区里的启动GRUB引导程序


3.GRUB 菜单


对于Linux操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。


CentOS 7 采用的是 GRUB2 启动引导器。


总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置


4.加载 Linux 内核


Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。


CentOS 7系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。


总结:把内核和镜像文件系统加载到内存中


5.init 进程初始化


为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成整个系统的初始化,最后等待用户进行登录。


总结:加载硬件驱动程序,内核把init进程加载到内存中运行


1.2 init进程(CentOS6)


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

★init进程是系统中第一个进程

init进程的PID(进程标记)号永远为1

1.3 Systemd 进程(CentOS 7)


★★★Systemd是Linux操作系统的一种init软件;

从CentOS 7版本的系统开始systemd成为PID恒为1的初始化进程,是内核第一个加载的程序。

CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit

传统的SysVinit 依赖于串行执行Shell脚本启动服务,导致效率低下,系统启动速度较慢

★ 全新的systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度。

CentOS 7中运行的第一个 init进程是/lib/systemd/systemd,可以通过pstree命令查看

image.png

1.4 Systemd单元


image.png

1.5 运行级别对应的systemd


image.png

1.6systemctl工具


能查看默认的运行级别

格式:

systemctl 控制类型 服务名称

控制类型 :

image.png

示例:

systemctl status firewalld 查看防火墙服务状态


systemctl start firewalld 启动防火墙服务


systemctl reload [配置文件]


systemctl get-default 查看当前系统默认启动target

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


1.7设置永久运行级别



image.png

in -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
systemctl set-default multi-user.target

1.8永久修改主机名及查看主机名状态


永久修改主机名
hostnamectl set-hostname newname
查看主机名的状态
hostnamectl status

1.9语言设置


localectl=localectl status 可以查看与设置系统的语言
localectl list-locales  可以列出当前系统支持的语言

1.10时间相关设置


timedatectl 
timedatectl set-time YYYY-MM-DD  设置系统日期
timedatectl set-time HH:MM:SS 设置系统时间
timedatectl set-timezone time_zone 设置系统时区

1.11登录系统的用户信息


 loginctl 查看登录系统的用户信息
 loginctl list-users  列出当前的登录用户

1.12服务配置文件


/usr/lib/systemd/system/NAME.service

三部分组成

[Unit] #定义systemd单元的元数据

[Service] #服务的配置,只有systemd单元是服务类型时才有这一段信息

[Install] #定义是否是开机启动

image.png



二、排除启动类故障


2.1 修复MBR扇区故障


2.1.1故障原因


病毒、木马等造成的破坏

不正确的分区操作、磁盘读写误操作

2.1.2故障现象


找不到引导程序,启动中断

无法加载操作系统,开机后黑屏

2.1.3解决思路


应提前作好备份文件

以安装光盘引导进入急救模式

从备份文件中恢复

2.1.4模拟故障示例


大体思路:


########修复MBR扇区故障

MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,★★★总共512字节

1、备份MBR扇区数据到其他磁盘(/dev/sdb1)

mkdir /backup #创建一个backup文件夹

mount /dev/sdb1 /backup #将创建好的硬盘挂载在文件夹下

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

#dd 为指定大小拷贝 #if=指定源文件 #of=指定目标文件 bs=512:指定块大小为512字节因为MBR就512字节 count=1:指只拷贝一个块

这句命令意思就是:备份/dev/sda第一块为512个字节的区域(MBR)到/backup/mbr.bak下

2、模拟破坏MBR引导扇区

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

#将初始化空文件覆盖到/dev/sda

3、引导界面进入急救模式,从备份文件中恢复MBR扇区数据

先加载好光盘镜像,重启操作系统

当出现安装向导界面时,选择“Troubleshooting”选项

再选择“Rescue a CentOS Linux system”选项,进入急救模式

选择“1”选择Continue并按Enter键继续

再次按Enter键后将进入带“sh-4.2#”提示符的Bash Shell环境

sh-4.2# mkdir /backupdir

sh-4.2# mount /dev/sdb1 /backupdir #挂载带有备份文件的分区

sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda #恢复备份数据

sh-4.2# exit #执行exit命令退出临时Shell环境,系统将会自动重启


2.2 修复GRUB引导故障


2.2.1故障原因


MBR中的GRUB引导程序遭到破坏

grub.conf文件丢失、引导配置有误

2.2.2故障现象


系统引导停滞,显示‘grub>’提示符

2.2.3解决思路


尝试手动输入引导命令

进入急救模式,重写或者从备份中恢复grub.conf

向MBR扇区中重建grub程序

2.2.4模拟故障示例


方法一:

#####修复GRUB引导故障

/boot/grub/目录下的包是用于启动菜单的背景图片及样式

/boot/grub2/grub.cfg #GRUB配置文件

方法一:手动输入引导命令(笨拙繁琐,不建议使用)

grub> insmod xfs #加载指定的模块到内核

grub> linux16 /vmlinuz-3.10.0-693.el7.x86_ 64 root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet

LANG=zh_ CN.UTF-8 #内核的名字及位置等信息

grub> initrd16 /initramfs-3.10.0-693.el7.x86_ 64.img #镜像系统文件

grub> boot #引导boot

方法二

方法二:进入急救模式,恢复GRUB引导程序

MBR位于第一块硬盘(/dev/sda) 的第一个物理扇区处,总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字节中。

mkdir /bak

mount /dev/sdb1 /bak

dd if=/dev/sda of=/bak/grub.bak bs=446 count=1


#模拟对MRB中的GRUB引导程序的破坏,但并不破坏分区表

dd if=/dev/zero of=/dev/sda bs=446 count=1


#引导界面进入急救模式,从备份文件中恢复GRUB引导程序

sh-4.2# mkdir /backupdir

sh-4.2# mount /dev/sdb1 /backupdir

sh-4.2# dd if=/backupdir/grub.bak of=/dev/ sda

sh-4.2# exit


方法三

方法三:引导界面进入急救模式,重建GRUB菜单配置文件

rm -rf /boot/grub2/grub.cfg

#进入急救模式,加载光盘镜像,切换到系统根环境

sh-4.2# chroot /mnt/sysimage


#重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MRB扇区,如果有多个分区可省略

bash-4.2# grub2-install /dev/sda


#重新构建GRUB菜单的配置文件

bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg


#退出chroot环境,并重启

bash-4.2# exit

sh-4.2# reboot


三、遗忘root用户的密码


3.1、故障原因


遗忘root用户密码


3.2、故障现象


无法进行需要root权限的管理操作 若没有其他账号可用,将无法登陆系统


3.3、解决思路


进入急救模式,重设密码


3.4、模拟故障示例


######遗忘root用户的密码
方法一:
#进入急救模式,加载系统镜像,切换到系统根环境
sh-4.2# chroot /mnt/sysimage
#重设root用户密码
bash-4.2# passwd root
方法二:进入单用户模式修改root密码为例
1.重启开机按esc,第一行按e在启动GRUB菜单中选择编辑选项,按键“e”进入编辑;
2.编辑修改:大约在第16行找到“ro”将“ro”修改为“rw init=/sysroot/bin/bash”
3.按Crtl+X重启,输入命令进入系统
sh-4.2#chroot /sysroot
4.字符集修改
###修改前可修改字符集:
sh-4.2#LANG=en_US.UFT-8
###重置root密码
sh-4.2#passwd root
#退出chroot环境,并重启
bash-4.2#exit
sh-4.2# init 6

image.png

image.png

image.png

image.png

相关文章
|
15天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
29 0
|
16天前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
|
1月前
|
Linux 数据安全/隐私保护 虚拟化
Linux技术基础(1)——操作系统的安装
本文是龙蜥操作系统(Anolis OS) 8.4 的安装指南,用户可以从[龙蜥社区下载页面](https://openanolis.cn/download)获取ISO镜像。安装方法包括物理机的光驱和USB闪存方式,以及虚拟机中的VMware Workstation Pro设置。安装过程涉及选择语言、配置安装目标、选择软件集合和内核,设置Root密码及创建新用户。安装完成后,可通过文本模式或图形化界面验证系统版本,如Anolis OS 8.4,标志着安装成功。
|
1月前
|
存储 缓存 算法
Linux--系统结构与操作系统
Linux--系统结构与操作系统
|
15天前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
21 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】⭐Linux 显示当前系统的主机名和操作系统类型 uuname命令 使用教程
【Shell 命令集合 网络通讯 】⭐Linux 显示当前系统的主机名和操作系统类型 uuname命令 使用教程
29 0
|
1月前
|
算法 Linux 调度
根基已筑!Anolis OS 23.1 预览版本搭载 Linux 6.6 内核和工具链升级完成
Anolis OS 23.1 对软件包的选择和组合进行了重新规划与决策,满足更为广泛的应用场景需求。
|
1月前
|
安全 Linux 开发者
分析Linux桌面操作系统的迅速增长及其未来前景
最近技术圈新闻“层出不穷”,尤其是在最近,Linux桌面操作系统的市场份额迅速增长,Linux桌面操作系统的市场份额近期呈现火速增长的趋势,这一数据虽然看似不太引人注目,但实际上却具有重要的意义,达到了历史新高。了解Linux的开发者想必都知道,历经30年的努力,Linux系统的份额才在不久前达到了3%,而如今仅用了八个月的时间就新增了1%,显示出开源操作系统正迅速升温。尽管Windows和macOS仍然主导着桌面操作系统市场,但前者的份额波动较小,后者则略有下滑。虽然Linux的表现出色,但要想取得主导地位还有一段距离,有些开发者认为这是因为缺乏一个适用于所有Linux发行版的标准化桌面界面
25 1
分析Linux桌面操作系统的迅速增长及其未来前景
|
1月前
|
Linux 网络安全 数据安全/隐私保护
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
161 0
|
1月前
|
缓存 Linux Shell
Linux进程解析(冯诺依曼体系结构,操作系统,进程初步解析)
Linux进程解析(冯诺依曼体系结构,操作系统,进程初步解析)
52 1