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.www58058.com/98721

(0)
你的命字你的命字
上一篇 2018-05-17
下一篇 2018-05-17

相關推薦

  • at & crontab命令

    at命令 功能 at命令用于執行未來某個時間點的某一次任務,任務的執行結果為以郵件的形式發送給用戶 命令格式 at [OPTION] TIME 常用選項[OPTION] -l 查看等待運行的任務 atq 命令也可用戶查看等待運行的任務 -f /path/from/file 從指定文件中讀取作業任務,而不再交互式輸入 -d # 刪除指定的作業任務 -c 查看指…

    Linux筆記 2018-06-11
  • shell腳本編程示例

    #!/usr/bin/expectspawn scp /etc/fstab 192.168.8.100:/appexpect {“yes/no” { send “yes\n”;exp_continue }“password” { send “magedu\n” }}expec…

    2018-05-12
  • keepalived介紹及相關實驗

    Keepalived是基于vrrp協議的一款高可用軟件。它的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,并將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作

    2018-07-13
  • 模擬網絡訪問解析

    搭建局域網DNS解析,具體實現功能如下圖 注:該測試只有正向解析 項目流程圖 1. 項目前準備關閉防火墻和SELINUX,配置網絡 ①開啟8臺機器 ②關閉防火墻及selinux iptables -vnL #查看防火墻狀態 systemctl stop firewall #關閉防火墻 getenforce #查看SELinux狀態 setenforce 0 …

    2018-06-04
  • 計算機基礎

    計算機基礎與linux的常用命令

    2018-04-01
  • PXE自動化安裝centos6與centos7

    PXE自動化安裝centos7系統1、確保防火墻和selinux全部關閉2、yum -y install dhcp tftp-server httpd syslinux3、啟動相關服務systemctl start httpdsystemctl enable httpdsystemctl start tftp.servicesystemctl enable …

    Linux筆記 2018-05-28
欧美性久久久久