如何在RHEL7上重新打包initramfs映像?

时间:2019-11-07 09:03:15

标签: redhat rhel7 cpio initramfs

在RHEL 7上,initramfs图像文件格式已更改。要解压缩映像,需要skipcpio。例如

/usr/lib/dracut/skipcpio /boot/initramfs-3.10.0-957.el7.x86_64.img | gunzip -c | cpio -idmv

我使用上面的命令成功解压缩了映像,但是无法将其打包。 旧的方式(就像在RHEL 6上一样)不起作用(

find . | cpio -o -c | gzip -9 > /boot/new.img

是否可以将图像重新打包到RHEL7上?

谢谢

2 个答案:

答案 0 :(得分:1)

当RHEL7以更复杂的方式打包.img文件时,我得到了一个解决方案。 https://ahelpme.com/linux/tips/unpack-centos-7-initramfs-file-with-and-without-dracut-skipcpio/中描述了其结构的提示,但是没有修改后重新包装的说明。在这里,我显示了整个过程:

cd /tmp
rm -f tryMe.img
rm -f initramfs-tmp.img
rm -rf cc
rm -f modified.gz
mkdir cc
cd cc
cat /boot/initramfs-3.10.0-1062.4.1.el7.x86_64.img | cpio -idmv # note number of blocks in 
                                                                # output; I assume 4976
find . | cpio -o -H newc > /tmp/tryMe.img
rm -rf *
dd if=/boot/initramfs-3.10.0-1062.4.1.el7.x86_64.img of=../initramfs-tmp.img bs=512 skip=4976
zcat ../initramfs-tmp.img | cpio -idm
find . | cpio --create --format='newc' > /tmp/modified
gzip -9 /tmp/modified
cat /tmp/modified.gz >> /tmp/tryMe.img
#backup your original somehow and then
mv /tmp/tryMe.img /boot/initramfs-3.10.0-1062.4.1.el7.x86_64.img

答案 1 :(得分:0)

包装与旧的Red Hat Enterprise Linux(RHEL)版本相同:

find . | cpio -o -H newc > ../initramfsFile

gzip -c ../initramfsFile > initramfsFils.img