1. 请简要说明 RHEL9的启动过程。
(1)计算机通电。系统固件 (UEFI 或 BIOS) 开机自检 (POST),并初始化部分硬件,然后,固件会寻找启动设备(如硬盘、USB、网络等),并将控制权交给引导加载程序。
(2)一旦固件完成硬件检查,它会加载 GRUB2(Grand Unified Bootloader) 引导加载程序。GRUB2 显示引导菜单,用户可以选择启动内核或进入恢复模式。默认情况下,GRUB2 会从硬盘的引导分区中加载操作系统的内核(vmlinuz
文件)和初始内存盘(initramfs
文件)。
(3)GRUB2 启动后,加载并执行内核镜像(通常是 /boot/vmlinuz
)。内核负责初始化硬件设备、挂载根文件系统(/
),并启动操作系统的基本服务。
(4)在内核启动过程中,initramfs
(初始内存文件系统)被加载到内存中。initramfs
是一个临时的根文件系统,通常包含用于挂载根文件系统所需的驱动程序和脚本。initramfs
会执行一些系统初始化任务,如检查磁盘、加载必要的内核模块、设置网络等。一旦initramfs完成其任务,他将卸载自身并挂载真正的根文件系统。
(5)内核完成初始化后,它会启动用户空间的第一个进程,通常是 systemd。它
是所有进程的父进程,负责启动其他系统服务和进程(如网络、时间同步、磁盘挂载等)。systemd 会读取 /etc/systemd/system/default.target 来决定系统的启动级别,并启动相应服务。
2. 系统重启和关机的命令分别是什么?
系统重启:systemctl reboot 或 reboot。
系统关机:systemctl poweroff 或 poweroff。
3. Systemd target是什么?
systemd 可以管理所有的系统资源,Unit 是 systemd 管理系统资源的基本单位,systemd 通过单元文件控制 Unit 的启动。
target 就是一种单元文件,target 单元文件用于定义和描述不同的系统目标或状态,这些目标通常表示系统在不同运行级别或状态下应该启动的一组服务单元。
在运行的系统中,可使用 systemctl isolate 命令切换到其他 target。
4. 重置丢失的root密码需要哪些步骤?
- (1)重启系统。
- (2) 按任意键(Enter 除外)中断 boot loader 倒计时。
- (3)将光标移至要启动的内核条目。
- (4)按 e 编辑选定的条目。
- (5)将光标移到内核命令行(以 linux 开头的行)。
- (6)将 rd.break 附加到行末, 利用该选项,系统从 initramfs 向实际系统移交控制权前,系统将会中断。
- (7)按 Ctrl+x 进行启动。
- (8)以读/写形式重新挂载 /sysroot :mount -o remount,rw /sysroot。
- (9)进入 /sysroot 中的 chroot 存放位置:chroot /sysroot。
- (10)修改root密码:passwd root
- (11)由于 passwd 命令重新创建了不带 SELinux 上下文的 /etc/shadow 文件,所以要确保所以文件重新获得标记:touch /.autorelabel。
- (12)输入 exit 两次,第一次退出chroot,第二次退出 initramfs debug shell。
此时,系统将继续启动,执行完整的 SELinux relabel ,然后再次重新启动。
5. 如何让系统日志在重启后持久保留?
系统日志默认保存在 /run/log/journal 目录中,系统重启后将被删除。
可在 /etc/systemd/journald.conf 中将 Storage 参数设置为 persistent ,可以持久化系统日志。