1. 准备工作
- 从官网下载目标版本ubuntu。测试时使用的是
ubuntu-16.04.3-desktop-amd64.iso
文件 - 安装squash文件系统相关的压缩和解压缩工具:
sudo apt-get install squashfs-tools
2. 解压iso文件
- 创建工作目录
mkdir foo newiso
- 挂载iso文件
sudo mount ubuntu-16.04.3-desktop-amd64.iso foo/
- 拷贝文件内容
cp foo/. newiso/ -va
- 卸载iso
sudo umount foo/
3. 解压filesystem.squashfs文件
cd newiso
sudo unsquashfs casper/filesystem.squashfs
sudo mv squashfs-root ../
4. 切换文件系统
- 拷贝主机DNS配置
cp /etc/resolv.conf squashfs-root/etc
- 使用chroot进入新系统
sudo chroot squashfs-root
- 挂载proc文件系统
mount none /proc -t proc
5. 个性化定制
-
安装软件: 使用安装包安装或apt安装均可
-
修改系统配置:直接修改对应的配置文件后,保存即可
-
退出临时根文件系统
exit
6. 压缩新的文件系统
- 重新生成manifest
chmod +w newiso/casper/filesystem.manifest
sudo chroot squashfs-root dpkg-query -W --showformat='${Package} ${Version}\n' > newiso/casper/filesystem.manifest
exit
sudo cp newiso/casper/filesystem.manifest newiso/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' newiso/casper/filesystem.manifest-desktop
sudo sed -i '/casper/d' newiso/casper/filesystem.manifest-desktop
- 压缩文件系统
sudo rm newiso/casper/filesystem.squashfs
sudo mksquashfs squashfs-root newiso/casper/filesystem.squashfs
- 生成md5校验文件
cd newiso
sudo rm md5sum.txt
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt
- 生成iso文件
sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-16.04.3-desktop-amd64-custom.iso .