若是腦殘,把系統/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所示;
修復結束後,系統會自動再次重啓,正常進入到登陸界面。