挂载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,欢迎大神指点迷津

Last modification:April 13, 2020
如果觉得我的文章对你有用,请随意赞赏