Linux bootF分區被清空的恢復步驟

若是腦殘,把系統/boot分區下的內容所有刪除了,可是又不想從新安裝系統,是能夠經過linux救援模式恢復boot分區的。html

如下實驗平臺爲CentOS 6.2。linux

 

root用戶登陸系統,使用rm –rf /boot命令刪除/boot時,會被提未/boot沒法被刪除,但/boot裏面的全部數據都被刪除了。shell

刪除/boot分區後,重啓系統,確定連grub引導界面也沒有了,只有一個「Error 5」的報錯黑屏。ubuntu

 

從系統光盤啓動,選擇「Rescue installed system」,即救援模式,回車進入,後續啓動過程當中,選擇默認的選項即是。www.it165.netvim

有一個步聚提示「Do you want to start the network interfaces on this system」,選擇yes或者no都沒所謂,本文爲方便寫文檔,要使用ssh鏈接,因此選擇了yes,並設置網絡模式爲dhcp。網絡

最後選擇「shell Start shell」,開啓一個shell環境。app

 

此時系統的當前目錄是/mnt/sysimage,dom

用ifconfig能夠看到系統自動得到了IP地址,但使用service sshd start命令無效,提示「unrecognized service」,ssh

使用chroot命令切換當前目錄爲根目錄,socket

 

 

 

此時再使用service sshd start命令,能夠正常開啓ssh服務。

這下可使用SSH Secure Shell Client遠程訪問上面系統了,主要是爲了方便拷貝命令及結果(要是所有手敲,那要死人了~)

操做過程以下:

[root@localhost ~]# ls /boot/

(注:能夠看到此時的boot是個空目錄)

 

[root@localhost ~]# ls /mnt/

[root@localhost ~]# mount /dev/cdrom /mnt

mount: block device /dev/sr0 is write-protected, mounting read-only

(注:加載光盤到/mnt下)

 

[root@localhost ~]# ls /mnt

CentOS_BuildTag  Packages                    RPM-GPG-KEY-CentOS-Security-6

EULA             RELEASE-NOTES-en-US.html    RPM-GPG-KEY-CentOS-Testing-6

GPL              repodata                    TRANS.TBL

images           RPM-GPG-KEY-CentOS-6

isolinux         RPM-GPG-KEY-CentOS-Debug-6

[root@localhost ~]# cd /mnt/Packages/

(注:進入到存放數據包的Packages目錄)

 

[root@localhost Packages]# rpm -ivh --force kernel-2.6.32-220.el6.i686.rpm 

Preparing...                ########################################### [100%]

   1:kernel                 ########################################### [100%]

[root@localhost Packages]# ls /boot/

config-2.6.32-220.el6.i686         System.map-2.6.32-220.el6.i686

initramfs-2.6.32-220.el6.i686.img  vmlinuz-2.6.32-220.el6.i686

symvers-2.6.32-220.el6.i686.gz

(注:從新安裝內核,使用--force選項,強制安裝,能夠看到此時/boot目錄下有了內核文件等文件)

 

[root@localhost Packages]# grub-install --root-directory=/ /dev/sda

[root@localhost Packages]# ls /boot

config-2.6.32-220.el6.i686         symvers-2.6.32-220.el6.i686.gz

grub                               System.map-2.6.32-220.el6.i686

initramfs-2.6.32-220.el6.i686.img  vmlinuz-2.6.32-220.el6.i686

[root@localhost Packages]# ls /boot/grub/

device.map     ffs_stage1_5      minix_stage1_5     stage2           xfs_stage1_5

e2fs_stage1_5  iso9660_stage1_5  reiserfs_stage1_5  ufs2_stage1_5

fat_stage1_5   jfs_stage1_5      stage1             vstafs_stage1_5

(注:重裝grub到/boot,

# grub-install --root-directory=/ /dev/sda

命令中--root-directory=/,指的是/boot的相對路徑, --root-directory的值也能夠爲空,即

# grub-install --root-directory= /dev/sda

系統將會在/boot下生成一個grub文件夾,並在裏面存放grub文件,若是寫成--root-directory=/boot,系統將會在/boot下生成了一個boot文件夾,再在裏生成一個grub文件夾,即grub文件存放在了/boot/boot/grub/目錄下,這是不對的。

以上/boot/grub/中的數據,其實也能夠從/usr/share/grub/i386-redhat/裏直接拷貝過來)

 

在上面列出的/boot/grub數據中,發現,關鍵的grub.conf文件並無。須要手動建立——這個很考驗記憶力,若是每一個系統都對grub.conf文件做了備份,就行了,固然,也能夠從其餘同版本的系統中拷貝過來,修改一下即可用——這是裏手動建立一個。

 

[root@localhost Packages]# cd /boot/

[root@localhost boot]# touch grub/grub.conf

[root@localhost boot]# ls

config-2.6.32-220.el6.i686         symvers-2.6.32-220.el6.i686.gz

grub                               System.map-2.6.32-220.el6.i686

initramfs-2.6.32-220.el6.i686.img  vmlinuz-2.6.32-220.el6.i686

[root@localhost boot]# echo vmlinuz-2.6.32-220.el6.i686 >> grub/grub.conf 

[root@localhost boot]# echo initramfs-2.6.32-220.el6.i686.img >> grub/grub.conf 

(注:在/boot/grub下建立grub.conf文件,將vmlinuz和initramfs文件的文件寫入到grub.conf文件中)

 

[root@localhost boot]# vim grub/grub.conf 

default=0

timeout=10

title CentOS 6

        root (hd0,0)

        kernel /vmlinuz-2.6.32-220.el6.i686 ro root=/dev/mapper/vg_itpro-lv_root quiet

        initrd /initramfs-2.6.32-220.el6.i686.img

(注:編輯grub.conf內容,注意,「title CentOS 6」是沒有「=」的,並保存退出;

建議使用vim而不是vi,由於vim着色,比較易知道本身的輸入是否出錯,固然,ssh遠程看不到着色;

若是忘了root=/dev/mapper/vg_itpro-lv_root,能夠經過df –h命令查看,如圖P-03所示)

 

以上設置完成後,卸載光盤,重啓系統

[root@localhost boot]# umount /dev/cdrom /mnt

umount: /mnt: not mounted

[root@localhost boot]# eject

[root@localhost boot]# init 6

init: Failed to connect to socket /com/ubuntu/upstart: Connection refused

[root@localhost boot]# reboot

shutdown: Unable to shutdown system

[root@localhost boot]# 

Broadcast message from root@localhost.localdomain

        (/dev/pts/0) at 15:31 ...

The system is going down for reboot NOW!

 

以上init 6無效,reboot也無效,說明援救模式下,這兩個命令都不可用,

須要到本地系統裏,使用exit命令退出shell,

而後選擇「reboot  Reboot」選項重啓系統(如圖P-01所示)。

 

第一次重啓,速度比較慢,有一個較長時間的修復過程,如圖P-03所示;

修復結束後,系統會自動再次重啓,正常進入到登陸界面。

 

 

相關文章
相關標籤/搜索