1、背景
一臺運行在Esxi上面的VM重啟后報initramfs-xxx.img not found錯誤。
按任意鍵后出現(xiàn)以下錯誤。
之前在運維Centos7的時候解決過Kernel panic - not syncing : VFS: Unable to mount root fs on unknown-block(0.0)錯誤,以為按照之前的解決方案,重啟服務(wù)器,按Esc進入選擇內(nèi)核的界面,選擇中間的內(nèi)核啟動服務(wù)器就能解決問題(默認是選擇最上面的內(nèi)核),沒想到還是同樣報initramfs-xxx.img not found錯誤。
然后嘗試選擇第三個內(nèi)核,錯誤依舊。然后在內(nèi)核選擇頁面按e嘗試進入Centos7安全模式,定位到ro 然后修改ro為rw,并添加sysroot=/bin/sh命令,按Ctrl+x命令進入安全模式,發(fā)現(xiàn)錯誤還是依舊。
2、解決方案
在解決initramfs-xxx.img not found錯誤前,需要先了解下initramfs作用。
2.1?initramfs模塊作用
在Linux系統(tǒng)啟動過程中,initramfs(Initial RAM File System)是一種臨時的根文件系統(tǒng),用于在系統(tǒng)初始化期間掛載根文件系統(tǒng)之前進行各種初始化操作。initramfs可以包含必需的驅(qū)動程序、二進制文件和腳本等,以便在系統(tǒng)引導(dǎo)期間使用。
在Linux系統(tǒng)引導(dǎo)時,initramfs模塊會被加載到內(nèi)存中,其中包含了必要的文件和驅(qū)動程序,用于在啟動階段執(zhí)行各種任務(wù),例如檢查文件系統(tǒng)、加載模塊、識別和掛載根文件系統(tǒng)等。此外,initramfs模塊還可以用于進行故障排除和修復(fù)系統(tǒng)錯誤,例如恢復(fù)損壞的文件系統(tǒng)等。
總的來說,initramfs模塊在Linux系統(tǒng)的引導(dǎo)過程中起著非常重要的作用,它提供了一個輕量級的臨時文件系統(tǒng),使得在系統(tǒng)初始化階段執(zhí)行各種任務(wù)更加靈活、高效和可靠。
2.2 數(shù)據(jù)備份(可選)
在嘗試解決此錯誤前,為了保險起見,可以先備份當(dāng)前VM數(shù)據(jù)(相當(dāng)于創(chuàng)建了一個和報錯VM相同數(shù)據(jù)的VM)。
1)、數(shù)據(jù)盤新建目錄用于備份報錯VM
?2)、將報錯VM的vmx、vmdk文件拷貝到新建目錄下
?3)、右鍵點擊test115目錄下的monitor115.vmx進行虛擬機注冊,然后等待拷貝任務(wù)完成,即可備份出一個一模一樣的VM。
注意 1:數(shù)據(jù)備份不是必選的,monitro115這臺VM是測試機器,沒有要求修復(fù)完成時間,因此留出時間進行數(shù)據(jù)備份,以防誤操導(dǎo)致機器徹底啟動不來。
注意 2:等待拷貝任務(wù)需要等待很長時間(monitor115這個VM是200G的SATA盤,拷貝用了將近4個小時),如果服務(wù)器急需修復(fù),請選擇其他方式進行VM的備份。
?2.3 解決報錯
1)、修改VM配置,使得下次虛擬機啟動時,強制進入BIOS設(shè)置界面
?2)、使用CD光盤驅(qū)動啟動VM
打開VM電源,進行BIOS界面,切到開機項(Boot),將光盤驅(qū)動(CD-ROM Drive)調(diào)整到硬盤驅(qū)動(Hard Drive)上面即可,然后F10保存,退出BIOS設(shè)置。
?3)、選擇“Troubleshooting”疑難雜癥
4)、進入救援模式
如果以上操作正確,便可進入救援模式。
輸入1即可進入救援模式。
5)、?救援環(huán)境嘗試掛載linux根文件系統(tǒng)到/mnt/sysimage
根據(jù)上圖提示,執(zhí)行chroot /mnt/sysimage命令,切換至根目錄模式,確認initramfs-*.img文件是否存在。
bash-4.2#chroot /mnt/sysimage bash-4.2#cd /boot bash-4.2#ls
?6)、執(zhí)行mount命令,將光驅(qū)重新掛載至/mnt目錄,然后切換至系統(tǒng)軟件包所在目錄,列出kernel相關(guān)軟件包。
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啟動順序再調(diào)整回去,優(yōu)先加載硬盤。
參考: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