由於 lvmetad,Ubuntu 無法啟動

由於 lvmetad,Ubuntu 無法啟動

我按照本教程安裝了 Ubuntu 15.10:

https://web.archive.org/web/20180530122126/http://thesimplecomputer.info/full-disk-encryption-with-ubuntu

重新啟動電腦後,我進入 grub 選單並選擇 Ubuntu。不久之後我收到了這個錯誤:

/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.

這些訊息每秒都會在黑屏上不斷增加。過了一會兒,我就可以訪問initramfsash 控制台了。

我究竟做錯了什麼?

答案1

我今天在運行 Ubuntu 15.10 的筆記型電腦上看到了同樣的錯誤,我一直保持最新狀態,但一個月沒有重新啟動,直到我想測試當前的核心(即,可能有最近的更改)。

無論如何,我發現在我的情況下,根本原因實際上是由於遵循上述教程時的設置故障而導致的“丟失”交換分區。如果是這種情況和/或您實際上正在使用lvm,您也許可以跳過下面的步驟 2。當然,如果您的系統(或輔助資料)分割區已損壞或無法找到,您也可能會看到上述錯誤訊息(請參閱步驟 3)。

第 1 步:依照上述教學安裝系統、引導分割區

假設您的(ext2)啟動分割區是 /dev/sdX1,您的(加密)交換分割區是 /dev/sdX2,您的(加密)資料分割區是 /dev/sdX3 並且您已使用 成功解密後者cryptsetup luksOpen /dev/sdX3 data,然後安裝它:mkdir /tmp/data; mount /dev/mapper/data /tmp/data

請注意教程中的綁定掛載,並確保掛載 /dev/sdX1 ,以便您可以從系統分割區的 /boot 目錄存取它(這很重要,因為我們必須執行update-initramfs)。

在下文中,我們假設您已成功執行chroot /tmp/data/@ubuntu1510(或無論您安裝的系統分割區稱為什麼)

第 2 步:消除上述錯誤訊息

我正在使用 btrfs(您可能已經從提到的子卷名稱中猜到了),因此可以輕鬆地禁用 lvmetad,如下所示,而不會丟失功能:

  • 編輯 /etc/lvm/lvm.conf 並更改use_lvmetad=1use_lvmetad=0
  • 執行update-initramfs -k $(uname -r) -u ; sync

現在輪到你可以重新啟動,錯誤訊息應該會消失。然而,就我而言,下一條錯誤訊息[1]向我指出了上面提到的根本問題,所以當我們這樣做時,...

步驟 3:確保 /etc/crypttab 指向正確的、未損壞的分區

首先,運行sfdisk --list /dev/sdX並檢查您的加密交換分割區(在我的例子中為 /dev/sdX2)是否確實如此不是顯示為(普通)交換分割區。如果確實如此(如我的情況),這意味著啟動(例如使用救援磁碟)可能會利用可用的交換分割區,從而覆蓋與 cryptsetup 相關的元資料(關鍵字和 UUID)。

接下來,請查看 /dev/disk/by-uuid 並將加密分割區的對應 UUID 與 /etc/crypttab 中包含的 UUID 進行比較。我現在的猜測是:就你的情況而言,存在不匹配。

如果在 /dev/disk/by-uuid 下面找不到專用的加密交換分割區,那是因為您的救援系統目前正在使用它。在這種情況下,請執行以下操作:

  • 確保停止使用該分區:swapoff -a
  • 重新格式化它:(mkfs.ext2 /dev/sdX2這是至關重要的,特別是在使用 GPT 分割區 [2] 時,因為它消除了我之前提到的故障。分割區在 sfdisk 清單中顯示為“swap”類型的可能原因是您/我mkswap /dev/sdX2在開始設定分割區時錯誤地使用了分割區。
  • 按照教程加密分割區並設定密碼;之後,使用 cryptsetup 打開它並正確重新格式化現已解密分區(使用類似的東西mkswap /dev/mapper/swap
  • 確保sfdisk --list /dev/sdX不會識別交換分區(在這種情況下,請重複最後的步驟)

現在,重新檢查 /etc/crypttab 中列出的 UUID 是否與您在 /dev/disk/by-uuid 下方看到的對應加密分割區一致。

同樣,要使變更永久生效,您必須update-initramfs按如上所示執行。

如果您滿意,請確保所有內容都已寫入磁碟並重新啟動系統(無需手動卸載所有內容)。之後,您的問題應該就消失了。

[1] 也許我第一次沒有註意,或者第一個錯誤訊息「掩蓋」了第二個錯誤訊息;即,只有在重新啟動後(使用use_lvmetad=0),我才會看到“閱讀所有物理卷。可能還要等...“(重複多次),然後是”警報! /dev/disk/by-uuid/... 不存在。」。(需要注意的是,update-initramfs還抱怨分區遺失。)

[2] 因為它們的類型是透過分析其內容推導出來的,並且最終不是由標誌/位元組指定的(這就是為什麼沒有簡單的方法,例如,使用 更改 GPT 檔案系統類型[g]parted。)

答案2

Failed to connect to lvmetad錯誤發生這種情況是因為磁碟 100% 已滿。要解決此問題,請從 USB 隨身碟啟動,安裝整個磁碟,刪除一些不需要的文件,然後重新啟動。我還重新安裝了引導系統 - 我不知道這是否有必要。

這些命令為我解決了問題,從 USB 驅動器啟動後從終端運行。我有帶有全驅動器加密的 Ubuntu 18.04 庫存版。 YMMV。

  1. 安裝驅動器:

    sudo cryptsetup luksOpen /dev/sda5 sda5_crypt
    sudo vgscan --mknodes
    sudo vgchange -ay
    sudo mount /dev/mapper/ubuntu--vg-root /mnt
    
  2. 刪除不需要的檔案(cd /mnt/home/your_username... rm ...

  3. (可能沒有必要)重新安裝引導系統:

    cd /mnt/
    sudo mount /dev/sda1 boot
    for d in dev sys proc run; do sudo mount --bind /$d $d; done
    sudo vi etc/crypttab # make sure first line uses "sda5_crypt"
    sudo chroot .
    update-grub
    grub-install /dev/sda
    update-initramfs -u -k all
    exit
    sudo umount dev sys proc run boot
    
  4. 解除安裝:

    cd /
    sudo umount /mnt
    sudo vgchange -an
    sudo cryptsetup close sda5_crypt
    
  5. 重啟:

    sudo reboot
    

答案3

Ubuntu 18.04.1 LTS 在這裡。它在無人看管的情況下運行了幾個月,但當我回來時,我發現鍵盤無法識別。當我重新啟動時,我收到「無法連線到 lvmetad」訊息以及有關無法取得「UEFI db 清單」的更多資訊。

我安裝時沒有磁碟加密。

UEFI 訊息令人擔憂,因為這是我第一次在 UEFI 電腦上安裝,所以我沒有經驗,而且坦白說,我仍然不知道它的用處。我的問題變得更加複雜,因為我在我的「/」、根、卷上使用了「lvm」。 (事實上,我已經忘記了我最初是如何做到這一點的!嘿。我老了。)

然而,當機器無法重新啟動時,我尋找了一個解決方案,但沒有找到任何明確的解決方案,但確實注意到a) 我的EFI 分區小於一個站點上建議的500MB,b) 我安排的單獨的/boot/ 分區for 可能是不相關且未使用的。我認為可能是無人值守的升級導致某些東西填滿了分配的空間。

我決定重新安裝——這有效,並且我的 /home/ 目錄結構不受干擾。我沒有檢查/etc/,但事先複製了它們[1],所以我可以稍後檢查。 /etc/ 確實很小。

我還刪除了 EFI 和 /boot/ 分割區並將其合併為一個更大的 EFI 分割區(>750MB)。

現在它重新啟動,但一條錯誤訊息閃爍得太快而無法閱讀,而且我沒有提供要啟動的 Linux 映像的啟動“選單”,而是直接啟動到 Ubuntu。我認為 grub 還需要做更多的工作來解決這個問題。但至少我的文件又回來了。

[1] 我從 USB 記憶棒啟動 Ubuntu 安裝,並選擇「嘗試」Ubuntu,這允許我在從桌面選擇「安裝」之前複製 etc 和 home。

答案4

無需從 USB 或其他裝置啟動系統。我遇到了同樣的問題和原因 - 因為磁碟 100% 已滿。下一個解決方案幫助了我。

  1. 重新啟動您的系統。使用 BIOS 時,快速按住 Shift 鍵,這將調出 GNU GRUB 選單。

  2. 按下“e”後編輯 Ubuntu 設定。在這個問題你可以找到螢幕。找到一個以“linux *”開頭的字串,如下所示:

    linux     /boot/vmlinuz-4-4.0-22-generic root=UUID=43ad24d3-e\
    c5b-44ee-a099-a88eb9520989 ro  quiet splash $vt_handoff
    

    刪除:

    ro  quiet splash $vt_handoff
    

    並添加:

    init=/bin/bash
    

    準備好後,按Ctrl+xF10啟動。

  3. 根分區以唯讀方式安裝。若要將其掛載為讀/寫,請輸入命令

    mount -o remount,rw /
    
  4. 找出哪裡出了問題:

    df -hT
    

相關內容