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