initramfs.img.gz根文件的修改和重新打包@[initramfs, Kernel, Centos7, Linux]
做个记录:
可能文件是img后缀, 修改为.gz后缀,也可能一开始就是.gz后缀:
-
如果是img文件,可以先重命名为gz文件:
mv initramfs.img initramfs.gz -
解压gz: 使用命令: gunzip initramfs.gz
[root@c2 temp]# gunzip initramfs.img.gz
- 解压initramfs.img文件:
查看解压后的文件格式,看到是cpio压缩文件:
[root@c2 temp]# file initramfs.img
initramfs.img: ASCII cpio archive (SVR4 with no CRC)
这时候就可以直接cpio解压:
[root@c2 temp]# cpio -idmv < initramfs.img
.
bin
bin/busybox
init
rootfs.tar.xz
1125194 blocks
以上看到解压后的文件结构,可以看到rootfs.tar.xz:
.
bin
bin/busybox
init
rootfs.tar.xz
1125194 blocks
rootfs.tar.xz就是xz和tar打包好的根目录文件:
- 解压rootfs.tar.xz后,就可以根据自己的需求修改根目录文件:
以下将解压rootfs.tar.xz, 对文件做修改,再重新打包成rootfs.tar.xz:
a) 将rootfs.tar.xz 拷贝到另外创建好的目录, 运行tar xvJf rootfs.tar.xz 解压rootfs文件:[root@c2 rootfs]# tar -xvJf rootfs.tar.xz
``
b) 根据自己实际需求修改,配置文件:
c) 重新打包成rootfs.tar.xz, 使用命令:tar -Jcvf rootfs.tar.xz *
[root@c2 rootfs]# tar -Jcvf rootfs.tar.xz *
-
重新打包好rootfs.tar.xz后,把rootfs.tar.xz拷贝回initramfs.img解压后的目录中;
-
再使用cpio和gzip重新打包好:
find . | cpio -o -H newc | gzip -9 > …/initramfs_new.img.gz
这样就完成了initramfs的更新。