如何在 RHEL7 上重新打包 initramfs 映像?
How can I repack initramfs image on RHEL7?
在 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?
谢谢
包装与旧的 Red Hat Enterprise Linux (RHEL) 版本相同:
find . | cpio -o -H newc > ../initramfsFile
gzip -c ../initramfsFile > initramfsFils.img
当 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
在 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?
谢谢
包装与旧的 Red Hat Enterprise Linux (RHEL) 版本相同:
find . | cpio -o -H newc > ../initramfsFile
gzip -c ../initramfsFile > initramfsFils.img
当 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