layout: post
title: Centos7的启动流程
date: 2018-01-06
tags: [“Linux”,”系统的启动和内核的管理”]


一、启动流程加载过程

POST开机自检->
选择启动设备->
引导装载程序(grub2)->
加载装载程序的配置文件(/etc/grub.d//etc/default/grub /boot/grub2/grub.cfg)->
加载initramfs->
加载内核选项->
内核初始化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需要的服务

二、启动排错

文件系统损坏

先尝试自动修复,失败则进入emergency shell,提示用户修复
在/etc/fstab不存在对应的设备和UUID等一段时间,如不可用,进入emergency shell
在/etc/fstab不存在对应挂载点systemd 尝试创建挂载点,否则提示进入emergency shell.
在/etc/fstab不正确的挂载选项提示进入emergency shell

三、设置内核参数更改系统启动时的运行目标

设置内核参数,只影响当次启动
启动时,在linux16行后添加systemd.unit=desired.target
systemd.unit=emergency.target
systemd.unit=rescue.target
systemd.unit=multi-user.target
rescue.target 比emergency 支持更多的功能,例如日志等
systemctl default 进入默认target

四、破解CentOS7的root口令方法

1)、
启动时任意键暂停启动
按e键进入编辑模式
将光标移动linux16开始的行,添加内核参数rd.break
按ctrl-x启动
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel #这一步是为了让系统重新为selinux策略打标签,否者新修改的/etc/shadow标签还是老的,系统起不来
exit
reboot

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

五、修复GRUB2

修复grub2的方法和修复grub的方法类似
主要配置文件 /boot/grub2/grub.cfg
可以通过grub2-mkconfig > /boot/grub2/grub.cfg来生成配置文件(这条命令依托vim /etc/default/grub,我们可以通过修改这个配置文件,然后再使用这个命令来生成新的grub配置文件)

相对比grub的字符界面
grub2的命令相对grub有一定改变

insmod xfs(ext4,ext3) 先装在文件系统
set root=(hd0,0) 指定boot分区的位置
linux16 /vmlinuz-version 指定内核,相对于grub的kernel
initrd /initramfs-version 和grub的一样
boot

文档更新时间: 2018-12-13 18:32   作者:张尚