Linux系统排错及修复系统

系统引导过程概述:

        

1.   BIOS(Basic Input Output System):直译过来后中文名称就是"基本输入输出系统"。它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。

2. MBR(Master Boot Record):主引导记录,MBR存储于磁盘的头部,大小为512bytes,其中,446bytes用于存储BootLoader程序,64bytes用于存储分区表信息,最后2bytes用于MBR的有效性检查。

3. Kernel:内核,是Linux系统最主要的程序。

4. GRUB(Grand Unified Bootloader):多系统启动程序。
 

一、mbr主引导分区损坏(grub磁盘引导阶段)
1.模拟mbr引导分区数据(程序)丢失
fdisk -l                 ### *在哪,boot引导程序就在哪个分区
dd if=/dev/zero of=/dev/vda bs=446 count=1     ##截断,破坏引导程序
reboot起不了

2.解决
1)virt-manager 中关闭虚拟机,(小灯泡)此时硬盘启动系统失败,选择使用镜像启动系统;(小电脑)确认选择
2)开启时,来到了安装系统界面,选择第三个,再选择第二个;进入挽救模式
3)chroot /mnt/sysimage
4)grub2-install /dev/vda     ###安装主引导分区的程序
5)exit(两次)
6)关闭状态下,重新选择硬件方法启动

二、grub引导文件损坏
1.模拟
rm -fr /boot/grub2/grub.cfg
reboot后系统无引导,起不了
[root@foundation12 ~]# df                                   ###看/boot分区是否独立出来
/dev/sda3      120529408  30757384    89772024    26%       /
/dev/sda1         508588        149440        359148       30%     /boot
...
2.解决
方法一:若没有重启:grub2-mkconfig  > /boot/grub2/grub.cfg          ###grub2-mkconfig就是原文件内容,将它导入文件内

             
方法二:若重启了,则要手动引导(一次性
1)指定启动分区
  set root='hd0,msdos1'           ###在第几磁盘分区,此处数字写几       
2)读取内核,只读挂载根目录
  linux16 /vmlinuz-内核版本号 ro root=/dev/sda3
3)读系统初始化镜像文件
  initrd16 /initramfs-内核版本号.img
4)boot       ###启动,不可以reboot,否则继续手动引导
5)上述操作可以使系统正常启动,但是临时的,进入系统后要执行grub2-mkconfig  > /boot/grub2/grub.cfg

 
注意:

1.若/boot分区独立出来了,则现环境的根为真实的/boot;第二、三步如上写相对路径即可
2.若/boot分区未独立,则现环境的根为真实的/;第二、三步写绝对路径/boot/...

3.挽救模式根目录为/mnt/sysimage

三、内核引导文件损坏
1.模拟内核文件误删
 rm   -fr   /boot/vmlinuz-3.10.0-123.el7.x86_64
开机报错,内核文件找不到。系统无法启动


2.解决

1)virt-manager 中关闭虚拟机,(小灯泡)此时硬盘启动系统失败,选择使用镜像启动系统;(小电脑)确认选择
2)开启时,来到了安装系统界面,选择进入挽救模式;再选择第二个;选择1继续
3)切换真实根   chroot /mnt/sysimage/
4)挂载光驱
   mkdir    /source
   mount    /dev/cdrom /source 
5)复制包
   cp /source/Packages/kernel-内核版本.rpm  /mnt
6)拆开包
   rpm2cpio kernel-内核版本.rpm | cpio -id
7)还原
  cp /mnt/boot/vmlinuz-3.10.0-123.el7.x86_64  /boot
8)exit(两次)
9)关闭状态下,重新选择硬件方法启动

四、系统初始化镜像文件(img文件)缺失
1.模拟
rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
reboot时会有报错,初始化文件找不到


2.改正

方法一:删除文件后本机没有重新启动

mkinitrd     /boot/initramfs-$(uname -r).img $(uname -r)                          ##uname -r  显示内核版本名

方法二:删除文件后本机已经重新启动

1)virt-manager 中关闭虚拟机,(小灯泡)此时硬盘启动系统失败,选择使用镜像启动系统;(小电脑)确认选择
2)开启时,来到了安装系统界面,选择第三个;再选择第二个;进入挽救模式
3)df
4)chroot /mnt/sysimage
5)df
6)mkdir /boot/initramfs-$(uname -r).img  $(uname -r)   ###$()=数学();uname -r 查看内核版本号
7)exit(两次)
8)关闭状态下,重新选择硬件方法启动

五、systemctl初始化(系统启动级别被修改)
1.设定开机后重启
   cd    /etc/systemd/system/          
[root@localhost system]# ll default.target           ###系统开机文件       
lrwxrwxrwx. 1 root root 40 Jul 10  2014 default.target -> /usr/lib/systemd/system/graphical.target
[root@localhost ~]# ll  /usr/lib/systemd/system/graphical.target        ###有图界面
-rw-r--r--. 1 root root 522 Apr  2  2014 /usr/lib/systemd/system/graphical.target
[root@localhost system]# ll /lib/systemd/system/multi-user.target   ###无图界面
-rw-r--r--. 1 root root 524 Apr  2  2014 /lib/systemd/system/multi-user.target
[root@localhost system]# ll  /lib/systemd/system/poweroff.target ###系统关闭文件
-rw-r--r--. 1 root root 500 Apr  2  2014 /lib/systemd/system/poweroff.target
[root@localhost system]# ll   /lib/systemd/system/reboot.target    ###系统重启文件
-rw-r--r--. 1 root root 493 Apr  2  2014 /lib/systemd/system/reboot.target
[root@localhost system]# rm   -fr    default.target
[root@localhost system]# ln -s /lib/systemd/system/reboot.target /etc/systemd/system/default.target          ###将重启文件与开机文件链接,这样重启优先级调高,也就更改了启动级别为重启
reboot会进入无限重启
2.改正:先手动进入图形界面,再更改链路
1)在进入系统时按『e』                ###进入系统挽救模式
2)在系统内核linux16那行最后加上5              ###init5 有图启动

    
3)『ctrl+x』               ##执行         
4)进入虚拟机后

[root@localhost ~]# systemctl  set-default graphical.target       ##开启初始的启动级别:有图启动
rm '/etc/systemd/system/default.target'                        
ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'
5)[root@localhost ~]# ll    /etc/systemd/system/default.target         ###已链接到正确链路
lrwxrwxrwx 1 root root 40 Oct 29 22:01 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target

六、当忘记超级用户密码
1.在进入系统时按『e』                ###进入系统挽救模式
2.删除系统内核linux16那行ro及以后内容,将其改为rw rd.break    ###内核启动终止,不进入系统初始化。系统初始化是进行认证的


3.『ctrl+x』                         ###进入单用户模式执行
4.chroot /sysroot/                   ###进入真实的系统根目录
5.whoami                             ###查看当前用户身份
6.echo 新密码|passwd --stdin root    ###非交互式改密码
7.touch /.autorelabel                ####重新建立密码后selinux默认不识别,需要重新初始化selinux(selinux的机制;重新加载安全上下文)


8.两次exit    

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值