基于Linux的系统排错

1.系统引导过程概述

基于Linux的系统排错

2.系统异常及恢复

【1】grub系统引导

1)mbr上446字节丢失

模拟问题: dd if=/dev/zero  of=/dev/vda  bs=446  count=1   

基于Linux的系统排错

开机提示错误信息

基于Linux的系统排错

解决方法:

chroot   /mnt/sysimaage          ##切换到真实根环境

grub2-install /dev/vda              ##安装硬盘 

具体实现方法如下:

1.打开虚拟机管理器,关闭虚拟机(force off)

2.加入镜像光盘,从光驱启动

基于Linux的系统排错

3.在boot options中将IDE CDROM1设置为优先加载显示

基于Linux的系统排错

4.重新开机,选择Troubleshooting

基于Linux的系统排错

5.选择 Rescue a Red Hat Enterprise Linux system

基于Linux的系统排错

重要的事情说三编:真实的系统挂载在/mnt/sysimage下

continue

基于Linux的系统排错

ok

基于Linux的系统排错

ok

基于Linux的系统排错

6.切换到真实/环境,进行安装grub2磁盘引导

基于Linux的系统排错

7.更改selinux状态为disabled

基于Linux的系统排错

8.关闭虚拟机,在虚拟机管理器中将VirtlO Disk1再次设置为优先加载显示

基于Linux的系统排错

9.再次打开虚拟机,系统成功引导

2)引导文件丢失

模拟问题:rm -rf /boot/grub2/grub.cfg

1.当系统未重启

grub2-mkconfig > /boot/grub2/grub.cfg ##grub2-mkconfig输出的就是/boot/grub2/grub.cfg的文件内容

2.当系统已经重启

grub>   set root=’hd0,msdos1’  ##找boot分区的挂载点,第一块硬盘的第一个分区,此位置时不固定的,位置指定/boot所在分区

grub>   linux16 /boot/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/vda1 #内核文件只读挂载,根分区设备名称

grub>   linitrd16 /boot/initramfs-3.10.0-123.e17.x86_64.img ##系统初始化镜像文件

grub>  boot

执行上述命令后,系统可正常启动,但是再次重启时又遇到相同的问题

此时需要grub2-mkconfig > /boot/grub2/grub.cfg 生成引导文件

具体实现方法如下:

基于Linux的系统排错

待开机后执行:

基于Linux的系统排错

【2】内核文件丢失

模拟问题:rm -fr /boot/vmlinuz-3.10.0-123.e17.x86_64 ##删除系统内核文件

1)在没有重启的情况下

在光盘中找到kernel-3.10.0-123.el7.x86_64.rpm
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm |cpio  -id  ##分解
cp boot/vmlinuz-3.10.0-123.el7.x86_64  /boot/

2)已经重启的情况下

进入挽救模式
cd /run/install/repo/Packages
cp kernel-3.10.0-123.el7.x86_64.rpm  /mnt/sysimage/mnt/
chroot  /mnt/susimage/
cd /mnt/
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm |cpio  -id  ##分解
cp boot/vmlinuz-3.10.0-123.el7.x86_64  /boot/

选择引导方式重新启动

具体实现方法如下:

1.错误提示界面

基于Linux的系统排错

2.进入挽救模式,执行下列命令

基于Linux的系统排错

3.重启虚拟机,恢复正常

【3】系统初始化镜像文件丢失
提示:$()  ' '  表示先执行其中的内容
模拟问题:rm -rf /boot/initramfs-3.10.0-123.el7.x86_64.img
没有重启的情况
mkinitrd  /boot/initramfs-$(uname -r).img  $(uname -r)
已经重启的情况
chroot  /mnt/susimage/  ##切换到真实主机的根

mkinitrd  /boot/initramfs-$(uname -r).img  $(uname -r)   

具体实现方法:

1.错误提示界面

基于Linux的系统排错

2.进入挽救模式,执行下列命令

基于Linux的系统排错

3.重启虚拟机,恢复正常

【4】开机启动级别被修改

Linux系统有7个运行级别(runlevel)
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

设定启动级别

systemctl set-default + 启动级别

模拟问题:

systemctl set-default shutdown.target

基于Linux的系统排错

解决方法:

1.开机按上下键停止读秒
2.按‘E’进入编辑模式

3.选择内核启动行,linux16 /vmlinuz-xxxxxxxx ro xxxxxxxxx  后添加启动级别5

具体实现方法:

1.错误提示界面

基于Linux的系统排错

2.重新启动

基于Linux的系统排错

ctrl+x执行

3.恢复正常