解开 CDLinux 的iso映像文件

Author Avatar
爱睡觉的奶牛 1月8日
  • 在其它设备中阅读本文章

解开 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 模块

注意:

  1. 打包 md 模块时间可能很长,取决于你的计算机硬件性能,同时也与打包文件的大小有关,文件越大,硬件性能越差,所需要的时间越长。
  2. mksquashfs 使用的是 xz 压缩,这种压缩工具的压缩比很高,比 7z 还高,一个 10G 的文件夹经过 squashfs 压缩后只有 3G 左右。
  3. CDLinux 集成的 squashfs 压缩工具的压缩比并不是最高的,如果有 20 级可选,CDLinux 默认的约为 18 级左右。同样的 400M 文件,老赵打包后只有 120M,使用 CDLinux 打包有 126M。
  4. 打包的 md 模块名不要重名,否则会出错。比如当前目录下有一个名为 web-cdl.md 的模块,再 mksquashfs squashfs-root web-cdl.md,那么生成的文件可能是损坏的。
  5. 打包与解包 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 年末还没有哪个发行版能做到如此全面的启动兼容性。如果你有对应的方案,请联系科学社,以便在以后的新版本中使用,科学社也会尊重原创版权。