如何恢复意外删除的initrd映像?

我不小心删除了系统上的initrd映像。 我该如何恢复它?

这是原始问题的答案,如何从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

这是解决评论中发布的OP问题的更好方法

我正在尝试在我的ubuntu安装上使用liverd中的initrd。 意外删除了它。 – Binoy Babu

要创建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根分区: mount -t ext4 /dev/sdX /mnt 。 确保使用正确的分区名称并在此命令中键入。 使用lsblkblkid等命令查找正确的分区。

  2. [可选]如果你有一个单独的启动分区挂载下一个: mount -t ext4 /dev/sdY /mnt/boot

  3. 接下来绑定挂载makeinitramfs命令所需的所有虚拟文件系统… mount –bind / proc / mnt / proc mount –bind / sys / mnt / sys mount –bind / dev / dev / proc

  4. 现在切换到/mnt文件夹并运行makeinitramfs命令,如上所述。

每个内核的initrd映像都是在内核安装时从机器上的模块和应用程序构建的。 您可以使用以下命令简单地构建缺少的initrd:

 update-initramfs -c -k  

(记得要为你的内核替换适当的版本。)