挂载ISO,复制出需要的文件
mkdir ~/ISOBUILD
mount -o loop ubuntu-mini-remix-16.04-amd64.iso /media
cp -av /media/* ~/ISOBUILD
cp -av /media/.disk ~/ISOBUILD
rm -f ~/ISOBUILD/.disk/casper-uuid-generic
umount /media
intrd.lz 的解压重打包
mkdir ~/INITRD ; cd ~/INITRD
cp ~/ISOBUILD/casper/initrd.lz initrd.lzma
lzma -dkf initrd.lzma
cpio -idv initrd
rm -rf conf/uuid.conf
rm -rf initrd.lzma ; rm -rf initrd
sudo find | cpio -H newc -o | lzma > initrd.lz
cp initrd.lz ~/ISOBUILD/casper/initrd.lz
squashfs的重新封装
cd ~/
unsquashfs ~/ISOBUILD/casper/filesystem.squashfs
mount --bind /dev ~/squashfs-root/dev
mount -t proc proc ~/squashfs-root/proc
mount -t sys sys ~/squashfs-root/sys
chroot squashfs-root
各种自定义开始
...
定制结束
exit
mksquashfs squashfs-root ~/ISOBUILD/casper/filesystem-new.squashfs
mv ~/ISOBUILD/casper/filesystem.squashfs /~
mv ~/ISOBUILD/casper/filesystem-new.squashfs ~/ISOBUILD/casper/filesystem.squashfs
生成最终的ISO
mkisofs -R -J -l -V 'ubuntu-12.04-base-live' -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ~/ubuntu-12.04-base-live.iso ~/ISOBUILD
关键点
~/ISOBUILD/.disk/casper-uuid-generic
conf/uuid.conf
这两处一定要删除,不然启动的时候 initrd检测的UUID信息和这里定义的不一致,导致filesystem.squashfs挂载失败,肯定启动不了,这是很多网上的文章都没提到,有一点疑惑 还不知道这个UUID到底是谁的UUID,欢迎大神指点迷津