如何恢復意外刪除的 initrd 映像?

如何恢復意外刪除的 initrd 映像?

我不小心刪除了系統上的 initrd 映像。我該如何恢復它?

答案1

這是原始問題的答案,即如何從 Live CD 中提取 initrd.lz,通常在製作自訂 Live CD 時使用。

將 initrd.lz 複製到工作目錄 ( ~)

cp /media/cdrom/initrd.lz ~

建立一個目錄來提取內容,我將使用initrdcd 進入該目錄

mkdir ~/initrd
cd ~/initrd

提煉

lzma -dc -S .lz ../initrd.lz | cpio -imvd --no-absolute-filenames

進行您可能需要的任何更改,重新打包

cd ~/initrd
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../cusotm.initrd.lz

您的新 initrd 將位於您的主目錄中並名為cusotm.initrd.lz

答案2

每個核心的 initrd 映像是在核心安裝時從電腦上的模組和應用程式建構的。您可以使用以下命令簡單地建立缺少的 initrd:

update-initramfs -c -k <version>

(請記住替換為適合您的核心的版本。)

答案3

這是解決評論中發布的OP問題的更好方法。

我正在嘗試在我的 ubuntu 安裝上使用 livecd 中的 initrd 。不小心刪了。 ——比諾伊·巴布

要製作 initramfs,請先啟動備用核心(較舊的核心也可以)。

然後運行

sudo mkinitramfs 3.2.0-15-generic-pae -o /boot/initrd.img-3.2.0-15-generic-pae

我沒有安裝 pae 內核,如果“3.2.0-15-generic-pae”不起作用,請列出內容以/lib/modules獲取名稱:

ls /lib/modules

如果您沒有較舊的內核,您可以啟動 Live CD 並使用chroot

  1. 首先掛載您的根分割區:mount -t ext4 /dev/sdX /mnt。確保使用正確的分區名稱並輸入此命令。使用 等指令lsblk找出blkid正確的分區。

  2. [可選] 如果您有單獨的引導分割區安裝,接下來:mount -t ext4 /dev/sdY /mnt/boot

  3. 接下來綁定掛載該指令所需的所有虛擬檔案系統mkinitramfs... mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys mount --bind /dev /dev/proc

  4. 現在切換到該/mnt資料夾並運行mkinitramfs上述命令。

相關內容