解开 CDLinux 的iso映像文件
解开 CDLinux 的 iso 映像文件
一,使用解压软件解开 iso 映像文件
Windows 下使用 WinRAR,7z
CDLinux 下使用 7z,xarchiver
注意:只需要提取 {CDlinux,efi,isolinux 三个目录和 mkisofs.sh 打包脚本} 即可,其它文件不需要
二,使用 iso 专用软件提取需要的文件
Windows 下的 {UltraISO 软蝶通,PowerISO,IsoBuste} 等工具
CDLinux 下的 {ISO master} ISO 映像管理工具等
三,使用虚拟软件挂载 iso 后复制文件
Windows 下有众多虚拟光驱工具可以先挂载 iso 映像,再复制需要的文件
CDLinux 下可以使用以下方法挂载和卸载 iso 映像:
挂载:# mount -o loop test.iso /mnt
卸载:# umount /mnt
以上三种方法都能让你成功得到 iso 内的任何文件
CDLinux 操作系统的所有系统文件都存放在 "xxx-cdl.md" 模块,“xxx-cdl.tgz"模块,或"initrd" 模块之中,定制时真正需要提取的也就是这些文件。
解开 CDLinux 的模块包
一,查看一个文件的属性
Linux 下有个命令工具很好,就是 {file} 命令
用法:file filename
例子:file /usr/bin/axel 或 file wps-cdl.md
信息自然会显示出来,然后根据相关信息找到打开此文件的工具即可。
二,解包与打包 xxx-cdl.md 模块包
在 CDLinux 系统中,md 模块是以 squashfs-v4.3 工具打包的,对应的打包工具和解包工具在每个版本的 CDLinux 中都已经集成,无需额外安装。
解包 md 模块:# unsquashfs xxx-cdl.md
解开后会得到 squashfs-root 的目录,之后自由发挥...
打包 md 模块:# mksquashfs squashfs-root xxx-cdl.md
把 squashfs-root 目录打包成你想要的任何名字的 md 模块
注意:
- 打包 md 模块时间可能很长,取决于你的计算机硬件性能,同时也与打包文件的大小有关,文件越大,硬件性能越差,所需要的时间越长。
- mksquashfs 使用的是 xz 压缩,这种压缩工具的压缩比很高,比 7z 还高,一个 10G 的文件夹经过 squashfs 压缩后只有 3G 左右。
- CDLinux 集成的 squashfs 压缩工具的压缩比并不是最高的,如果有 20 级可选,CDLinux 默认的约为 18 级左右。同样的 400M 文件,老赵打包后只有 120M,使用 CDLinux 打包有 126M。
- 打包的 md 模块名不要重名,否则会出错。比如当前目录下有一个名为 web-cdl.md 的模块,再 mksquashfs squashfs-root web-cdl.md,那么生成的文件可能是损坏的。
- 打包与解包 md 模块以 root 权限运行,否则一些需要 root 权限才能操作的文件会导至打包失败。
三,解包与打包 xxx-cdl.tgz 模块包
使用 file xxx-cdl.tgz 可以看到它是 gzip 数据文件,它就是选 tar 再 gz 压缩后的压缩包
使用命令解包 tgz:# gzip -d wps-cdl.tgz && tar -xvf wps-cdl.tar
使用其它图形压缩工具,如:xarchiver 或 7z 直接解压
使用命令打包 tgz:# tar -zcvf wps-cdl.tgz wps
使用其它图形压缩工具,如:先用 xarchiver 把目录压缩成 tar 包,再一次用 xarchiver 把 tar 包压缩成 gz 包,最后重新命名为 wps-cdl.tgz
注意:使用命令行工具打包或解包时最好以 root 权限运行,防止某些需要 root 权限的文件无法读写而造成打包失败
四,解包与打包 initrd 模块包
在 CDLinux 系统中 initrd 模块也是由 squashfs 来压缩的
解包:# unsquashfs initrd
打包:# mksquashfs squashfs-root initrd
重新创建 CDLinux 的 iso 映像文件
一,使用 CDLinux 自带的 mkisofs.sh 脚本创建新的 iso 映像文件
假设通过上面的步骤你已经定制好了自己的操作系统,并且把对应的模块都放到了相应的目录,万事俱备,那么就可以最终打包生成新的 iso 映像文件。
在 iso 的根目录下面有个 mkisofs.sh 的脚本打包工具,是科学社基于“genisoimage” 和 “xorriso”的官方 wiki 而写的「混合打包脚本」“引用:官方已经给出了具体实例”,并且经过了大量实验,确实可行。此打包脚本支持 BIOS(依赖于 isolinux,见 iso 根目录下的 isolinux 目录)和 EFI 两种启动。
使用方法:# sh mkisofs.sh
注意事项:
1,此打包脚本工具依赖 {mkisofs,xorriso,isolinux} 三个工具,CDLinux2018 最新版已经全部集成,无需额外安装。但这之前的 CDLinux(2015-2017)版本只有 mkisofs,其余 2 个工具需要自行添加。
2,打包前需要先配置 mkisofs.sh 脚本内的参数,每一行都有详细说明,如果打包 CDLinux 系统,可以不用更换参数,默认已经配置好所有参数。
3,以 root 权限运行此脚本,否则可能会打包失败。
4,如果你用此打包工具打其它的发行版本,请在打包脚本中保留注释“# 此打包工具来自科学社定制的 CDLinux 操作系统”,以示对科学社原创的尊重。
5,打包的 iso 映像用 dd 写入 U 盘,会有两个分区,一个是 iso 只读格式,一个是 fat32 格式 EFI,这个分区是可读写的,注意不要误删,否则在 EFI 计算机上无法启动。
6,本打包脚本生成的 iso 映像不如老赵的打包效果好,老赵生成的 iso 有多个 efi 分区,且都是隐藏的,做得相当好,目前科学社没有找到这种打包方案,见 CDLinux2017,可以说在 2018 年末还没有哪个发行版能做到如此全面的启动兼容性。如果你有对应的方案,请联系科学社,以便在以后的新版本中使用,科学社也会尊重原创版权。