第二阶段基础
时 间:2023年5月10日
内 容:
系统启动流程
一、启动过程
二、systemd程序管理
三、启动过程中的故障
一、启动过程
BIOS→MBR→GRUB→内核→主程序→初始化
1、BIOS 定义:基本输入输出系统
作用:加电自检POST(执行硬件的初始化);
引导操作系统(按照特定顺序检测系统启动程序)
2、MBR 定义:主引导记录,512字节
作用:读取引导程序boot loader(MBR指定硬盘,按照分区表找到硬盘,分区,读取内核文件,找操作系统)
3、GRUB 定义:启动管理器
作用:引导程序,处理内核文件的加载
多操作系统启动哪一个?
windows系统的启动程序:
MBR(linux启动程序) --> windows启动扇区 --> windows启动程序 --> windows内核 -->启动windows操作环境
linux系统的启动程序:
MBR(linux启动程序) --> linux启动扇区 --> linux启动程序 --> linux内核 --> 启动linux操作环境
注 意:多操作系统环境,一定要后安装Linux
4、内 核 位置:通常内核文件位于/boot目录中(boot目录存放启动相关);虚拟文件系统
重要文件列表:vmlinuz:内核文件
initramfs:虚拟文件系统
作用:测试硬件设备与驱动程序
5、主程序 内核加载完所有的硬件和驱动程序之后,启动的第一个程序(centos 6:init centos 7:systemd)
定义:system daemon,系统守护进程,是linux下的初始化软件
作用:实现系统初始化,生成并启动其他环境相关的程序
6、初始化 提供一个可交互的操作系统界面
二、systemd程序管理
(一)管理工具:systemctl
(二)对象类型:
service 扩展名:.service 作用:描述系统服务
device 扩展名:.device 作用:描述内核能识别的设备
文件
mount 扩展名:.mount 作用:描述文件系统的挂载点
target 扩展名:.target 作用:描述一组systemd单元
swap 扩展名:.swap 作用:描述系统中的交换分区
path 扩展名:.path 作用:描述环境变量
timer 扩展名:.timer 作用:描述定时器
(三)基本操作:
开启服务:systemctl start daemon.service
关闭服务:systemctl stop daemon.service
重启服务:systemctl restart daemon.service
查看服务状态:systemctl status daemon.service
设置服务开机自启:systemctl enable daemon.service
设置服务开机不自启:systemctl disable daemon.service
(四)服务状态:
active(running)正在运行
inactive 不运行
enabled 开机启动
disabled 开机不启动
static 开机不启动,但是可能会被其他服务所激活
例:systenctl stop cron.service 关闭cron服务
systenctl status cron.service 查看cron状态
可见当前状态(Active):为inactive(不运行)
systenctl start cron.service 开启cron服务
systenctl status cron.service 查看cron状态
可见当前状态(Active):为active(正在运行)
(五)运行级别:
切换运行级别:systemctl isolate runlevel3.target
三、启动过程中的故障
(一)linux下找回密码
1、普通用户找回密码:管理员进行修改
☆2、管理员找回密码
第一步:重启系统,在GRUB界面按E进行编辑
在linux16行中centos/swap后添加 rd.break参数(打断当前系统启动流程进入单用户模式)
第二步:ctrl+x保存,并进入到switch_root模式
第三步:重新挂载临时文件系统
重新挂载时设置rw参数,使接下来可以修改密码
mount -o remount,rw /sysroot
第四步:进入临时文件系统
chroot /sysroot
第五步:修改密码
passwd root(字符界面下注意密码的复杂性要求)
字母+数字+符号 最好不少于12位
第六步:更新配置,运行脚本
touch /.autorelabel
第七步:退出临时文件系统 exit
第八步:重启登录 reboot
输入密码,进入图形界面
☆(二)MBR故障修复
第一步:建立备份文件
使用新的磁盘创建分区,挂载使用
例:新添加一个磁盘sdc,创建分区sdc1
格式化为ext4文件系统
创建/test2目录,将/dev/sdc1挂载到/test2
第二步:将MBR备份放入到挂载目录
dd if=/dev/sda of=/test2/mbr.bak bs=512 count=1
第三步:模拟MBR损坏:将原有的MBR区域覆盖掉
dd if=/dev/zero of=/dev/sda bs=512 count=1
第四步:重启测试,操作系统无法启动正常
放入系统盘,重启进入救援模式
troubleshooting 问题解决(第三个)
rescue a centos system 救援模式/修复模式(第二个)
1(continue) 检查分区并挂载到某个目录下,按1继
续执行操作
enter 回车键获取一个可操作的shell界面
第五步:修复MBR
mkdir dir 创建临时挂载目录
mount /dev/sdb1 /dir重新挂载,获取分区中的文件
dd if=dir of=/dev/sda bs=512 count=1
将备份文件覆盖到/dev/sda中
第六步:退出重启 exit
正确操作后,可进入图形界面
(三)GRUB故障修复
1、手动输入
2、利用备份文件修复
3、重新安装GRUB
在此演示第二种方法
MBR位于第一 块硬盘(/dev/sda) 的第一 个物理扇区处,总共512字节,前446字节是主引导记录(GRUB),分区表保存在MBR扇区中的第447-510字节中。
1.创建磁盘,格式化,挂载,备份文件
①:新建一块磁盘:fdisk -l
②:fdisk /dev/sdb ### 创建磁盘
n--------P---------…------w
③:mkfs.xfs /dev/sdb1 ### 格式化磁盘
④:mkdir /bak ### 创建bak目录
⑤:mount /dev/sdb1 /bak ###挂载目录到磁盘上
⑥:dd if =/dev/sda of=/bak/grub.bak bs=446 count=1 ###备份硬盘中取文件,446字节,提取1次,导入目录中的磁盘上
⑦:cd /bak ---ls ---ll ####查看文件是否保存完好
2.模拟对MBR中的GRUB引导程序的破坏,不破坏分区表
①:dd if =dev/zero of=/dev/sda bs=446 count=1
空字符文件取出,446字节,提取1次
②:init 6 ### 重启
3.引导界面进入急救模式,从备份文件中恢复GRUB引导程序
按E键进入急救模式
①:选择“Trouble shooting"(第三个)
②:选择”Rescue a CentOS Linux system"(第二个)
③:输入“1”continue Enter
④:进入“sh-4.2#"
sh-4.2# mkdir /backupdir ###创建目录
sh-4.2# mount /dev/sdb1 /backupdir ### 挂载带有备份文件的分区
sh-4.2# dd if =/backupdir/grup.bak of=/dev/sda ###恢复备份数据
sh-4.2# exit ### 退出
正确操作后,可进入图形界面