如何恢复意外删除的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
:
-
首先
mount -t ext4 /dev/sdX /mnt
根分区:mount -t ext4 /dev/sdX /mnt
。 确保使用正确的分区名称并在此命令中键入。 使用lsblk
,blkid
等命令查找正确的分区。 -
[可选]如果你有一个单独的启动分区挂载下一个:
mount -t ext4 /dev/sdY /mnt/boot
-
接下来绑定挂载
makeinitramfs
命令所需的所有虚拟文件系统… mount –bind / proc / mnt / proc mount –bind / sys / mnt / sys mount –bind / dev / dev / proc -
现在切换到
/mnt
文件夹并运行makeinitramfs
命令,如上所述。
每个内核的initrd映像都是在内核安装时从机器上的模块和应用程序构建的。 您可以使用以下命令简单地构建缺少的initrd:
update-initramfs -c -k
(记得要为你的内核替换适当的版本。)