您的位置:首页 > 运维架构 > Linux

Linux的系统排错

2019-08-02 13:33 871 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/ranrancc_/article/details/98166010

文章目录

  • 2.2 文件引导阶段
  • 2.3 系统开机启动级别被人恶意篡改
  • 2.4 忘记root用户密码
  • 一、系统引导过程

    • BIOS是电脑的基本输入输出系统,在计算机系统中起着重要作用
    • BIOS是连接电脑硬件和软件的枢纽,也可以说它是一款转换器
    • 从功能上看,BIOS分为三个部分: 自检及初始化程序;硬件中断处理;程序服务请求
    程序 含义
    自检及初始化程序 比较容易理解,就是电脑通电后BIOS对硬件部分的检测,是否有异常或故障,还有就是启动前一些硬件参数的比对是否符合,之后就是引导硬盘的操作系统
    硬件中断处理 计算机开机的时候,BIOS会告诉CPU硬件设备的中断号,当你操作时输入了使用某个硬件的命令后,它就会根据中断号使用相应的硬件来完成命令的工作,最后根据其中断号跳回原来的状态
    程序服务请求 从BIOS的定义可以知道它总是和计算机的输入输出设备打交道,它通过最特定的数据端口发出指令,发送或接收各类外部设备的数据,从而实现软件应用程序对硬件的操作

    二、系统的不同问题

    2.1 硬盘引导阶段

    1、 mbr主引导记录的恢复

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

    重启开机后,会卡在这里。

    解决
    (1)让虚拟机开机时以光驱开启。

    • 插入光驱时,先关机。

    (2)开机进入挽救模式

    (3)df 查看一下 boot分区所在硬盘为/dev/vda

    (4)grub2-install 启动分区所在硬盘
    (5)两次exit 就好了

    (6)更改开机启动方式,重启问题就解决了

    2.2 文件引导阶段

    1、引导文件grub.cfg丢失

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

    解决
    未重启时,


    重启 时:
    (1)以磁盘方式开启虚拟机,此时,系统会停在这里,因为丢失了引导文件,说以我们可以手动引导

    (2)grub > set root=‘hd0,msdos1’ 此位置是不固定的,位置指定/boot所在分区
    (3)grub > linux16 /vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/vda1 #跟分区的设备名称
    (4)grub > initrd16 /initramfs-3.10.0-123.el7.x86_64.img
    (5)boot

    (6)以上操作可以使系统正常启动,但是是临时的,所以进入系统后还是需要执行: grub2-mkconfig > /boot/grub2/grub.cfg

    2、 内核文件丢失问题

    模拟问题: rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64


    解决
    (1)以光驱启动,进入rescus挽救模式
    (2)chroot /mnt/sysimage 进入/dev/vda1挂载点
    (3)mkdir /rhel7 (建立光盘挂载点)
    (4)mount /dev/sr0 /rhel7 将光盘挂载在此目录
    (5)cd /rhel7/Packages 到达镜像的包下


    (6)cp kernel-3.10.0-123.el7.x86_64.rmp /mnt 我们将安装包复制在/mnt下
    (7)cd /mnt 在mnt目录 rpm2cpio kernel-3.10.0-123.el7.x86_64.rmp|cpio -id 然后将包安装解压,我们解压出boot etc lib 与内核安装包
    (9)cd /mnt/boot 在 /mnt/boot 下 cp vmlinuz-3.10.0-123.el7.x86_64 /boot 将/mnt/boot中的内核复制到/boot中
    (11)exit最后退出挂载点,exit最后退出

    3、 初始化镜像文件丢失

    模拟问题:rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img

    当系统没有重启
    ==mkinitrd /boot/initramfs-$(uname).img (uname).img ==


    当系统** 重启**
    (1)进入挽救模式
    (2)chroot /mnt/sysimage
    (3)mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

    4、/boot分区被删除

    (1)以光驱启动虚拟机,进入到挽救模式
    (2)chroot /mnt/sysimage
    (3)mkdir /boot
    (4)grub2-install /dev/vda 安装主引导记录mbr
    (5)mount /dev/sr0 /mnt
    (6)rpm -ivh /mnt/Packages/kernel-3.10.0-123.el7.x86_64.rpm --force 安装内核文件
    (7)grub2-mkconifg > /boot/grub2/grub.cfg

    2.3 系统开机启动级别被人恶意篡改

    • 查看开机启动级别:cd /etc/systemd/system/multi-user.target.wants/

    **模拟问题:systemctl set-default reboot.target**开机后会不停重启
    解决:
    (1)开机按上下键停止读秒
    (2)按“e”进入编辑模式


    (3)选择内核启动行
    linux16 /vmlinuz-xxxx ro xxxx 改为 linux16 /vmlinuz-xxxx rw rd.break
    (4)ctrl+x

    (5)chroot /sysroot
    (6)rm -fr /etc/systemd/system/default.target
    (7)ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target
    (8)exit*2

    2.4 忘记root用户密码

    (1)开机按上下键停止读秒
    (2)按“e”进入编辑模式
    (3)选择内核启动行
    linux16 /vmlinuz-xxxx ro xxxx 改为 linux16 /vmlinuz-xxxx rw rd.break
    (4)ctrl+x
    (5)chroot /sysroot
    (6)passwd 来修改用户密码,设置密码为redhat,再次输入密码redhat,即可更改root用户密码
    (7)touch /.autorelabel 让selinux生效,即可重新开启虚拟机。

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: