系统排错
系统引导过程:
通电–>bios初始化–>grub2磁盘引导阶段–>grub2文件引导阶段–>指定boot所在分区–>启动内核,只读挂载/设备–>启动init程序进入初始化阶段–>启动systemd初始化进程–>取/etc/systemd/中的文件–>启动程序–>启动登陆环境
grub磁盘引导阶段
MBR
mbr的作用是为了记录/boot目录所在分区位置:
磁盘的0磁道1扇区的前446字节
grub文件引导阶段
1./boot/grub2/grub.cfg指定/boot分区位置
2.加载内核
3.启动系统初始化进程
grub2-mkconfig可以生成grub.cfg文件
内核引导阶段
1.检测硬件设备
2.设备驱动初始化
3.将/目录只读挂载
4.载入初始进程 systemd
内核文件丢失请重新安装内核
systemd初始化
1.开启selinux和systemd-tools
2.加载内核参数
3.加载系统时钟,键盘,主机名称
4.读写挂载/文件系统
5.激活raid,lvm设备
6.激活系统配额
7.启动multi-user.target.wants中的所有服务脚本
8.启动虚拟控制台
9.启动图形
硬盘引导阶段实验模拟:MBR丢失(MBR主引导记录的恢复)
执行命令:dd if=/dev/zero of=/dev/vda bs=446 count=1
此时MBR就被覆盖了,重启系统会发现一直Booting from Hard Disk…
解决方法:
添加光盘镜像,设置CDROM优先,然后进入挽救模式:
chroot /mnt/sysimage/
grub2-install /dev/vda ##指定启动分区所在硬盘
文件引导阶段实验模拟
引导文件丢失:
/boot/grub2/grub.cfg
模拟问题:rm -fr /boot/grub2/grub.cfg
当系统没有重新启动时,可以使用以下命令恢复:
grub2-mkconfig > /boot/grub2/grub.cfg
当系统删除此文件并重新启动时:
grub > set root=’hd0,msdos1’ ##此位置需要根据实际情况,指定/boot所在分区
grub > linux16 /boot/vmlinuz-3.10xxxxxxxxx ro root=/dev/vda1 ##指定根分区的设备名称
grub > initrd16 /boot/initramfs-3.10.0xxxxxx.img
grub > boot
以上操作可以使系统启动,但是是临时的,所以进入系统之后还需要运行:
grub2-mkconfig > /boot/grub2/grub.cfg
以永久恢复
定制系统启动的各种设定
vim /boot/grub2/grub.cfg
找到timeout可以设置启动时的等待选择时间
设置显示系统名称:
menuentry ‘OS名称’ {
set root=’hd0,msdos1’ ##视实际情况而定
chainloader +1 ##windows的启动引导
}
设置默认启动项:
命令行下grub2-set-default 0,1,2…
内核文件丢失
模拟问题:rm -fr /boot/vmlinuz-3.10xxxxxxx.x86_64
内核文件:/boot/vmlinuz-xxxxxxxx.x86_64
1.进入挽救模式将系统光盘文件挂载:
mount /dev/sr0 /mnt/
2.新建一个目录以保存内核文件:
mkdir /rhel
3.然后进入挂载点中的Packages中:
cd /mnt/Packages
4.将内核文件安装包拷贝到刚刚创建的目录:
cp kernel-3.10.0xxxxxxxx86_64.rpm /rhel/
5.cd到创建的目录中,将内核的rpm拆解:
rpm2cpio kernel-3.10.0xxxxxx.rpm | cpio -id
6.将分解出来的内核文件vmlinuz-3.10xxxxxx移动到/boot/下
初始化镜像文件丢失
模拟问题:rm -fr initramfs-3.10xxxxxx86_64.img
没重启的情况下,可以在命令行运行以下命令:
mkinitrd /boot/initramfs-
(uname−r).img
(uname -r)
若已经重启,就在挽救模式下运行以上命令
/boot文件不小心删除
1.进入到挽救模式
2.chroot /mnt/sysimage
3.mkdir /boot
4.grub2-install /dev/vda
5.mount /dev/cdrom /mnt
6.rpm -ivh /mnt/Packages/kernel-3.10xxxxxx.rpm –force
7.grub2-mkconfig > /boot/grub2/grub.cfg
当开机启动级别被篡改:
错误形成:systemctl set-default reboot.target
解决:
1.开机按上下键停止读秒
2.按E进入编辑模式
3.选择内核启动行
将linux16 /vmlinuz-xxxxxxx ro xxxxxxxxxx改为:
linux16 /vmlinuz-xxxxxxxxxx rw rd.break
4.ctrl+x
5.chroot /sysroot
6.rm -fr /etc/systemd/system/default.target
7.ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target
8.exit
忘记root密码
同上,做完第5步,直接passwd改密码
改完之后touch /.autorelabel防止密码不被识别