Cenots7的启动流程及问题修复(附带实验)


CentOS 7引导顺序

  • UEFi或BIOS初始化,运行POST开机自检
  • 选择启动设备,引导bootloader程序grub2
  • 加载bootloader程序的配置文件:/boot/grub2/grub.cfg
  • 加载initramfs驱动模块
  • 加载内核选项
  • 内核初始化,centos7使用systemd代替init
  • 执行initrd.target所有单元,包括挂载/etc/fstab
  • 从initramfs根文件系统切换到磁盘根目录
  • systemd执行默认target配置,配置文件/etc/systemd/system/default.target
  • systemd执行sysinit.target初始化系统及basic.target准备操作系统
  • systemd启动multi-user.target下的本机与服务器服务
  • systemd执行multi-user.target下的/etc/rc.d/rc.local
  • systemd执行multi-user.target下的getty.target及登录服务
  • systemd执行graphical需要的服务

Unit文件格式

  • unit文件路径:
    • /usr/lib/systemd/system:发行版打包者使用
    • /etc/systemd/system:系统管理员和用户使用,一般是指向/usr/lib/systemd/system的软链接
    • 注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件systemctl daemon-reload
  • unit文件内容通常由三部分组成:
    • [Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
    • [Service]:与特定类型相关的专用选项;此处为Service类型
    • [Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项
  • Unit段的常用选项:
    • Description:描述信息
    • After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
    • Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活
    • Wants:依赖到的其它units,弱依赖
    • Conflicts:定义units间的冲突关系
  • Service段的常用选项:
    • Type:定义影响ExecStart及相关参数的功能的unit进程启动类型,包括:simple,
      forking, oneshot, dbus, notify, idle。默认为simple
    • EnvironmentFile:环境配置文件
    • ExecStart:指明启动unit要运行命令或脚本的绝对路径
    • ExecStartPre:ExecStart前运行
    • ExecStartPost:ExecStart后运行
    • ExecStop:指明停止unit要运行的命令或脚本
    • Restart:当设定Restart=1 时,则当此daemon服务意外终止后,会再次自动启动此服务
  • Install段的常用选项:
    • Alias:别名,可使用systemctl command Alias.service
    • RequiredBy:被哪些units所依赖,强依赖
    • WantedBy:被哪些units所依赖,弱依赖
    • Also:安装本服务的时候还要安装别的相关服务

CentOS 7启动问题修复

一、CentOS 7内核启动参数设置

  • 启动时,在linux16行后添加systemd.unit=desired.target
    systemd.unit=emergency.target
    systemd.unit=rescue.target
  • rescue比emergency 支持更多的功能,例如日志等
  • 设置只生效一次,永久生效需要在/boot/grub2/grub.cfg设置
  • systemctl default 进入默认target

二、破解CentOS 7的root口令

  • 方法一:
    • 启动时任意键暂停启动
    • 按e键进入编辑模式
    • 将光标移动linux16开始的行,添加内核参数rd.break
    • ctrl-x启动
      在这里插入图片描述
    • mount查看硬盘挂载后权限
      在这里插入图片描述
    • 重新挂载硬盘 mount -o remount,rw /sysroot
      在这里插入图片描述
    • chroot /sysroot 注意:centos6下面是sysimage
      passwd root
      touch /.autorelable 注意:这个是为了selinux生效
      如果selinux关闭了 可以不需要这个命令
      在这里插入图片描述
  • 方法二:
    • 启动时任意键暂停启动
    • e键进入编辑模式
    • 将光标移动linux16开始的行,改为rw init=/sysroot/bin/sh
      在这里插入图片描述
    • ctrl+x启动
    • chroot /sysroot
    • passwd root
    • exit reboot

三、修复grub2

  • 配置文件:
    • 主要配置文件:/boot/grub2/grub.cfg
    • 修复配置文件
      grub2-mkconfig > /boot/grub2/grub.cfg
      grub2-mkconfig -o /boot/grub2/grub.cfg
  • 修复grub
    grub2-install /dev/sda BIOS环境
    grub2-install UEFI环境
  • 调整默认启动内核
    编辑文件/etc/default/grub的GRUB_DEFAULT值,从0开始算起

实验:修复CentOS 7启动问题

一、删除grub2所有内容,修复系统

  • 准备工作:
    • dd if=/dev/zero of=/dev/sda bs=1 count=446 删除bootloader
    • hexdump -C -n 512 /dev/sda 查看前446字节的情况
    • rm -rf /boot/grub* 删除所有grub2的stage2内容
  • 1、重启进入救援模式,先切根,执行grub2-install /dev/sda恢复grub2的文件
    在这里插入图片描述
  • 2、执行grub2-mkconfig恢复/boot/grub2/grub.cfg文件,重启成功进入系统
    在这里插入图片描述
    二、删除/boot目录下所有内容,修复系统
  • 准备工作:
    rm -rf /boot/* 删除/boot目录下的所有内容
    症状如下图
    在这里插入图片描述
  • 1、进入救援模式,先切根然后挂载光盘,安装内核包
    rpm -ivh /mnt/Packages/kernel-3.10.0-1062.e17.x86_64.rpm --force
    在这里插入图片描述
  • 2、grub2-install /dev/sda 修复grub2
    在这里插入图片描述
  • 3、grub2-mkconfig -o /boot/grub2/grub.cfg 生成二阶段grub配置文件
    在这里插入图片描述
    三、删除/boot/grub2/grub.cfg,重启
  • 准备工作:
    • rm -f /boot/grub2/grub.cfg,重启后虽然grub2的stage2阶段能够进入,但由于缺失启动信息配置文件,grub2会提示输入启动信息,输入以下启动信息,boot回车后成功进入系统
    • 症状如下图:
      在这里插入图片描述
  • 修复命令如下:
grub> insmod xfs
grub> set root=(hd0,1)
grub> linux16 /vmlinuz-3.10.0-1062.e17.x86_64 root=/dev/sda2 selinux=0
grub> initrd16 /initramfs-3.10.0-1062.e17.x86_64.img 
grub> boot
  • set root=(hd0,1) 不确定可以用tab键补全功能看详细列表然后选择
    在这里插入图片描述
  • 下面过程一个道理,都可以补全
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值