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