
這是一個常見的場景。無論出於何種原因,initramfs(OpenSUSE,如果它很重要的話)都無法找到根檔案系統,因此它會讓您進入救援 shell。我非常清楚需要安裝什麼設備。我的問題:
掛載根檔案系統並繼續啟動順序的正確步驟是什麼?
大概這就是全部觀點救援控制台。然而,似乎沒有人記錄過你實際上是如何做到這一點的。
顯然我可以在某個地方安裝根檔案系統。但我怎麼能做到這一點根檔案系統樹的?現在我要繼續正常的啟動過程嗎? (我以為只要退出 shell 就可以了...但事實並非如此。)在繼續之前您到底需要安裝什麼,以及如何繼續?
答案1
執行 switch_root /mnt/root /sbin/init
答案2
這取決於問題的類型,如果問題在於 initramfs 映像本身,那麼您需要實際重新產生它(執行 update-initramfs)來修復問題。請記住,initramfs 檔案系統是 RAM 檔案系統,因此要修復任何問題,您需要修復壓縮的 initramfs 映像和/或修復根檔案系統。
我在 LUKS encrptyed Ubuntu 系統上使用了以下過程,以恢復因錯誤 crypttab 而損壞的啟動。
首先,我解密了分割區
cryptsetup luksOpen /dev/nvme0n1p3 nvme0n1p3_crypt
請注意,這device_crypt
不是隨機的。它需要與系統安裝時通常使用的名稱相符(分區 + _crypt 似乎是標準的)。
接下來,您需要啟動該現已解密的分割區上的磁碟區組。
vgchange -ay
現在,您可以嘗試掛載檔案系統、/、/boot、proc、swap 等,並以此方式運作。
儘管就我而言,我所要做的就是輸入 exit,initramfs 會看到邏輯磁碟區放在那裡並愉快地恢復啟動。那時很容易修復損壞並運行update-initramfs -u
答案3
只需運行fsck
不帶選項的命令,initramfs
然後重新啟動
例如:根分區是sda3
fsck /dev/sda3
答案4
正常程序是
- 掛載 /dev/sdX /mnt
- 修復 /mnt 上的問題
- 重啟
你可能想要
- 掛載 /dev/sdX /mnt
- 修復/mnt
- 卸載/mnt
- 掛載/dev/sdX/
- 手動完成啟動
不建議這樣做,您必須在每次啟動時執行此操作。在生產環境中,您無法確保手動啟動遵循與自動啟動相同的步驟。
然而,在涉及關鍵數據的緊急情況下,第 5 步通常可歸結為:
- 5.1 設定網絡
- 5.2 將重要文件複製到安全的地方