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

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code