Centos7 故障排除

Centos7 故障排除

误删重要文件,引导硬盘的MRB被破坏,直接更改root口令…
  • 误操作/实验故意破坏系统重要文件,如何修复系统;系统起来不时使用光盘引导,启动系统故障排除模式
    1)光盘引导系统启动

    2)选择故障排除

    3)救援系统

    4)

    5)

    6)

    注意: 此模式下原本系统的根下的目录均被挂载至/mnt/sysimage/目录下
示例1:删除许多命令依赖的共享库文件
ldd  - 可查询文件依赖的共享库文件
[root@centos6 ~]#ldd `which --skip-alias ls`
	linux-vdso.so.1 =>  (0x00007ffc4dcc3000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003435a00000)
	librt.so.1 => /lib64/librt.so.1 (0x0000003434a00000)
	libcap.so.2 => /lib64/libcap.so.2 (0x000000343ae00000)
	libacl.so.1 => /lib64/libacl.so.1 (0x000000343f200000)
	libc.so.6 => /lib64/libc.so.6 (0x0000003434200000)
	libdl.so.2 => /lib64/libdl.so.2 (0x0000003433e00000)
	/lib64/ld-linux-x86-64.so.2 (0x0000561d3c42d000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003434600000)
	libattr.so.1 => /lib64/libattr.so.1 (0x000000343ea00000)

目前实验删/lib64/libc.so.6这个库吧
    ~]# mv  /lib64/libc.so.6  .  
或者删除  ~]# rm -f  /lib64/libc.so.6 
    ~]# reboot
    reboot: error while loading shared libraries: libc.so.6: 
    cannot open shared object file: No such file or directory
    ~]# ls
    ls: error while loading shared libraries: libc.so.6: cannot 
    open shared object file: No such file or directory
此时可以看见由于/lib64/libc.so.6是一个很基础的共享库,许多命令均依赖它
系统此时已处于瘫痪状态!

    进入故障排除,救援系统中:
        ln -s  lib-2.17.so /mnt/sysimage/lib64/libc.so.6
    注意:软链接时:源应该使用相对路径,这时相对的是目录生成的路径

事先查看了一下此共享库的信息,删除也能修复
    ~]# ll /lib64/libc.so.6
    lrwxrwxrwx. 1 root root 12 Jul 17 16:53 /lib64/libc.so.6 -> libc-2.17.so
可见/lib64/libc.so.6 是/lib64/libc-2.17.so的软链接

注意:
在删除/lib64/libc.so.6时再通过软链接生成此文件时需要注意,在救援模式下整个根被挂载至/mnt/sysimage/目录下,如果使用绝对路径软链接生成/lib64/libc.so.6是不行的,因为重启时路径发生了变化~~链接时源路径应该采用相对路径!!
注意: 软链接的源一般使用相对路径,源的相对路径是相对于软连接生成的位置,并非当前目录!!!

示例2:破坏系统引导所在的硬盘的分区表(即此分区中boot loader 有数据)但只破坏分区表
1、备份MBR中分区表的64个字节
    [root@localhost ~]# dd if=/dev/sdb of=/data/MBR.bak bs=1 count=64 skip=446
    64+0 records in                             skip表示跳过源(if=设备)前446字节
    64+0 records out
    64 bytes (64 B) copied, 0.000885729 s, 72.3 kB/s
查看
    [root@localhost ~]# hexdump -C /data/MBR.bak 
    00000000  00 20 21 00 83 aa 28 82  00 08 00 00 00 00 20 00  |. !...(....... .|
    00000010  00 aa 29 82 05 15 79 9c  00 08 20 00 00 00 40 01  |..)...y... ...@.|
    00000020  00 15 7a 9c 8e a0 82 1e  00 08 60 01 00 00 20 00  |..z.......`... .|
    00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

查看/dev/sdb分区前512字节:
    [root@localhost ~]# hexdump -C -n 512 /dev/sdb -v 
    .......(部分省略) (备份的括号内的数据)
    000001c0  21 00 83 aa 28 82 00 08  00 00 00 00 20 00(00 aa  |!...(....... ...|
    000001d0  29 82 05 15 79 9c 00 08  20 00 00 00 40 01 00 15  |)...y... ...@...|
    000001e0  7a 9c 8e a0 82 1e 00 08  60 01 00 00 20 00 00 00  |z.......`... ...|
    000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00)55 aa  |..............U.|

破坏:
    [root@localhost ~]# dd if=/dev/zero of=/dev/sdb bs=1 count=64 seek=446
    64+0 records in                       seek表示跳过目标(of=设备)前446字节
    64+0 records out
    64 bytes (64 B) copied, 0.00417756 s, 15.3 kB/s
查看破坏:
    [root@localhost ~]# hexdump -C -n 512 /dev/sdb -v
    ...部分省略...括号内的数据被破坏
    000001b0  00 00 00 00 00 00 00 00  14 44 0c 00 00 00(00 00  |.........D......|
    000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00)55 aa  |..............U.|

查看分区信息:
    分区表信息被破坏,即使数据仍在磁盘也坏造成数据丢失。MBR分区方式默认未备份分区信息
    [root@localhost ~]# parted /dev/sdb print 
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 21.5GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    Number  Start  End  Size  Type  File system  Flags

修复:
    [root@localhost ~]# dd if=/data/MBR.bak of=/dev/sdb bs=1 count=64 seek=446
    64+0 records in
    64+0 records out
    64 bytes (64 B) copied, 0.00331543 s, 19.3 kB/s
将分区信息恢复,磁盘恢复之前的状态
    [root@localhost ~]# parted /dev/sdb print
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 21.5GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos -- MBR的分区方式
    Disk Flags: 
    Number  Start   End     Size    Type      File system  Flags
    1      1049kB  1075MB  1074MB  primary
    2      1075MB  11.8GB  10.7GB  extended
    5      1076MB  2150MB  1074MB  logical
    6      2151MB  3224MB  1074MB  logical
    3      11.8GB  12.9GB  1074MB  primary                lvm
    [root@localhost ~]#

破坏系统盘分区信息,将导致系统瘫痪,此时可使用进入救援模式,联网scp复制之前的备份的MBR中分区信息恢复。  

dd命令

  • if=FILE    从FILE而不是stdin读取

  • of=FILE    写入FILE而不是stdout

  • bs=BYTES    一次读写BYTES字节

  • count=N    仅复制N个输入块

  • seek=N    在输出开始时跳过N个障碍大小的块

  • skip=N    在输入开始时跳过N ibs大小的块

  • cbs=BYTES    一次转换BYTES字节

  • conv=CONVS    根据逗号分隔的符号列表转换文件

  • ibs=BYTES    一次读取BYTES字节(默认值:512)

  • iflag=FLAGS    按逗号分隔的符号列表读取

  • obs=BYTES    一次写BYTES字节(默认值:512)

  • oflag=FLAGS    按逗号分隔的符号列表写

小测试:查询命令java来自于哪个rpm包?
    rpm -qf 查询文件来自于哪个rpm包。但是:
    [root@centos7 ~]# which java
    /usr/bin/java
    [root@centos7 ~]# rpm -qf `which java`
    file /usr/bin/java is not owned by any package
    [root@centos7 ~]#

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值