linux系统排错

系统引导过程

通电-->bios初始化-->grub磁盘引导阶段-->grub文件引导阶段(446 mbr)-->指定boot所在分区-->启动内核(ip,网卡...生效:加载),只读,挂载设备-->启动init程序进入初始化阶段-->启动systemd初始化进程-->读取/etc/systemd中的文件-->启动程序-->启动登录环境

 本文实验在server虚拟机上操作

1.磁盘引导错误:MBR丢失

[[email protected] ~]# dd if=/dev/zero of=/dev/vda bs=466 count=1                              #MBR被覆盖
1+0 records in
1+0 records out
466 bytes (466 B) copied, 0.00758536 s, 61.4 kB/s

[[email protected] ~]# reboot                                                                                               #重启

重启后显示如下界面:

linux系统排错

解决方法:

1.在真机 virt-manager 打开如下界面,将虚拟机server关闭(force off)

linux系统排错

2.设置光驱启动

点击open(第二个图标)

linux系统排错

点击灯泡(第二个图标)

linux系统排错

点击左下角 Add Hardware添加光盘

linux系统排错

Device type:CDROM device-->选择挂载光盘-->点击BROWSE... 选择和虚拟机版本相同的镜像-->点击finish

linux系统排错

在左边栏目选择 Boot Opinions-->在右边栏目勾选IDE CDROM1-->点击旁边的向上键,将光盘移动到最上面,开启挽救模式-->点击右下角apply-->点击最上面第一个电脑图标

3.

linux系统排错

选择 Troubleshooting,enter键继续                              #系统修复

linux系统排错

选择rescue a red hat enterprise linux system               #挽救模式

linux系统排错

挽救环境,选择continue

linux系统排错

选择OK

linux系统排错

4.

linux系统排错

chroot /mnt/sysimage                                                     #进入根目录

grub2-install /dev/vda

vim /etc/sysconfig/selinux                                             #将SElinux的状态修改为disabled

exit                                                                                  #退出根目录

exit                                                                                  #退出当前环境


5.关闭server虚拟机(force off),修改硬盘启动

linux系统排错

在左边栏目选择boot opinions-->右边选择光盘-->点击旁边向下键,将光盘移动到两个硬盘后面-->取消勾选光盘-->apply


开启系统后进入登录界面,即可修复成功(点击播放键)

linux系统排错

登录进入,界面会多一个镜像

linux系统排错


2.grub引导文件丢失

/boot/grub2/grub.cfg    #自动引导文件,记录系统启动方式,如果丢失系统将不能自动启动

硬盘的有效性标示     2字节        512-446=64+2

第一块硬盘,第一块分区(系统可以识别硬盘,是因为默认含hd的标示符为硬盘)

rm -fr /boot/grub2/grub.cfg                                                                               #删除grub引导文件

linux系统排错

1.文件丢失后没有重启系统

grub2-mkconfig > /boot/grub2/grub.cfg                                                  #恢复文件

linux系统排错


2.丢失文件后重启系统

重启之后直接进入了如下界面

linux系统排错

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
boot

完成后进入系统

grub2-mkconfig > /boot/grub2/grub.cfg

linux系统排错

完成上述操作即可正常启动系统


3.内核文件丢失

rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64                                                        #删除内核文件

linux系统排错


1.内核文件丢失后没有重启系统

yum whatprovides /boot/vmlinuz-3.10.0-123.el7.x86_64                     #查找内核文件的安装包#查找内核文件的安装包


linux系统排错

kernel-3.10.0-123.el7.x86_64                                                                  #linux系统内核文件

打开桌面镜像/packages/查找kernel-->kernel-3.10.0-123.el7.x86_64-->复制到桌面

linux系统排错

linux系统排错


恢复内核文件

[[email protected] boot]# cd /root/Desktop
[[email protected] Desktop]# ls
kernel-3.10.0-123.el7.x86_64.rpm
[[email protected] Desktop]# rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm  |cpio -id     #解压到当前位置的文件

219282 blocks

桌面出现boot,etc,lib

linux系统排错

[[email protected] Desktop]# cp boot/vmlinuz-3.10.0-123.el7.x86_64  /boot/                  #将boot里的内核文件复制到根下的boot

linux系统排错

操作完成


2.内核文件丢失后重启系统

重启后显示如下界面,提示没有内核文件

linux系统排错

关闭系统,设置光驱启动

linux系统排错

进入挽救环境

linux系统排错

关闭系统,修改硬盘驱动,即可正常启动系统

linux系统排错


4.初始化文件丢失

rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img                                                                         #删除系统初始化文件

linux系统排错


1.初始化文件丢失后没有重启系统

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)                                                                  #恢复初始化文件

$( )表示优先执行

uname -r                                                            #查看内核版本

initramfs-$(uname -r).img                               #生成文件名称

$(uname -r)                                                       #内核版本


linux系统排错


2.初始化文件丢失后重启

重启后提示示没有初始化文件

linux系统排错

关闭 系统,设置光盘驱动,点击播放键进入挽救模式

linux系统排错

关闭系统,修改成硬盘启动,即可正常启动系统


5.启动级别发生错误

linux系统有6个启动级别

0表示关机,系统默认运行级别不能设置为0,否则不能正常启动

1表示单用户工作状态,root权限,用于系统维护,禁止远程登录

2表示多用户状态,但没有NFS支持

3表示完全多用户状态,登录后进入控制台命令行模式

4表示系统未使用,保留

5代表有图形模式启动

6表示正常关闭并重启,默认运行不能设置为6,否则不能正常运行


改变系统级别

[[email protected] ~]# systemctl set-default shutdown.target                                #设置系统开启时直接关闭
rm '/etc/systemd/system/default.target'                                                                #删除原有连接,建立一个错误连接

ln -s '/usr/lib/systemd/system/shutdown.target' '/etc/systemd/system/default.target'


在系统启动阶段按上下键停止系统引导选择启动引导标题,按“e”进行编辑找到内核启动行,在后面添加“5”

linux系统排错

ctrl+x启动设定过后的系统引导条目

进入系统,修改开机默认运行级别


[[email protected] ~]# systemctl set-default graphical.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'

修改后系统即可正常启动,并可以正常开启关闭系统