1、背景
一臺執行在Esxi上面的VM重啟後報initramfs-xxx.img not found錯誤。
按任意鍵後出現以下錯誤。
之前在運維Centos7的時候解決過Kernel panic - not syncing : VFS: Unable to mount root fs on unknown-block(0.0)錯誤,以為按照之前的解決方案,重啟伺服器,按Esc進入選擇核心的介面,選擇中間的核心啟動伺服器就能解決問題(預設是選擇最上面的核心),沒想到還是同樣報initramfs-xxx.img not found錯誤。
然後嘗試選擇第三個核心,錯誤依舊。然後在核心選擇頁面按e嘗試進入Centos7安全模式,定位到ro 然後修改ro為rw,並新增sysroot=/bin/sh命令,按Ctrl+x命令進入安全模式,發現錯誤還是依舊。
2、解決方案
在解決initramfs-xxx.img not found錯誤前,需要先了解下initramfs作用。
2.1 initramfs模組作用
在Linux系統啟動過程中,initramfs(Initial RAM File System)是一種臨時的根檔案系統,用於在系統初始化期間掛載根檔案系統之前進行各種初始化操作。initramfs可以包含必需的驅動程式、二進位制檔案和指令碼等,以便在系統引導期間使用。
在Linux系統引導時,initramfs模組會被載入到記憶體中,其中包含了必要的檔案和驅動程式,用於在啟動階段執行各種任務,例如檢查檔案系統、載入模組、識別和掛載根檔案系統等。此外,initramfs模組還可以用於進行故障排除和修復系統錯誤,例如恢復損壞的檔案系統等。
總的來說,initramfs模組在Linux系統的引導過程中起著非常重要的作用,它提供了一個輕量級的臨時檔案系統,使得在系統初始化階段執行各種任務更加靈活、高效和可靠。
2.2 資料備份(可選)
在嘗試解決此錯誤前,為了保險起見,可以先備份當前VM資料(相當於建立了一個和報錯VM相同資料的VM)。
1)、資料盤新建目錄用於備份報錯VM
2)、將報錯VM的vmx、vmdk檔案複製到新建目錄下
3)、右鍵點選test115目錄下的monitor115.vmx進行虛擬機器註冊,然後等待複製任務完成,即可備份出一個一模一樣的VM。
注意 1:資料備份不是必選的,monitro115這臺VM是測試機器,沒有要求修復完成時間,因此留出時間進行資料備份,以防誤操導致機器徹底啟動不來。
注意 2:等待複製任務需要等待很長時間(monitor115這個VM是200G的SATA盤,複製用了將近4個小時),如果伺服器急需修復,請選擇其他方式進行VM的備份。
2.3 解決報錯
1)、修改VM配置,使得下次虛擬機器啟動時,強制進入BIOS設定介面
2)、使用CD光碟驅動啟動VM
開啟VM電源,進行BIOS介面,切到開機項(Boot),將光碟驅動(CD-ROM Drive)調整到硬碟驅動(Hard Drive)上面即可,然後F10儲存,退出BIOS設定。
3)、選擇“Troubleshooting”疑難雜症
4)、進入救援模式
如果以上操作正確,便可進入救援模式。
輸入1即可進入救援模式。
5)、 救援環境嘗試掛載linux根檔案系統到/mnt/sysimage
根據上圖提示,執行chroot /mnt/sysimage命令,切換至根目錄模式,確認initramfs-*.img檔案是否存在。
bash-4.2#chroot /mnt/sysimage bash-4.2#cd /boot bash-4.2#ls
6)、執行mount命令,將光碟機重新掛載至/mnt目錄,然後切換至系統軟體包所在目錄,列出kernel相關軟體包。
bash-4.2#mount /dev/cdrom /mnt/
rpm -ivh kernel-3.10.0-693.e17.x86_64.rpm --force --nodeps
8)、kernel軟體包重灌完成後,檢視/boot目錄下是否有新的initramfs檔案生成。
bash-4.2#exit bash-4.2#init 6
注意:不要忘了再把bios啟動順序再調整回去,優先載入硬碟。
參考:http://www.360doc.com/content/22/1020/09/79641151_1052432906.shtml
參考:https://www.cnblogs.com/Julien1021/p/16341423.html
參考:https://blog.csdn.net/weixin_43279032/article/details/120322514