zoukankan      html  css  js  c++  java
  • Linux 引导修复

    CentOS-Logo

    系统引导是一个操作系统运行的开始,若是引导出现问题,系统便无法正常使用,那有没有方法修复呢?答案是有的。


    CentOS7 引导过程

    1.开机自检BIOS
    2.MBR引导
    3.GRUB菜单
    4.加载内核kernel与内存文件系统initramfs
    5.加载硬件驱动及初始化进程


    MBR 扇区故障修复

    MBR引导记录位于物理硬盘的第一个扇区(512B),又称为主引导扇区,除了包含系统引导程序的部分数据外,还包含整个硬盘的分区表记录。

    备份 MBR 扇区数据

    1.准备另一块硬盘用于MBR扇区备份数据

    [root@localhost ~]# fdisk /dev/sdb
    
    [root@localhost ~]# mkfs.xfs /dev/sdb1
    meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310656 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=5242624, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    

    2.挂载/dev/sdb1分区

    [root@localhost ~]# mkdir /bak
    [root@localhost ~]# mount /dev/sdb1 /bak/
    [root@localhost ~]# df -hT
    文件系统       类型      容量  已用  可用 已用% 挂载点
    /dev/sda2      xfs        20G  3.4G   17G   17% /
    devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev
    tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm
    tmpfs          tmpfs     1.9G  9.1M  1.9G    1% /run
    tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/sda5      xfs        10G   37M   10G    1% /home
    /dev/sda1      xfs       2.0G  174M  1.9G    9% /boot
    tmpfs          tmpfs     378M  8.0K  378M    1% /run/user/42
    tmpfs          tmpfs     378M     0  378M    0% /run/user/0
    /dev/sdb1      xfs        20G   33M   20G    1% /bak
    

    3.备份MBR扇区数据

    [root@localhost ~]# ls /bak/
    [root@localhost ~]# dd if=/dev/sda of=/bak/sda.mbr.bak bs=512 count=1
    记录了1+0 的读入
    记录了1+0 的写出
    512字节(512 B)已复制,0.000289995 秒,1.8 MB/秒
    [root@localhost ~]# ls /bak/
    sda.mbr.bak
    

    模拟 MBR 扇区故障

    1.人为覆盖MBR扇区记录

    [root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
    记录了1+0 的读入
    记录了1+0 的写出
    512字节(512 B)已复制,0.000157851 秒,3.2 MB/秒
    

    2.重启

    [root@localhost ~]# init 6
    

    3.无法启动

    无法启动

    恢复 MBR 扇区数据

    1.使用光盘或U盘启动盘进行操作系统引导

    启动菜单

    2.进入Troubleshooting疑难解答模式

    疑难解答

    3.进入Rescue a CentOS system系统急救模式

    急救模式

    4.进入shell环境,进行恢复

    shell

    mkdir /bak
    mount /dev/sdb1 /bak
    ls /bak
    dd if=/bak/sda.mbr.bak of=/dev/sda
    reboot
    

    5.恢复成功

    恢复成功


    GRUB 引导故障修复

    GRUB是大多数Linux系统默认的引导程序,可以通过启动菜单的方式选择进入不同的操作系统。若是配置文件丢失,或者关键配置出现错误,就无法完成启动过程。

    模拟 GRUB 故障

    1.删除配置文件

    [root@localhost ~]# cp -p /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
    [root@localhost ~]# rm -f /boot/grub2/grub.cfg
    [root@localhost ~]# init 6
    

    2.无法启动

    无法启动

    修复 GRUB 故障

    前面部分和上面一样,同样进入系统急救模式进行修复。

    shell

    1.加载系统镜像,切换到待修复的Linux系统根环境

    chroot /mnt/sysimage/
    

    2.在sdaMBR扇区重新安装grub引导程序

    grub2-install /dev/sda
    

    3.重新构建grub菜单配置文件

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

    4.退出并重启,等待系统启动

    exit
    reboot
    

    遗忘 ROOT 密码

    当忘记root密码时,将无法在Linux系统上执行管理、维护等任务。又无法通过其他用户修改密码时,同样可以使用急救模式修改root密码。

    shell

    很简单,操作如下:

    chroot /mnt/sysimage/
    echo "000000" | passwd --stdin root 或 passwd root
    exit
    reboot
    
  • 相关阅读:
    MFC tab页面中获到其它页面的数据
    sqlite数据库中"Select * From XXX能查到数据,但是Select DISTINCT group From xxx Order By group却查不出来
    关闭程序出现崩溃(exe 已触发了一个断点及未加载ucrtbased.pdb)
    springboot 通用Mapper使用
    springBoot 发布war包
    springCloud Zuul网关
    springboot hystrix turbine 聚合监控
    springBoot Feign Hystrix Dashboard
    springBoot Ribbon Hystrix Dashboard
    springBoot Feign Hystrix
  • 原文地址:https://www.cnblogs.com/llife/p/11419071.html
Copyright © 2011-2022 走看看