當遇到啟動失敗時,我看到系統出現 dracut 提示。
據我了解,dracut 用於產生 initramfs 的映像。我感到困惑的是,基於我正在使用一個名為“dracut”的 shell,它似乎不僅僅是一個用於生成 initramfs 的實用程序,但它實際上也是一個獨立的程序,啟動時運行。它是否正確? - 如果上述內容正確,那麼 initramfs 和 dracut 之間的差異/關係是什麼?
答案1
Dracut 既是用於產生 initramfs 實例的工具,而且還具有所謂的 dracut 緊急 shell。 initramfs 的目的是提供一個能夠尋找、載入並將執行傳遞給根檔案系統的環境。如果在此過程中任何時候出現問題,initramfs 將下降到 dracut 緊急 shell,為您提供調試/嘗試修復問題的機會。
關於評論:
「我很樂意這樣做。澄清一下,最初發生的情況是我有一個運行RHEL 的VMWare 虛擬機。由於將虛擬機直接導入VMWare Workstation 時出現問題,我決定將虛擬機的硬碟從ESXi 拉到新的虛擬機器上但是,當我嘗試啟動 VM 時,我能夠成功加載 GRUB 並隨後加載 dracut,但 dracut 無法找到根文件系統,這很奇怪,因為人們會期望如果 dracut 可以加載系統。 。
安裝 RHEL 時,dracut 會產生 initramfs 的實例,其中僅包含與安裝作業系統的硬體相容所需的驅動程式。當我將 RHEL 實例的硬碟從一組虛擬硬體上的 ESXi 移至 VMWare Workstation(另一組虛擬硬體)時,與核心關聯的 initramfs 不再具有尋找和載入根檔案系統所需的適當驅動程式集。
要解決此問題,在移動硬碟之前,您需要運行dracut --force --no-hostonly
.去引用https://fedoramagazine.org/initramfs-dracut-and-the-dracut-emergency-shell/
force 參數告訴 dracut 可以覆蓋現有的 initramfs 檔案。 no-hostonly 參數會覆寫僅包含與目前正在執行的電腦密切相關的驅動程式的預設行為,並導致 dracut 包含 initramfs 中的所有驅動程式。
這意味著 dracut 現在將變得“臃腫”,並且擁有移動硬碟時所需的所有適用驅動程式。完成硬碟的移動後,您必須重新執行 dracut 以dracut --force
重新產生 dracut 的輕量級版本。