基于linux下的系统排错
###################1.系统引导过程#####################################################3
通电—->bios初始化—–>grub2磁盘引导阶段—>grub2文件引导阶段—->指定boot所在分区—->启动内核,只读挂载/设备—->启动init程序进入初始化阶段—->启动systemd初始化进程—->读取/etc/systemd/中的文件—–>启动程序—->启动登录环境
#############################2.BIOS初始化######################################################
############################3.各引导阶段出现问题及修复#############################################3
##########1.grup磁盘引导阶段出错
在虚拟机上:
[[email protected] ~]# dd if=/dev/zero of=/dev/vda bs=446 count=1 ##模拟mbr引导分区数据丢失
如果还没有重启的轻况下还可以直接命令修复,若reboot了之后会发现在引导过程中会出错,根本不能进入系统。
这是因为当后64字节的引导寻找磁盘的mbr丢失后,指针读完446字节后,不知道该干什么,只能原地待命。
那么这种情况下该如何操作呢?
步骤:
(1)在真机上virt-manager进入虚拟机管理界面(先将虚拟机force off);
(2)选择类似于灯泡的图标,点击Add Hardware选择光盘类型(选择光驱)并添加镜像;
(3)选择使用光驱启动(将光驱调至最前)
(4)开机进入救援模式
先选择第三个Troubleshooting; 然后选择第二个Rescue;continue->ok->ok
提示告诉我们真实的系统挂载在/mntsysimage上;
再次提示系统挂载的路径。点OK;
第3次提示系统挂载路径说明其重要性;
(5)然后我们获得了挽救系统的一个新shell。
(6)我们只要切换到真实系统,执行修复mbr的命令即可;
df #查看根挂载的位置
chroot /mnt/sysimage #切换到系统真实存在环境
grub2-install /dev/vda #安装磁盘引导程序
vim /etc/sysconfig/selinux 修改为:disabled #关闭selinux,否则启动时间太长
exit # 两次退出是因为在转到自己的根下时重新打开了一个shell
exit
出现NO error reported说明恢复446的分区表成功
(7)关闭虚拟机退出挽救模式进行磁盘引导 ;(去掉光驱或者将光驱启动放到最后)
(8)重新开启虚拟机,并且启动成功;
一定要保证虚拟机在Force off的状态下更改硬盘或光驱的启动方式,否则会一直循环之前的操作。
###############2.grub文件引导阶段出错(引导文件误删)
/boot/grub2/grub.cfg这个文件记录了grub引导的记录,这个文件丢失后系统也会出错无法启动。
在虚拟机执行:
[[email protected] ~]# rm -fr /boot/grub2/grub.cfg ##删除引导文件
解救方法:(1)虚拟机这台主机没有reboot时恢复
grub2-mkconfig > /boot/grub2/grub.cfg ##将文件恢复到/boot/grub2/grub.cfg
(2)删除文件后虚拟机这台主机已经重新启动后恢复
在这种情况下我们会发现虚拟机系统又挂了,这时我们就需要手动引导grub。
1:打开虚拟机,进入shell;
2:在shell中执行下列命令;
set root='hd0,msdos1' #引导系统分区(虚拟机所在的硬盘和分区)
linux16 /boot/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/vda1
#手动引导内核启动程序
initrd16 /boot/initramfs-3.10.0-123.e17.x86_64.img #引导系统初始化
grub> boot #若为reboot还会进入此页面
3:上述操作可以使系统正常启动,但是临时的,如果不想每次都手动引导,需要恢复自动引导文件;
grub2-mkconfig > /boot/grub2/grub.cfg #恢复自动引导文件
ls /boot/grub2 #查看有无开机引导程序
###########3.系统内核文件丢失
(1)在虚拟机上删除文件后本机没有重新启动
1:删除内核文件
2:查找删除的文件属于哪个软件包
3:在Computer里搜索kernel内核文件,将它拖拽到桌面上,解压内核软件包,将删除的文件复制到/boot下。恢复文件后虚拟 机可以正常使用
(2)删除文件后本机已经重新启动
1:删除内核文件,重启
2:开机报错,内核文件找不到
3:将虚拟机servser状态更改为Force off;
4:选择光驱启动
5:开机进入挽救模式;分别选第三个和第二个选项,和之前磁盘引导相同;不在赘述了
6.进入一个新的shell
df
cd /run/install/repo/
cd /Packages
cp kernel-3.10.0-123.e17.x86_64.rpm /mnt/sysimage/mnt
chroot /mnt/sysimage
cd /mnt
rpm2cpio kernel-3.10.0-123.e17.x86_64.rpm | cpio -id
cp boot/vmlinuz-3.10.0-123.x86_64 /boot/
两次exit
7:关机选择虚拟硬盘启动
#########4.系统初始化文件丢失
rm -fr /boot/initramfs-3.10-123.e17.86_64.img
(1)删除文件后本机没有重新启动
[[email protected] Desktop]# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) ##uname -r 显示内核版本名
(2)删除文件后本机已经重新启动
真机上: virt-manager—->server—->关闭server—>Boot options—>添加>光驱—>选择镜像路径—>将添加的光驱放到第一位 —>进入拯救界面 选择第三行—->选择第二行—>contine–>ok—>ok–>进入一个shell(不赘述了)
1:删除文件,重新启动
2:开机报错,初始化文件找不到;
3:将虚拟机server状态更改为Force off;选择光驱启动
4:进入挽救模式;进入新的shell;
chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) (uname -r查看内核版本号)
(5)开机加载,说明恢复初始化程序成功
########5.启动级别发生错误
系统启动的几种级别:
0———–> poweroff.target
1———–> resucue.target
2———–> multi-user.target
3———–> multi-user.target
4———–> multi-user.target
5———–> grapical.target
6———–> reboot.target
在虚拟机中:
systemctl set-default shutdown.target ##更改启动级别
然后重启会发生错误。
可以看到提示 移除了旧链接,创建新的链接。到/usr/lib/systemd/system/shutdown.target
光盘启动虚拟机:
在系统启动时,开机界面按上下键,按“e”进入编辑模式,自定义启动级别。
按e后进入到编辑模式,往下翻到linux16这一行,在最后添加 5
按ctrl+x 执行,系统正常进入,编辑运行级别为graphical.target
系统就修复好了。