基于squashfs文件系统的liveCD内容修改
squashfs文件系统简介
SquashFS是一套基于Linux内核使用的压缩只读文件系统。该文件系统能够压缩系统内的文档,inode以及目录,文件最大支持2^64字节。常用到嵌入式linux系统中,SquashFS可以将整个文件系统压缩在一起,存放在某个设备,某个分区或者普通的文件中。如果将其压缩到一个设备中,那么可以将其直接 mount 起来使用,而如果它仅仅是个文件的话,可以将其当为一个 loopback 设备使用。
软件环境
- 操作系统:fedora31
- 相关工具:squashfs-tools
- 目标系统:fedora19 livecd
操作流程
以fedroa19 livecd为例
- 将fedora19 livecd挂载到系统。
- 使用命令blkid查看iso LABEL信息并记录,如:fedora19 LABEL为:Fedora-Live-Desktop-i686-19-1,如iso无法挂载可以使用isoinfo命令查看相应信息。
- 将iso中所有内容复制出来,如复制到$HOME/iso目录下,后续步骤以此目录为主。
- 进入$HOME/iso/LiveOS目录中,使用命令
unsquashfs squashfs.img
将squashfs.img解压,解压后得到squashfs-root。目录结构:squashfs-root/LiveOS/ext3fs.img。 - 挂载解压得到的ext3fs.img,如:将img文件挂载到 $HOME/rootfs目录下:进入LiveOS目录,执行
mount –o loop,rw ext3fs.img $HOME/rootfs
,得到liveOS的内容。 - 进入rootfs目录,对liveOS进行修改,修改完毕后卸载ext3fs.img。
- 重新打包squashfs,mksquashfs squashfs-root squashfs.img。打包完成后,删除squashfs-root。
- 进入iso目录重新打包livecd。命令如下:
mkisofs -R -b isolinux/isolinux.bin -c isolinux/boot.cat -o /home/fedora/fedora.iso -V "fedora-19" -no-emul-boot -boot-load-size 4 -boot-info-table .
-o用来指定iso输出文件,-V指定iso的LABEL,此处LABEL必须为之前查到LABEL。如不一致可能会造成livecd不能启动。
执行以上命令时注意当前目录,可以根据实际情况修改修改命令