~/iso_workspace/ ├── original_iso/ (mounted ISO contents) ├── extract-cd/ (copied ISO files) ├── squashfs-root/ (extracted filesystem) ├── custom_iso/ (new ISO staging) └── custom.iso (final output) 3.1 Extraction Phase Mount the official Ubuntu Desktop ISO (e.g., ubuntu-22.04.3-desktop-amd64.iso ) and copy its contents:
sudo umount ~/iso_workspace/squashfs-root/dev sudo umount ~/iso_workspace/squashfs-root/proc sudo umount ~/iso_workspace/squashfs-root/sys sudo mksquashfs ~/iso_workspace/squashfs-root ~/iso_workspace/extract-cd/casper/filesystem.squashfs -comp xz -b 1048576 -noappend Recalculate filesystem size for filesystem.size : ubuntu desktop iso
cd ~/iso_workspace/extract-cd sudo rm md5sum.txt find . -type f -not -name "md5sum.txt" -not -path "./isolinux/*" \ -exec md5sum {} \; | sudo tee md5sum.txt sudo xorriso -as mkisofs -r -V "Custom Ubuntu 22.04" \ -J -joliet-long \ -cache-inodes \ -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \ -b isolinux/isolinux.bin \ -c isolinux/boot.cat \ -boot-load-size 4 -boot-info-table -no-emul-boot \ -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot \ -isohybrid-gpt-basdat \ -o ~/iso_workspace/custom.iso \ ~/iso_workspace/extract-cd The output custom.iso is ready for USB writing ( dd or balenaEtcher ) or virtual machine testing. 4. Results and Evaluation We tested the method on three Ubuntu versions (20.04, 22.04, 23.04) with three customization levels: Results and Evaluation We tested the method on