CentOS7 运维 - 引导过程及排除启动故障 | MBR扇区故障修复 | GRUB引导故障修复 | Linux管理员root账户密码忘记找回

编程入门 行业动态 更新时间:2024-10-13 12:17:57

CentOS7操作系统引导过程

  • 一、系统引导过程总览
  • 排除启动类故障
    • 修复MBR扇区故障
      • 故障的原因
      • 故障现象
      • 解决思路
    • 修复GRUB引导故障
      • 故障原因
      • 故障现象
      • 解决思路
  • 如果忘记root用户的密码
    • 进入急救模式,重设密码
  • 系统服务控制
  • Linux系统的运行级别
    • 查看运行级别
    • 临时切换运行级别
  • ntsysv工具
  • systectl工具
  • 永久修改主机名
  • 查看主机名的状态
  • 设置系统语言为中文
  • 查看当前系统使用的语言
  • 查看系统启动耗时

一、系统引导过程总览

1.开机自检
服务器主机开机以后,将根据主板BISO中的设置,对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘
总结:检测出第一个能够引导系统的设备,比如硬盘或者光驱

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

3.GRUB 菜单
对于Linux操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核
CentOS7采用的是GRUB2启动引导器
总结:GRUB引导程序通过读取GRUB配置文件/boor/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置

4.加载内核
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌握整个Linux操作系统的允许过程
CentOS7系统中,默认的内核文件位于"/boot/vmlinuz-1.0.0-001.e17.x86_64"
总结:加载硬件驱动程序,内核把init进程加载到内存中运行

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

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

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

Systemd 单元类型

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

Cgroup的用处举例:比如限制你使用50%的CPU

运行级别所对应的 Systemd 目标

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

排除启动类故障

修复MBR扇区故障

故障的原因

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

故障现象

  • 找不到引导程序,启动中断
  • 不正确的分区操作、磁盘读写误操作

解决思路

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

MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节
①备份MBR扇区数据到其他磁盘(/dev/sdb1)
如果不知道如何创建分区,请先阅读上一篇磁盘管理与文件系统

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

②模拟破坏MBR引导扇区

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

③引导界面进入急救模式

  • 从备份文件中恢复MBR扇区数据
  • 先加载好光盘镜像,重启操作系统

当出现安装想到界面时,选择"Troubleshooting"选项

再选择"Rescue a CentOS 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=/backup/mbr.bak of=/dev/sda #恢复备份数据
sh-4.2# exit #执行exit命令退出临时Shell环境,系统将会自动重启


恢复完成

修复GRUB引导故障

故障原因

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

故障现象

系统引导停滞,显示"grub>"提示符的Bash

解决思路

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

/boot/grub/目录下的包时用于启动菜单的显示图像及样式 /boot/grub2/grub.cfg GRUB配置文件

①手动输入引导命令

grub>insmod xfs
grub>linux16 /vmlinuz-3.10.0-1160.11.1.el7.x86_64 root=UUID=12b3a696-808a-45c6-bb15-1f0d3a2eaae5 ro rhgb quiet LANG=zh_CN.UTF-8
grub>initrd16 /initramfs-3.10.0-1160.11.1.el7.x86_64.img
grub>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

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

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


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

sh-4.2# mkdir /bak
sh-4.2# mount /dev/sdb1 /bak
sh-4.2# dd if=/bak/grub.bak of=/dev/sda
sh-4.2# exit

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

rm -rf /boot/frub2/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 环境,并重启过i

bash-4.2# exit
sh-4.2# reboot

如果忘记root用户的密码

进入急救模式,重设密码

chroot /mnt/sysimage
passwd root

系统服务控制

systemctl控制类型服务名称

常用控制类型

  • start 启动
  • stop 停止
  • restart 重新启动
  • reload 重新加载
  • status 查看服务状态

Linux系统的运行级别

查看运行级别

  • runlevel命令
  • systemctl工具

临时切换运行级别

  • init命令
  • systemctl工具
init 0systemctl isolate poweroff.targetsystemctl poweroffshutdown -h now
init 1systemctl isolate rescue.target————————
init 3systemctl isolate multi-user.target————————
init 5systemctl isolate graphical.target————————
init 6systemctl isolate reboot.targetsystemctl rebootreboot

①查看系统默认的运行级别

systemctl get-default      #查看系统默认运行级别


②设置永久运行级别

ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
或
##————设置永久运行级别
systemctl set-default multi-user.target

ntsysv工具

  • 提供一个交互式、可视化窗口
  • 可以在字符终端运行
  • 便于集中管理多个服务
  • 用于控制服务是否开机自启动
ntsysv

systectl工具

  • 不提供交互式、可视化窗口
  • 管理单个服务效率更高
systemctl enable 【服务名称】      #开启开机自启动
systemctl disable 【服务名称】     #关闭开机自启动

永久修改主机名

hostnamectl set-hostname  (新名称)

查看主机名的状态

hostnamectl status 

设置系统语言为中文

localectl set-locale LANG=zh_CN.utf8

查看当前系统使用的语言

localectl [status]

查看系统启动耗时

systemd-analyze 

更多推荐

CentOS7 运维 - 引导过程及排除启动故障 | MBR扇区故障修复 | GRUB引导故障修复 | Linux管理员root账户密码忘记找回

本文发布于:2023-06-13 08:50:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1368755.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:故障   账户   扇区   管理员   密码

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!