假设下载的桌面系统为ubuntu.iso。
一、进入iso并安装软件包
首先创建一个目录,如my-ubuntu,然后将ubuntu.iso挂载到这个目录上,或者不用挂载,直接解压也行,总之要能进入到iso里面去:
sudo mount -o loop /path/to/ubuntu.iso /home/it8343/my-ubuntu
然后cd到my-ubuntu这个目录中,通过tree命令找到filesystem.squashfs这个文件,将它拷贝到其它普通目录,并解压它:
sudo unsquashfs filesystem.squashfs
当然,你可能在此之前需要安装解压工具:
sudo apt-get install squashfs-tools
解压之后就可以得到一个有完整文件系统的子系统,我们可以直接使用chroot进入该系统:
sudo chroot squashfs-root
进入之后就可以在里面自定义安装/卸载软件包了,就和操作普通的Linux系统一样。
进入之后可能没有网络,你可能还需要配置dns或者IP等,视具体情况而定:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
二、重新生成iso文件
将修改后的文件夹重新压缩,并将压缩文件拷贝到iso的文件夹里面去替换原文件:
sudo mksquashfs squashfs-root/ filesystem.squashfs
然后更新iso文件夹里面的md5文件:
cd openkylin-0.9.5-x86_64/
find . -type f -print0 | xargs -0 md5sum | grep -v isolinux/boot.cat | tee md5sum.txt
最后就可以将目录重新压缩为iso文件,没有这个工具的也可以使用其它工具或者自行安装即可:
mkisofs -o ubuntu.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -V "Ubuntu 20.04.2 LTS amd64" ./openkylin-0.9.5-x86_64
这个命令使用
-o
选项指定输出的ISO文件名为
ubuntu.iso
。
-b isolinux/isolinux.bin
选项指定启动扇区的引导程序文件。
-c isolinux/boot.cat
选项指定引导目录的引导表。
-no-emul-boot
选项指定使用硬盘的启动方式。
-boot-load-size 4
选项指定引导程序的加载大小为4扇区。
-boot-info-table
选项指定生成引导信息表。
-R
和
-J
选项分别指定使用Rock Ridge和Joliet文件系统格式。
-V "Ubuntu 20.04.2 LTS amd64"
选项指定卷标。最后的路径表示将镜像目录下的所有文件都添加到ISO中。
使用vm虚拟机可以直接安装这个iso镜像来进行安装系统。
效果如下:
我在镜像当中安装了d-feet,直接打开就能用