如何恢复意外删除的 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。不小心把它删除了。– 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。请确保使用正确的分区名称并输入此命令。使用诸如 等命令lsblkblkid查找正确的分区。

  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

相关内容