我按照本教程安裝了 Ubuntu 15.10:
重新啟動電腦後,我進入 grub 選單並選擇 Ubuntu。不久之後我收到了這個錯誤:
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
這些訊息每秒都會在黑屏上不斷增加。過了一會兒,我就可以訪問initramfs
ash 控制台了。
我究竟做錯了什麼?
答案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=1
為use_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。
安裝驅動器:
sudo cryptsetup luksOpen /dev/sda5 sda5_crypt sudo vgscan --mknodes sudo vgchange -ay sudo mount /dev/mapper/ubuntu--vg-root /mnt
刪除不需要的檔案(
cd /mnt/home/your_username
...rm ...
)(可能沒有必要)重新安裝引導系統:
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
解除安裝:
cd / sudo umount /mnt sudo vgchange -an sudo cryptsetup close sda5_crypt
重啟:
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% 已滿。下一個解決方案幫助了我。
重新啟動您的系統。使用 BIOS 時,快速按住 Shift 鍵,這將調出 GNU GRUB 選單。
按下“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+x或F10啟動。
根分區以唯讀方式安裝。若要將其掛載為讀/寫,請輸入命令
mount -o remount,rw /
找出哪裡出了問題:
df -hT