抽取镜像
1.准备iso镜像,采用最新的ubuntu-16.04版本.
2.任意目录下创建工作目录,可以命名为livecd。
3.将iso拷贝到该目录下。
4.创建mnt目录,挂载iso镜像。
mkdir mnt
sudo mount -o loop ubuntu-16.04-desktop-amd64.iso mnt
5.抽取 iso 文件的内容到 extract-cd目录
mkdir extract-cd
sudo rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
6.抽取桌面系统(SquashFS文件系统)
sudo unsquashfs mnt/casper/filesystem.squashfs
sudo mv squashfs-root edit
到这一步,文件系统已经全部抽取完成。extract-cd目录下基本就是iso的目录结构。
是一个安装盘的结构,而edit中已经和安装后的文件系统布局。
所以我们后续将会在edit中进行修改。
修改系统
7.修改。修改选项很多,本人只是简单opt目录添加一个工具。
重生成镜像
9.重新生成安装文件列表manifest,以后的iso在安装时需要用。
$chmod +w extract-cd/casper/filesystem.manifest
10.用包管理工具查询当前的安装包(dkpg-query),这个和重新生成PE类似。把查询到的相关信息写入manifest。
$sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
exit
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop
11.重新生成文件系统
sudo rm extract-cd/casper/filesystem.squashfs
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs
12.重新生成md5校验
cd extract-cd
sudo rm md5sum.txt
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt
cd extract-cd/
$sudo rm -f md5sum.txt
$sudo genisoimage -D -joliet-long -L -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat -o ../test.iso ~/livecd/extract-cd