|
2019-05-14
RHEL7启动的顺序:
1. BIOS/UEFI自检
BIOS->init13->找定义的外存的第一个扇区
UEFI->找UEFI分区->对应的文件夹下面的文件(efi/redhat/...)
2. grub2
root(不是根文件系统,是指boot挂载点)在哪里?7.6开始/boot已经可以在逻辑卷里,如果在逻辑卷里set root写成这样(lvm/uuid...),正常的分区(hd0,1...)in
linux16 /vmlinuz.... ro root=/dev/rhel/root 这个位置留给我们传递参数
initrd16 /initramfs....
3. initramfs在内存中解开(cpio打包文件)
bin dev etc usr usr/lib(认识文件系统的那个模块,比如xfs.ko.xz, ext4.ko.xz ) ........
第一个断点
原因a 如果是systemd本身启动出现问题:出现提示符drafcut#
原因b 人为传递linux16 /vmlinuz.... ro root=/dev/rhel/root init=/bin/bash: 出现提示符#
可能采取的解决方案都是手工挂载根文件系统到/sysroot,再chroot /sysroot
第一次启动systemd
4. initramfs去挂载/sysroot
因为linux16 /vmlinuz.... ro root=/dev/rhel/root,所以只读挂载了/sysroot
第二个断点
原因 人为传递linux16 /vmlinuz.... ro root=/dev/rhel/root rd.break:出现提示符switch_root#
可能采取的解决方案都是手工重新读写挂载根文件系统 switch_root#mount -o remount,rw /sysroot
chroot /sysroot
因为进入switch_root#是不需要密码的,所以一般用来改root的密码, 最好能够记得做switch_root#touch /.autorelabel(要SELinux下次开机重新打上下文标签)
5. 其他断点: linux16 /vmlinuz.... ro root=/dev/rhel/root systemd.rescue.target (类似于rd.break+mount -o remount,rw+chroot, 但是需要用户输入密码)
linux16 /vmlinuz.... ro root=/dev/rhel/root systemd.emergency.target (类似于drafcut#+试图挂载/sysroot,一般自动进入这个目标,都是因为根文件系统需要手工检查,比如xfs_repair -v -L /dev/rhel/root)
见RH134 P268,记录内核空间日志,有利于出错。
补装重要的rpm包:
|
|