
我不小心刪除了系統上的 initrd 映像。我該如何恢復它?
答案1
這是原始問題的答案,即如何從 Live CD 中提取 initrd.lz,通常在製作自訂 Live CD 時使用。
將 initrd.lz 複製到工作目錄 ( ~
)
cp /media/cdrom/initrd.lz ~
建立一個目錄來提取內容,我將使用initrd
cd 進入該目錄
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
:
首先掛載您的根分割區:
mount -t ext4 /dev/sdX /mnt
。確保使用正確的分區名稱並輸入此命令。使用 等指令lsblk
找出blkid
正確的分區。[可選] 如果您有單獨的引導分割區安裝,接下來:
mount -t ext4 /dev/sdY /mnt/boot
接下來綁定掛載該指令所需的所有虛擬檔案系統
mkinitramfs
... mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys mount --bind /dev /dev/proc現在切換到該
/mnt
資料夾並運行mkinitramfs
上述命令。