1、Linux系统启动引导流程
- 加电自检(POST)
- 寻找启动顺序(BIOS/UEFI)
- 读取启动加载程序(MBR->Bootloader)
- 加载内核与内存文件系统(kernel-initramfs)
- 加载硬件及驱动(/lib/modules或/lib64/modules)
- 初始化系统(systemd)
- systemd启动默认target
2、target和init
常见的target
目标 | 用途 |
---|---|
grahical.target | 图形界面 |
multi-user.target | 字符界面,包含除图形界面的所有服务 |
rescue.target | 救援模式 |
shutdown.target | 停止其他目标中的服务,安全关闭系统 |
poweroff.target | 系统完全关闭并切断电源 |
reboot.target | 停止服务并重启系统 |
emergency.target | 紧急模式,将root只读挂载在/目录上 |
常见的init
运行级别 | 作用 |
---|---|
0 | 关机 |
1 | 单用户 |
2 | 多用户,等同于multi-user.target |
3 | 完全多用户 |
4 | 无功能 |
5 | 图形界面,等同于grahical.target |
6 | 重启 |
查看启动目标的依赖服务项
systemctl list-dependencies multi-user.target # 查看multi-user目标启动依赖项
3、查看默认的target
查看当前默认的目标
systemctl get-default
更改默认目标
systemctl set-default xxx.target
4、在运行时切换target
切换为字符界面
systemctl ioslate multi-user.target
init 3
切换为图形界面
systemctl isolate graphical.target
init 5
5、在启动时选择其他目标
5.1学员练习环境下切换目标
重启机器,在启动加载器中按上下键,中断倒计时
光标选择第一项,然后按【e】
此时会提示输入账号密码,这是因为学员练习环境设置了密码,生成环境中默认不会存在
- 账号:root
- 密码:Asimov
在末尾写入【systemd.unit=multi-user.target】
按【Ctrl+x】保存并启动
此时就会进入字符界面
6、修复文件系统问题
当/etc/fstab文件中系统默认的挂载出现时,会导致系统无法启动,并进入紧急模式
模拟故障,修改fstab文件内容,然后重启
如果出现引用的UUID不存在,会等待一段时间,等设备可用;如何还是不可用,则会进入紧急模式
进入救援模式,提示输入root密码
成功进入系统
因为我们现在是知道那里出问题了,只要正常进入系统即可更正;如果不知道哪里出现问题,可以进入系统修改调试
7、跳过root密码,重新设置root密码
在workstation上运行脚本加载红帽提供的环境
lab start boot-resetting
重新启动servera
reboot
加载环境后,servera的root密码会被更改
通过菜单栏向虚拟机发送组合键【Ctrl+Alt+Delete】重启虚拟机
在servera重启过程中,按上下键,中断倒计时
将光标移动到救援内核条目,按【E】键编辑所选条目
将光标移动到第4行行末,可以通过组合键【Ctrl+e】,也可以通过【End】,然后输入【rd.break】
然后按【Ctrl+x】启动系统
在启动系统后,会提示我们输入root密码
直接回车进入
以读写的形式重新挂载/sysroot文件系统
mount -o remount,rw /sysroot
进入/sysroot中chroot存放位置,将root密码修改为redhat
chroot /sysroot
# 修改密码方式1:
passwd root
> redhat
> redhat
# 修改密码方式2:
echo redhat | passwd --stdin root
因为我们使用passwd重新创建了不带SELinux上下文的/etc/shadow文件,所以需要标记文件系统,以便在下次启动时重新标记(relabel)文件系统的SELinux上下文
touch /.autorelabel
输入两次【exit】重启系统,重启结束后,系统可以正常启动
输入root,密码选择我们刚刚重新设置的密码
练习结束后,需要终止环境
lab finish boot-resetting