第七周博客總結

系統故障排錯匯總

實戰:以centos6、7為例,如果誤刪/boot/initramfs–3.10.0-693.el7.x86_64.img,機器重啟如何恢復?機器重啟后菜單能出來后續不顯示了?。。?/span>

答:重啟—ESC—CD-ROM-Drive-進入救援模式–chroot /mnt/sysimage(切換到真正的根)–cd /boot/–

mkinitrd /boot/initramfs-`uname -r`.img `uname -r`–sync–exit—exit—選擇reboot選項即可修復。

實戰:以centos6、7為例,如果誤刪/boot/vmlinuz-2.6.32-696.el6.x86_64,重啟后如何恢復?

centos6、7:重啟—ESC—CD-ROM-Drive-進入救援模式— chroot /mnt/sysimage(切換到真正的根)–mount -o remount,rw /dev/sr0 /misc—cd /misc/isolinux—

cp vmlinuz /boot/vmlinuz-`uname -r`–sync—sync—sync—exit—exit—選擇root選項即可!??!

實戰:如何實現自己自定義的服務?

第一步:創建一個服務腳本,放在/etc/init.d/目錄下

服務腳本是有一定的格式的,關鍵內容有幾行,分別是

chkconfig:?? 345 95 5? 第一個數字(即345)的意思是加到服務以后,默認是在什么模式下處于on狀態的(如果是-,代表所有模式下該服務都是off狀態)。第二個數字(95)代表開機時在/etc/rc.N/下會生成一個S95的文件,第三個數字(5)代表關閉該服務的時候,會在/etc/rc.N/下生成一個K5的文件。

第二步:(描述信息,centos5上必須有,centos6可有可無)

description: Runs commands scheduled by the “at” command at the time \

第三步:腳本內容

注意第二行和第三行有冒號:

這樣做完以后還沒有成為真正的服務,因為在chkconfig –list中并沒有testsrv這個服務,需要將該服務添加到服務列表當中(加之前必須確保服務腳本在/etc/init.d的目錄下,且有執行權限),即chekconfig –add testsrv

ls /etc/init.d/

 

在服務列表中刪除testsrv服務 chkconfig –del testsrv,雖然服務被刪掉,但是腳本還在/etc/init.d/目錄下,但是在對應的/etc/rcN.d/下對應的S和K文件卻沒有了。

實戰:假設testsrv服務腳本寫的有問題,同時設為開機啟動,開機時系統卡在那,如何恢復?

重啟—按a鍵—輸入空格1—chkconfig testsrv off(將該服務在2、3、4、5模式上設為off狀態)—reboot,重啟后再慢慢修改testsrv這個腳本。

 

ls /etc/rc{1,2,3,4,5}.d/? 里面有一個S99local文件

這個服務的作用是:開機時所有的服務都運行完了才運行S99local,而且開機就會運行,所以我們可以將服務腳本放在S99local里面,開機后會自動運行!??!在centos7上如果想開機自動運行S99local腳本,需要自行加執行權限?。。?/p>

實戰:如果破壞了MBR的前446個字節,系統重啟后沒有經過菜單欄而直接切換到救援模式的界面, 如何恢復?

先研究第一階段,即MBR446個字節,

dd if=/dev/sda of=/data/mbr bs=1 count=512

sz /data/mbr

dd if=/dev/zero of=/dev/sda bs=1 count=446

hexdump -C -n 512 -v /dev/sda

reboot

答:救援模式—dd if=/mnt/sysimage/data/mbr of=/dev/sda bs=1 count=446—

hexdump -C -n512 -v /dev/sda—sync—sync—exit—exit—選擇reboot項。

如果沒有備份,使用grub命令也可以生成,即grub-install /dev/sda,這個命令的作用效果是將grub1階段、1.5階段以及第二階段都修復,不僅僅只修復1階段,只要看到菜單就說明已經成功的進入到第二階段,因為菜單是由第二階段的配置文件生成的,具體修復過程如下:

救援模式切根(chroot /mnt/sysimage–grub-install /dev/sda—sync—sync—

exit—exit—選擇reboot選項。

實戰:/boot為獨立分區!刪除/boot下的所有文件,包括目錄,重啟如何修復?方法一:

救援模式→chroot /mnt/sysimage→mount /dev/sr0 /mnt →

cp /mnt/isolinux/vmlinuz? /boot→mkinitrd initramfs-`umane -r`.img `uname -r`→grub-install /dev/sda →cd /boot/grub→vim grub.conf

→exit→exit→選擇reboot選項

方法二:(安裝kernel包,自動生成/boot下的vmlinuz和initramfs文件)

救援模式→mkdir /mnt/cdrom → mount /dev/sr0 /mnt/cdrom→

cd /mnt/sysimage/boot→

rpm -ivh /mnt/cdrom/Package/kernel-版本.rpm –root=/mnt/sysimage –force→chroot /mnt/sysimage→grub-install /dev/sda→cd /boot/grub→vi grub.conf

在vi里可以用:r!ls /boot/vmlinuz tab鍵補出來!

在命令行輸入的是–root= ,在vi grub.conf 里面輸入的是root=? !??!

如果/boot不是獨立分區,與根在一塊,如何恢復?

恢復過程一樣,只不過在編制/boot/grub/grub.conf文件時,那兩個文件要寫成

kernel /boot/vmlinuz??? 紅色的/表示的時boot這個目錄所在的分區?。。?/p>

initd /boot/initramfs

實戰:如果將/etc/fstab文件刪除,再將/boot下的所有文件刪除,如何恢復?

備注:/etc/fstab文件內存放的是各個分區掛載到哪個文件夾下。

救援模式下的故障狀態顯示

恢復方法:救援模式→fdisk -l,顯示如下,*代表引導的意思

經查有5個分區,建一個文件夾mkdir /mnt/rootfs,將上述分區分別掛載到/mnt/rootfs下,再進入到/mnt/rootfs下,看看到底哪個分區對應的是根分區→

vi /mnt/rootfs/etc/fstab

使用blkid可以查看分區是什么文件系統。

→exit→選擇reboot選項→救援模式→chroot /mnt/sysimage→mount /dev/sr0 /mnt →

cp /mnt/isolinux/vmlinuz? /boot→mkinitrd initramfs-`umane -r`.img `uname -r`→grub-install /dev/sda →cd /boot/grub→vim grub.conf

→exit→exit→選擇reboot選項

實戰:破壞/sbin/init文件,如何恢復?(/sbin/init是個二進制文件)方法一:

故障狀態為

思路:將別的centos6上的/sbin/init文件拷一份過來就可以!

方法:救援模式→配置網絡

chroot /mnt/sysimage→scp 192.168.30.48:/sbin/init ./→

mv init /sbin/→reboot

方法二:

查看/sbin/init來自于哪一個包,使用rpm -qf /sbin/init來查看

方法:救援模式→chroot /mnt/sysimage→掛載→

rpm2cpio /media/CentOS_6.9_Final/Packages/upstart-版本號.rpm | cpio -idv

./sbin/init? 意思是將只解壓upstart包里面的/sbin/init文件到當前目錄!

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/98376

(0)
柳寶玉柳寶玉
上一篇 2018-05-13
下一篇 2018-05-13

相關推薦

欧美性久久久久