Linux故障修复

软件包故障
一、库文件丢失
破坏:rm –rf /lib64/libacl.so.1
故障状态:依赖这个库的命令不可用;系统不可启动

修复:
如果丢失的是软链接文件;
方法:
1、进入救援模式
2、创建软件链接
cd /mnt/sysimage
ln –s libc.2-17.so.6 libc.so.6
如果删除的是文件,只能从其它主机拷贝一份到本机
二、rpm故障
1、rpm文件损坏
破坏:rm –f /bin/rpm
故障状态:rpm命令不可使用

修复:
方法一:从版本相同的其它主机上拷贝到本机
远程复制:使用scp命令;或用U盘拷贝
方法二:从光盘中使用cpio解压丢失文件
1、挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
2、cpio恢复
rpm2cpio /mnt/cdrom/Packages/rpm-VERSION-RELEASE.rpm |cpio –idv ./bin/rpm
cp bin/rpm /bin/
2、rpm程序损坏
破坏:rpm –e rpm –nodeps
故障状态:rpm不可用

修复:
1、进入救援模式;挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
2、用救援模式的rpm来安装rpm
rpm –ivh /mnt/cdrom/Package/rpm-VERSION-RELEASE.rpm -–root=/mnt/sysimage –force
三、yum故障
1、检查配置文件
2、清除缓存
磁盘管理及文件系统
分区故障
一、破坏分区表并恢复之(备份分区表)
分区表备份:
dd if=/dev/sda of=/data/mbr_bak bs=1 count=512
scp /data/mbr_bak 192.168.30.69:/data 复制到远程主机
破坏:dd if=/dev/zero of=/dev/sda bs=1 count=512
故障状态:

修复:
如果机器没重启,直接通过备份恢复即可
dd if=/data/mbr_bak of=/dev/sda
如果机器重启了,发现分区表损坏:
1、进入救援模式
2、通过网络从远程主机上拷贝备份的分区表恢复之
scp 192.168.30.69:mbr_bak .
dd if=mbr_bak of=/dev/sda
如果有大小一样,分区策略一样,也可拿相同的分区表进行恢复
二、克隆分区表
前提:第二块硬盘比第一块硬盘大
dd if=/dev/sda of=/dev/sdb
三、删除分区
破坏:可通过清除mbr的最后2个字节的标识位来删除分区
dd if=/dev/zero of=/dev/sda bs=1 count=2 skip=510 seek=510
四、格式化分区
dd if=/dev/zero of=/dev/sdc
五、分区中存在夹缝导致无法分区
模拟故障:

分区时有可能会跳过某些空间导致分区中存在夹缝,默认创建新分区时从夹缝的空间开始,如果你分的分区空间大于夹缝空间,就会导致分不出来
修复:
分区时跳过夹缝空间

挂载
一、/etc/fstab文件故障
(1)要挂载的设备故障
破坏:fstab文件里要挂载的设备信息错误且开启自检

故障状态:

修复:
1、进入救援模式
2、错误信息修改正确
或关闭开启开机自检,让系统启动;启动后修改错误信息
(2)挂载点故障

系统启动时会挂载设备失败,但不影响系统启动
注意:Centos 6进入救援模式时可以设置是否启用网络功能;Centos 7没有设置,需要临时添加IP地址
网络管理
Centos 6网络故障:禁用NetworkManager
计划任务
一、Centos6 /etc/crontab文件故障
破坏:

故障状态:机器无限重启
修复:
1、进入单用户模式或救援模式
2、修复/etc/crontab文件(删除错误行)
二、Centos7 /etc/crontab文件故障
破坏:

故障状态:机器无限重启
修复:
1、临时修改内核参数
选中要编辑的内核:按e键
在linux16行尾添加rc.break
ctrl+x
2、重新挂载/(以读写方式)
mount –o remount,rw /sysroot
3、修复crontab文件(删除错误行)
vi /sysroot/etc/crontab
启动和内核管理
进入单用户模式
1、编辑grub菜单(选定要编辑的title,按e键)
2、在选定的kernel后附加
1,s,S,single都可以
3、在kernel所在行,键入“b”命令
Centos 6
一、initramfs-2.6.32-696.el6.x86_64.img 损坏恢复
破坏:rm –f /boot/initramfs-2.6.32-696.el6.x86_64.img
故障状态:光标在闪烁

修复:
1、进入救援模式
2、切换根
chroot /mnt/sysimage
3、重新生成initramfs文件
mkinitrd /boot/initramfs-`uname –r` `uname –r`
sync; sync;sync
二、误删除/boot/vmlinuz-2.6.32-696.el6.x86_64 恢复
破坏:rm –f /boot/vmlinuz
故障状态:
修复:
1、进入救援模式;挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
2、从光盘复制丢失文件到/boot/下并改名
cp /mnt/cdrom/isolinux/vmlinuz-VERSION-release /mnt/sysimage/boot/vmlinuz-`uname –r`
注意:不切换根写救援模式挂载的路径
三、/boot/目录下所有文件丢失(不包括目录)修复
破坏:rm –f /boot/file
故障状态:

修复:
方法一:
1、进入救援模式
2、切换根
chroot /mnt/sysimage
3、挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
4、修复initramfs文件
mkinitramfs /boot/initramfs-`uname –r`.img `uname –r`
5、修复vmlinuz文件
cp /mnt/cdrom/isolinux/vmlinuz /boot/vmlinuz-`uname –r`
方法二:
1、进入救援模式;挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
2、直接安装kernel
rpm –ivh /mnt/cdrom/Packages/kernel-VERSION-RELEASE.rpm –-root=/mnt/sysimage –force
三、破解root用户密码
Centos 5和6
1、进入单用户模式
2、修改密码
四、服务故障导致系统无法启动
破坏:在我们添加的测试服务脚本里模拟个故障

故障状态:

修复:
1、重启主机
2、进入单用户模式(切换到开机不启动的模式)
3、修改服务模式(服务开机不自动启动)
chkconfig –list testsrv
chkconfig testsrv off
4、重启
5、启动后解决服务问题
五、破坏grub stage 1恢复之
破坏:dd if=/dev/zero of=/dev/sda bs=1 count=446
故障状态:

修复:
方法一:有分区表备份,用分区表恢复
1、进入救援模式(启用网络功能)
2、切换根
chroot /mnt/sysimage
3、从远程主机拷贝分区表备份到本机恢复之
scp 192.168.30.7:mbr_bak .
dd if=./mbr_bak of=/dev/sda
方法二:没有分区表备份,重新安装grub
1、进入救援模式
2、切换根
chroot /mnt/sysimage
3、安装grub
grub-install /dev/sda
5、破坏grub stage 1.5恢复之
破坏:dd if=/dev/zero of=/dev/sda bs=1 count=10000 skip=512 seek=512
故障状态:光标闪烁

修复:
方法一:grub交互式命令安装
1、进入救援模式
2、安装grub
grub
root (hd0,0)
setup (hd0)
quit
方法二:grub-install安装
1、进入救援模式
2、切换根
chroot /mnt/sysimage
3、安装grub
grub-install /dev/sda
sync;sync;sync

7、/boot/grub/grub.conf文件故障
(1)破坏:把kernel和initrd行位置互换

故障状态:

修复:
1、系统启动时按上下方向键让Grub菜单选项露出来
2、按e键,可以看到kernel和initrd顺序反了
3、按d键把kernel选项删除
4、按o键,新建一项
5、按e键编辑这项
重新添加initrd,这里可用tab键补全

6、编辑完后按回车,再按b键,系统即可启动
(2)/boot/grub/grub.conf文件丢失
破坏:rm –f /boot/grub/grub.conf
故障状态:

修复:
1、进入救援模式
2、切根
chroot /mnt/sysimage
3、添加grub.conf配置文件,写关键的几行
vim /mnt/sysimage/boot/grub/grub.conf
default=0
timeout=5
title linux
kernel /vmlinuz-VERSION-RELEASE root=/dev/sda2 rhgb quiet
initrd /initramfs-VERSION-RELEASE.img
7、boot/目录下所有文件丢失修复
破坏:rm –rf /boot/*
故障状态:

恢复
方法一:
1、进入救援模式
2、切根
chroot /mnt/sysimage
3、恢复boot/目录下vmlinuz和initramfs
检查光盘是否挂载,没挂载将光盘挂载
df 或mount
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
cp /mnt/cdrom/isolinux/vmlinuz /boot/vmlinuz-`uname –r`.img
mkinitrd initramfs.img `uname –r`
4、恢复grub
grub-install /dev/sda
5、恢复grub配置文件
cat > /boot/grub.conf
default=0
timeout=5
title linux
kernel /vmlinuz-VERSION-release.img root=/dev/sda2 rhqb quiet
initrd /initramfs.img
sync;sync;sync
方法二:
1、进入救援模式;挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
2、安装kernel,修复boot
rpm –ivh /mnt/cdrom/Packages/kernel-VERSION -–root=/mnt/sysimage –force
3、切根
chroot /mnt/sysimage
4、安装grub,恢复grub
grub-install /dev/sda
5、恢复grub配置文件
cat > /boot/grub/grub.conf
default=0
timeout=5
title linux
kernel /vmlinuz-VERSON root=/dev/sda2 rhgb quiet selinux=0
initrd /initramfs-VERSION.img
注意:如果boot不是独立的分区,需要加路径(/boot/vmlinuz);grub的/表示的是boot目录所在的分区
8、/etc/fstab和/boot/所有文件丢失修复
破坏:rm –f /etc/fstab /boot/*
故障状态:

恢复:
1、进入救援模式
2、修复/etc/fstab文件
查看分区信息和文件系统
找根分区;方法:挂载上看
把和启动相关的分区挂载上在fstab文件里(两个必要分区:/分区,boot分区)
fdisk –l;blkid
mkdir /mnt/rootfs
mount /dev/sda2 /mnt/rootfs
cat > /mnt/rootfs/etc/fstab
/dev/sda2 / ext4 defaults 0 0
/dev/sda1 /boot ext4 defaults 0 0
/dev/sda5 swap swap ext4 defaults 0 0
3、重新启动系统进救援模式(让系统自动识别根并自动挂载)
exit;exit;重启
4、修复boot/目录
挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
修复vmliuz和initrd文件
rpm –ivh /mnt/cdrom/Packages/kernel-VERSION -–root=/mnt/sysimage –force
切换根
chroot /mnt/sysimage
修复grub和grub配置文件
grub-install /dev/sda
vim /boot/grub/grub.conf
default=0
timeout=5
title linux xxx
kernel /vmlinuz-VERSION root=/dev/sda2
initrd /initrd-VERSION.img
9、lvm环境下,/etc/fstab和boot/目录下所有文件丢失修复
破坏:rm –f /etc/fstab /boot/*
故障状态:

修复:
1、进入救援模式
2、激活卷组(救援模式没法直接挂载逻辑卷)
3、修复/etc/fstab文件
查看分区信息及逻辑卷信息,找出根分区及/boot分区;方法:挂载上查看
4、重启系统重新进入救援模式(让系统重新识别根并进行自动挂载)
5、修复vmlinuz和initrd文件
6、切根
7、修复grub
命令:
vgchange –ay
mkdir /mnt/rootfs
mount /dev/vgname/lvname /mnt/rootfs
lvscan
vi /mnt/rootfs/etc/fstab
/dev/vgname/lvname / ext4 defaults 0 0
/dev/sda1 /boot / ext4 defaults 0 0
exit;重启
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
rpm –ivh /mnt/cdrom/Packages/kernel-VERSION –root=/mnt/sysimage –force
chroot /mnt/sysimage
grub-install /dev/sda1
vi /boot/grub/grub.conf
default=0
timeout=5
title linux xxx
kernel /vmlinuz-VERSION root=/dev/vgname/lvname
initrd /initramfs-VERSION.img
10、Centos 6上丢失/sbin/init文件修复
破坏:rm –f /sbin/init
故障状态:

修复:
方法一:网络中如果有系统版本相同的主机,直接复制这个文件到此主机上即可
1、进入救援模式(开启网络功能)
2、切换根
chroot /mnt/sysimage
3、远程复制/sbin/init文件到本机
scp 192.168.30.106:/sbin/init /sbin/
方法二:用cpio命令把丢失文件解压出来
1、进入救援模式;挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
2、切换根
chroot /mnt/sysimage
3、解压文件
rpm2cpio /mnt/cdrom/Packages/upstart-VERSION-release | cpio –idv ./sbin/init
方法三:重新安装upstart
1、进入救援模式;挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
2、切根
chroot /mnt/sysimage
3、安装upstart
rpm –ivh /mnt/cdrom/Packages/upstart-VERSION.rpm –force
Centos 7
一、破解root口令
方法一:
启动时任意键暂停启动,让grub菜单露出来
按e键进入编辑模式
将光标移动到linux16开始的行,添加内核参数rd.break
按ctrl-x启动
mount –o remount,rw /sysroot
chroot /sysroot
passwd root
如果SELinux启动,必须新建个文件:
touch /.autorelabel
exit
reboot
方法二:
启动时任意键暂停启动
按e键进入编辑模式
将光标移动linux16开始的行,行尾添加rw init=/sysroot/bin/sh
按ctrl+x启动
chroot /sysroot
passwd root
touch ./autorelabel
exit
reboot
二、/boot/grub2/所有文件丢失修复
破坏:rm –rf /boot/grub2/*
故障状态:光标在闪烁

修复:
1、进入救援模式
2、切根
chroot /mnt/sysimage
3、安装grub2
grub2-install /dev/sda
4、生成grub配置文件
grub2-mkconfig –o /boot/grub2/grub.cfg
三、/boot/所有文件丢失
破坏:rm –rf /boot/*
故障状态:

修复:
1、进入救援模式
2、切根;挂载光盘
chroot /mnt/sysimage
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
3、恢复boot目录下文件
rpm –ivh /mnt/cdrom/Package/kernel-VERSION-RELEASE.rpm –force
4、恢复grub2
grub2-install /dev/sda
grub2-mkconfig –o /boot/grub2/grub.cfg
四、/boot/grub2/grub.cfg文件丢失
破坏:rm –f /boot/grub2/grub.cfg
故障状态:

修复:
方法一:
直接在grub命令行里输入:
insmod xfs
set root=(hd0,1)
linux16 /vmlinuz-VERSION-RELEASE root=/dev/sda2 selinux=0
initrd16 /initramfs-VERSION-RELEASE
boot
grub2-mkconfig –o /boot/grub2/grub.cfg
方法二:
1、进入救援模式
2、切根
chroot /mnt/sysimage
3、生成grub配置文件
grub2-mkconfig –o /mnt/sysimage/boot/grub2/grub.cfgQQ截图20180517161714

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98721

(0)
上一篇 2018-05-17 16:19
下一篇 2018-05-17 17:07

相关推荐

  • N32-第三周-小罗

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who | cut -d’ ‘ -f1 | uniq -u 2、取出最后登录到当前系统的用户的相关信息。 last | tac | tail -n1 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 cut -d: -f7 …

    Linux笔记 2018-09-02
  • shell脚本进阶—课堂总结

    循环、函数、会持续更新

    2018-05-10
  • sell 进阶

    删除shell函数:命令格式:unsrt function_name 创建函数:例 function func2 { echo fun2;}   fork  炸弹;:(){ :|&};: 脚本: cat  Bomb.sh #!/bin/bash ./$0./$0& 信号捕捉 trap ‘ehcho trap 15&#82…

    2018-05-10
  • Week 3 — 01 文本处理

    命令介绍 cut 在文件的每一行中提取片段,显示在标准输出(注意cut是从文件中提取) -b: 输出第指定个字节(–bytes)eg: cut FILENAME -b 1,2,3 输出每行第1,2,3个字节 -c:输出第指定个字符(–characters) -d: 使用指定分隔符代替tab(–delimiter) -f: …

    Linux笔记 2018-09-02
  • Linux 用户及权限管理(未完)

    1、查看(登录)用户名称及所启动的进程 A、使用w命令查看登录用户正在使用的进程信息 w命令用于显示已经登录系统的用户的名称,以及他们正在做的事。该命令所使用的信息来源于/var/run/utmp文件。w命令输出的信息包括: 用户名称 用户的机器名称或tty号 远程主机地址 用户登录系统的时间 空闲时间(作用不大) 附加到tty(终端)的进程所用的时间(JC…

    Linux笔记 2018-05-28
  • 磁盘存储和文件系统

    磁盘存储和文件系统: 磁盘设备的文件命名:/dev/dev_file虚拟磁盘:/dev/vd磁盘标识: /dev/sda,/dev/sdb……磁盘分区:/dev/sda1,/dev/sdb2…… chs 磁盘sector 扇区 512bytestrack 磁道head 磁头cylinder柱面 使用磁盘: 分区创建文件系统:格式化挂载:分配目录名 hexdu…

    Linux笔记 2018-05-20