Ubuntu 在 16.04 核心上下降到 shell

Ubuntu 在 16.04 核心上下降到 shell

我幾個小時以來一直在解決一個問題:

將 Ubuntu 首先從 15.04 升級到 15.10,然後從 15.10 升級到 16.04 後,我無法使用新核心啟動。第二次升級後,我只剩下核心 4.4.0-36 和 3.16.0-33(沒有任何 4.2.x 的痕跡)。這讓我認為我從 15.10 升級到 16.04,同時仍在運行 3.16.0-33。這可能是我的問題的原因。

啟動時 (4.4.0-36),我得到:“警報!/dev/mapper/ubuntu--vg-root 不存在。正在進入 shell!”

使用 3.16.0-33 啟動效果很好。

我嘗試過的:

  • 重新安裝核心(4.4.0-36)。不用找了。
  • 在 busybox 中,我嘗試輸入“vgchange -ay”,但我無法管理:我的鍵盤在 busybox 中不起作用。
  • 安裝了 4.4.0-38。相同的結果。
  • 嘗試遵循中的說明http://pifuge.com/ubuntu/V0Wn-cant-find-lvm-root-dropped-back-to-initramfs但是,檔案 /usr/share/initramfs-tools/scripts/local-top/lvm2 不包含任何“modprobe -q”,之後我可以添加任何內容。

任何幫助將不勝感激!

華納

更多細節:

  • 運行 LVM2。它(顯然)已安裝。
  • 沒有多重啟動。只是Ubuntu。
  • 沒有加密(據我所知)
  • 奇怪的是,Busybox 不回應輸入。無論我如何啟動,這都是相同的(除非我運行 3.16.0-33,否則系統可以正常啟動)
  • 在進入 shell (busybox) 之前,它會嘗試掛載根目錄大約 20 次。這是它給出的輸出:

開始:運行根檔案系統 ... 開始:運行 /scripts/local-top ... lvmetad 尚未激活,在 sysinit 期間使用直接激活 無法找到已完成的邏輯卷“ubuntu-vg/root”。開始:運行 /scripts/local-premount ... 完成 開始:等待根文件系統 ... 開始:運行 /scripts/local-block ... lvmetad 尚未激活,在 sysinit 期間使用直接激活 無法找到邏輯卷“ubuntu -vg/root」完成。

(最後一個重複20次)

放棄等待 root 裝置。常見問題: Boot args (cat /proc/cmdline) 檢查 rootdelays (系統是否等待足夠長的時間?) 檢查 root=(系統是否等待了錯誤的裝置?) Missing moduels (cat /proc/modules: ls /dev) “警告!/dev/mapper/ubuntu--vg-root 不存在。正在進入shell!”

答案1

  • 將 grub.cfg“root=/dev/mapper/ubuntu--vg-root”更改為“root=UUID=XXXX”
  • 在 mountroot 之前的某處添加了“vgchange -a y”

基本上根本原因是檢查根時“/dev/mapper/ubuntu--vg-root”尚未完全準備好。在某種程度上,vgchange指令可以觸發lvm更新並顯示在/dev/mapper中。建議使用“UUID”而不是使用開發映射器名稱以使其更通用。

答案2

我最近安裝了 16.04 Ubuntu 伺服器,並在加密的 lvm 上使用 root 權限。它在內核 4.4.0-34 上啟動良好,但在 4.4.0-36 上我遇到了同樣的問題。重複有關 lvmetad 的訊息,然後落入 shell。作為解決方法,我聲明 4.4.0-34 為預設啟動選項並關閉了自動更新。因此,安裝 4.4.0-34 可能會幫助您獲得可用的 4.4 核心。我還沒有找到長期的解決方案。

相關內容