解包/重新打包 initrd 文件
动机:修改启动Logo
首先使用 binwalk 查看 initrd 文件的打包方式。
一种情况是整个文件是一个压缩文件,解压缩后是一个 cpio 归档文件。
另一种情况是文件分为两部分,开头是 cpio 归档文件,后面的部分是压缩文件(解压后也是 cpio 归档文件)。
压缩和解压缩根据压缩算法的类型使用相应的命令,此处以 lz4 为例。
情况一
1 2 3 4 5 6 7 8 9 10 11 12
| mkdir initrd_output mkdir initrd_new
cd initrd_output
lz4 -dc ../initrd.img | cpio -id
find . | cpio -o -H newc | lz4 -l9 > ../initrd_new/initrd.img
|
情况二
使用 binwalk initrd.img
查看两部分内容的边界:
![截图](/usr/uploads/2024/04/3068842815.png)
本例中压缩文件的偏移值为 6906880 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| mkdir initrd_output mkdir initrd_new
cd initrd_output
cat ../initrd.img | cpio -id
mkdir rootfs cd rootfs dd if=../../initrd.img bs=6906880 skip=1 | lz4 -dc | cpio -id --no-absolute-filenames
cd .. find kernel/ | cpio -o -H newc > ../initrd_new/initrd.img
cd rootfs find . | cpio -o -H newc | lz4 -l9 >> ../../initrd_new/initrd.img
|
制作U盘启动盘
1 2 3 4
| fdisk -l umount /dev/sda* mkfs.vfat /dev/sda -I dd if=xxx.iso of=/dev/sda
|
apt 查看安装包信息
1 2 3 4
| apt list --installed apt show xxx apt-cache showpkg xxx dpkg -L xxx
|
解包/重新打包 deb 安装包
1 2 3 4 5
| dpkg -x xxx.deb output cd output dpkg -e ../xxx.deb cd .. dpkg -b output xxx.deb
|