CentOS 系統修復

zhh11112發表於2018-09-20

                                    Centos6 grub損壞恢復操作

說明:

/boot目錄中,儲存系統核心及開機引導檔案,如果檔案被刪除,將導致系統無法啟動,下面是誤刪/boot檔案後的恢復步驟(本實驗模擬/boot下的全部檔案被刪除)

1、刪除/boot/下的全部檔案

2、重啟系統

3、此時開機後會直接進入grub命令列中

因為我們刪除了/boot下的全部檔案,包括核心和開機引導檔案,所以在grub命令列中沒辦法修復,必須進入救援模式

一:進入救援模式

1、從光碟啟動系統

選擇Rescue installed system,進入安全模式,回車

2、選擇語言型別及鍵盤佈局,保持預設即可,回車

3、詢問是否啟用網路,選擇no,不啟用網路(如果需要遠端,則選擇yes,並配置網路)

4、提示掛載到了/mnt/sysimages目錄下

選擇Continue,繼續進行下一步,提示需切換磁碟根目錄到/mnt//sysimages,回車選擇OK

5、選擇啟動shell模式,回車,進入shell模式

二:安裝核心及grub載入程式

1、切換磁碟根目錄

# choot /mnt/sysimages

2、掛載光碟到/media

# mout /dev/sr0 /media

3、安裝kernel軟體包

# rpm -ivh /media/Packages/kernel-2.6.32-696.el6.x86_64.rpm --force

注意:安裝kernel軟體時,會提示軟體已經安裝,所有我們應該使用--force選項,強制安裝

4、切換到/boot目錄下,檢視檔案

# cd /boot ; ls

可以看見,核心檔案已經還原,但是還缺少grub引導檔案

5、安裝grub檔案

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

--root-directory <<<指定root目錄所在的父目錄,即根目錄

/dev/sda <<<指定在哪個裝置上安裝grub,因為我們的boot分割槽在/dev/sda中,所有安裝在/dev/sda上

# ls /boot/grub/

可以看見grub檔案已經基本安裝完畢,但是還缺少grub.conf,該檔案可以從其他的伺服器匯入或者手動編輯

手動編輯grub.cfg檔案:

# vim /boot/grub/grub.conf

說明:root (hd0,0) <<<指的是核心所在的磁碟分割槽,(hd0,0)表示0號磁碟的第一個分割槽,即/dev/sda1,(hd0,1)表示第二個分割槽。

6、exit退出,並重新啟動系統

 

因boot分割槽損壞而無法啟動系統

說明:按上述方法從光碟啟動進入救援模式,選擇shell模式並切換系統根目錄,到此為止此步驟與上述步驟相同

1、判斷原因

# df -h

可以看見boot並沒有成功掛載

# mount -a

重新嘗試掛載/boot分割槽

分割槽掛載失敗

# lsblk && blkid

可以看見lsblk分割槽存在,但是無法識別檔案系統,所有可以初步判斷是檔案系統損壞導致boot分割槽無法掛載

2、修復檔案系統

執行命令,修復檔案系統

# fsck -y /dev/sda1 

檢視檔案系統是否修復成功

# blkid

可以看見/dev/sda1分割槽的檔案系統已經成功被識別

# mount -a

# df -h

再次重新掛載,並檢視分割槽是否掛載成功

可以看見分割槽已經成功掛載,boot分割槽檔案系統成功修復,接下來檢視boot分割槽的檔案是否完整,如果boot分割槽的檔案出現丟失,則可以按照第一部分的內容重新生成,進行修復。

系統盤MBR損壞修復

進入救援模式,切換系統根目錄,進入gurb

grub> root (hd0,0)

grub> setup (hd0)

grub> exit

重啟系統

 

CentOS 7 grub損壞及fstab檔案丟失

刪除fstab檔案和/boot/所有檔案

重新啟動,進入安全模式

選擇1繼續,系統會自動讀取/etc/fstab檔案中的內容,自動掛載分割槽

此時出現下圖報錯資訊,提示沒有任何的Linux分割槽,那麼需要我們手動進行掛載,在此之前,也沒辦法切換根目錄

按回車繼續

進入shell之後,先判斷分割槽是標準分割槽還是LVM邏輯卷

如上圖所示,系統盤是基於LVM邏輯捲進行安裝的,那麼就可以判斷一定會有一個基於標準分割槽的/boot/分割槽,且boot分割槽大小一般為200M~1G,則我們大致可以判讀sda1是boot分割槽,sda2裡面則是邏輯卷

掛載boot分割槽,發現裡面內容為空,則說明該分割槽檔案已經丟失,重新安裝grub和核心檔案(可以先嚐試修復檔案系統,看是否可以恢復)

# vgchange -ay <<<啟用邏輯卷

# fdisk -l

可以看到兩個邏輯卷,根據名稱和大小判斷,一個為交換分割槽,一個為根分割槽,嘗試掛載/dev/mapper/centos-root目錄到/mnt

# mount /dev/mapper/centos-root /mnt

# ls /mnt

可以看見上述檔案,可以確定是根分割槽

切換根目錄

# chroot /mnt

檢視/etc/fstab(應該是不存在或為空)

# vim /etc/fstab <<<寫入下面的內容

/dev/mapper/centos-root / xfs defaults 0 0

儲存並退出

# exit

# exit

然後重新進入安全模式

可以看到,報錯已經消失,分割槽已經成功掛載。

接下來我們需要按照上面的提示,切換根目錄

# chroot /mnt/sysimage

檢視boot目錄,發現裡面內容為空,我們需要重新生成boot目錄下的檔案

# ls /boot

掛載光碟映象到/mnt

# mount /dev/sr0 /mnt

重新安裝centos核心

# rpm -ivh /mnt/Packages/kernel-3.10.0-327.el7.x86_64.rpm --froce

注:不使用--force選項,會提示核心已經安裝,安裝不會進行

可以看到核心檔案已經生成,但是缺少grub

安裝grub

# grub2-install  --root-directory  /  /dev/sda

# ls /boot/grub2

Grub安裝完成,但是還缺少grub配置檔案,生成grub的配置檔案

# grub2-mkconfig  -o  /boot/grub2/grub.cfg

檢視配置檔案是否生成,退出,重啟系統

# sync

# exit

# exit

現在系統應該可以正常啟動了,但是我們在/etc/fstab中只寫了掛載根目錄的命令,所以接下來還需要找到分割槽,將分割槽掛載到對應的目錄中,並寫入fstab檔案

相關文章