美文网首页Linux初学者学习笔记Grub2
20170907 管理systemd(二)

20170907 管理systemd(二)

作者: 哈喽别样 | 来源:发表于2017-09-10 23:15 被阅读13次
    • CentOS 7引导顺序
    • unit文件格式
    • CentOS 7启动问题修复

    一、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设置

    (二)破解CentOS 7的root口令

    • 方法一:

      • 启动时任意键暂停启动
      • 按e键进入编辑模式
      • 将光标移动linux16开始的行,添加内核参数rd.break
      • 按ctrl-x启动
      • mount -o remount,rw /sysroot
      • chroot /sysroot
      • passwd root
      • touch /.autorelabel
      • exit
      • reboot
    • 方法二:

      • 启动时任意键暂停启动
      • 按e键进入编辑模式
      • 将光标移动linux16开始的行,改为rw init=/sysroot/bin/sh
      • 按ctrl-x启动
      • chroot /sysroot
      • passwd root
      • touch /.autorelabel
      • exit
      • reboot

    (三)修复grub2

    • 配置文件:

      • 主要配置文件:/boot/grub2/grub.cfg
      • 修复配置文件
        grub2-mkconfig > /boot/grub2/grub.cfg 或
        grub-mkconfig -o /boot/grub2/grub.cfg
    • 修复grub
      grub2-install /dev/sda BIOS环境
      grub2-install UEFI环境

    • 调整默认启动内核
      编辑文件/etc/default/grub的GRUB_DEFAULT值,从0开始算起

    • 实验:修复CentOS 7启动问题

    实验1:删除grub2所有内容,修复系统

    dd if=/dev/zero of=/dev/sda bs=1 count=446 删除bootloader
    rm -rf /boot/grub* 删除所有grub2的stage2内容

    (1)重启进入救援模式,先切根,执行grub2-install /dev/sda恢复grub2的文件

    (2)执行grub-mkconfig恢复/boot/grub2/grub.cfg文件,重启成功进入系统

    实验2:删除/boot目录下所有内容,修复系统

    rm -rf /boot/* 删除/boot目录下的所有内容

    (1)重启进入救援模式,先切根,挂载光盘,安装内核软件包

    (2)之后内容与实验1类似,包括修复grub2文件,修复/boot/grub2/grub.cfg文件,重启成功进入系统

    实验3:删除/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-514.el7.x86_64 root=/dev/sda2 selinux=0
    grub> inintrd16 /initramfs-3.10.0-514.el7.x86_64.img
    grub> boot
    

    相关文章

      网友评论

        本文标题:20170907 管理systemd(二)

        本文链接:https://www.haomeiwen.com/subject/bcvwjxtx.html