Linux从入门到精通——linux的系统排错

####系统排错###

1.误删boot下的文件

      

      

   (1)不慎删除自动引导文件
  /boot/grub2/grub.cfg                                                                                  ##系统自动引导文件
  set root='hd0,msdos1'                                                                               ##设定引导启动分区路径
  Linux16 /vmlinuz-3.10.0-327.el7.x86_64  ro root=/dev/vda1  selinux=0     ##设定启动内核,如果selinux没关会让系统启动卡住
  initrd16 /initramfs-3.10.0-327.el7.x86_64.img                                            ##启动初始化程序
  boot

  grub2-mkconfig > /boot/grub2/grub.cfg          ##永久恢复

      

      

下面的实验需要新建一个cdrom的启动盘,下面是方法:

       

   (2)不慎删除启动内核怎么办
  rm -fr /boot/vmlinuz-3.10.0-327.el7.x86_64
  安装启动盘(上面新添加的光驱),启动拯救模式
  chroot /mnt/systimg                            ## 切换真实的root环境。挂载系统至此你已进入自己安装的Linux系统
  mkdir /rhel7.0                                     ## 新建一个新的目录
  mount /dev/sr0 /rhel7.0      ## /dev/sr0是光驱的设备名,/dev/cdrom代表光驱。cdrom是sr0的软链接.你ll /dev/cdrom和ll /dev/sr0看看显示


  cd /rhel7.0/Pcakages
  cp kernel-3.10.0-123.el7.x86_64.rpm /mnt
  cd /mnt
  rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id
  cd /mnt
  ls
  cd boot/
  ls
  cp vmlinuz-3.10.0-327.el7.x86_64 /boot
  exit
  exit
  删除启动盘

      

      

      

      

   (3)删除初始化程序如何恢复
  rm -fr /boot/initramfs-3.10.0-327.el7.x86_64.img
  拯救模式
  chroot /mnt/systimg
  mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

      

   (4)忘记root密码
  重启系统
  按E
  在内核行后删除ro后的内容
  ro改为rw加空格
  加rd.break
  Ctrl  x
  出现switch_root后,输入chroot /sysroot/
  输入echo westos|passwd --stdin root             ##改root密码为westos
  touch /.autorelabel                                          ##改完密码后selinux默认不识别新密码,建立此文件使selinux识别新密码

      

      

   (5)进入不了sh的无图形界面
  chroot /mnt/sysimage
  显示没有/bin/bash这个文件
  cp /bin/bash /mnt/sysimage/bin/bash
  chroot /mnt/sysimage
  这样就好了

      

   (6)更改默认的指向  (更改default.target)
  cd /etc/systemd/system
  ll default.target
  lrwxrwxrwx. 1 root root 36 Jul  1 00:19 default.target -> /lib/systemd/system/graphical.target           ##默认软链接的指向

  systemctl set-default multi-user.target

      

      

      会显示:
      rm '/etc/systemd/system/default.target'
      ln -s '/vsr/lib/systemd/system/multi-uer.target' '/etc/systemed/system/default.target'
      ln -snf(强制更改) /usr/lib/systemd/system/poweroff.target default.target
      reboot                                            ##系统会卡在一直执行这里然后关机这个状态

      

      

(7)reboot以后发现直接出现的不是grub >,而是grub  sxxx > .

  需要在在启动盘里面把上面文件全部在 /boot 下cp一份 才能重新启动。

=======================================================================================================================

重置密码主要有rd.break和init两种方法。

rd.break方法:

1、启动的时候,在启动界面,相应启动项,内核名称上按“e”;

2、进入后,找到linux16开头的地方,按“end”键到最后,输入rd.break,按ctrl+x进入;

3、进去后输入命令mount,发现根为/sysroot/,并且不能写,只有ro=readonly权限;

4、mount -o remount,rw /sysroot/,重新挂载,之后mount,发现有了r,w权限;

5、chroot /sysroot/ 改变根;

(1)echo redhat|passwd –stdin root 修改root密码为redhat,或者输入passwd,交互修改;

(2)还有就是先cp一份,然后修改/etc/shadow文件

6、touch /.autorelabel 这句是为了selinux生效

7、ctrl+d 退出

8、然后reboot

至此,密码修改完成

init方法:

1. 启动系统

,并在GRUB2启动屏显时,按下e键进入编辑模式。

2. 在linux16/linux/linuxefi所在参数行尾添加以下内容:init=/bin/sh

3. 按Ctrl+x启动到shell。

4. 挂载文件系统为可写模式:mount –o remount,rw /

5. 运行passwd,并按提示修改root密码。6. 如何之前系统启用了selinux,必须运行以下命令,否则将无法正常启动系统:touch /.autorelabel

7. 运行命令exec /sbin/init来正常启动,或者用命令exec /sbin/reboot重启

=========================================================================================================================

原文地址:https://www.cnblogs.com/wf-aiyouwei/p/9445013.html