解決Ubuntu 16.04重啟錯誤:Kernel Panic — not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Yu-Cheng Hung
4 min readJan 24, 2020

--

引用: https://blog.csdn.net/tianzhaixing2013/article/details/79178495

午安各位讀者們新年快樂!鼠年行大運!筆者前陣子在執行將新舊VM做IP轉換的工作,而IP轉換完畢後,Ubuntu 16.04版的這個舊server需要重新啟動才能完全棄掉舊的IP而使用新的IP(不重啟的話它會同時佔著新舊IP),而Ubuntu 18.04則沒有這個問題,因此想當然耳,我就在Ubuntu 16.04版的舊server中下了重啟指令:

$ sudo reboot

結果就在重啟到一半時卡住並出現了以下的錯誤訊息(亦可參考首頁圖):

Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

於是又開始求助估狗大神,但在試了好幾篇文章的解法後始終無法解決我自己的問題,最後總算找到正確步驟順序,因此在這分享給跟我遇到一樣問題的朋友,希望能幫助到你們。

首先會出現這個錯誤有很高機率是你的/boot空間已經滿載了,因此為了能先進入系統內做清理,我們第一步需要先將VM的電源關閉,稍等一下再重新啟動電源,此時會進入Ubuntu開機選單,大概會長的像下圖,請選擇Advanced options for Ubuntu的選項:

進去後你會看到許多不同版本的內核清單,大概會如下圖所示,這時候就是很考驗人品的時候了,請選擇一個來開啟吧,記得不要選recovery mode:

如果你成功啟動並登入,那恭喜你成功一半了!接著用下列指令檢查容量狀況:

$ df -h

果然是boot滿了!既然如此,先用下列指令確定目前運作的內核版本:

$ uname -a

記好後,進入/boot資料夾,裡面會有各個不同版本的內核相依檔案,先手動刪除低於目前運作版本的相依檔案,直到/boot容量非100%為止。

記住這個步驟非常重要!原因是當/boot容量達100%時,不管你做什麼動作都是無效的,包含清除內核來騰出空間的動作也無法進行,因此我們必須先清出一點空間使得後續動作能產生效果。

接著執行以下指令修復一些損壞的內核:

$ sudo apt-get -f install

列出目前所有內核清單:

$ dpkg --list | grep linux-image

現在可以開始正式移除低版本的內核了:

$ sudo apt-get purge linux-image-xxxx-generic

或是:

$ sudo apt-get purge linux-image-extra-xxx-xx-generic

都移除完成後更新GRUB 2:

$ sudo update-grub2

最後,放心的執行重啟吧!相信可以正常地進入Ubuntu了!

$ sudo reboot

筆者在解決這個問題的時候關鍵點就是在手動清除/boot騰出空間和下載修復內核,倘若不做這個動作,不管如何purge都沒有效果,希望能幫助到大家,那就下次見囉,掰掰!

--

--