Ubuntu Desktop Iso -

printf $(sudo du -sx --block-size=1 ~/iso_workspace/squashfs-root | cut -f1) \ | sudo tee ~/iso_workspace/extract-cd/casper/filesystem.size Regenerate the MD5 checksums:

sudo unsquashfs -d ~/iso_workspace/squashfs-root \ ~/iso_workspace/extract-cd/casper/filesystem.squashfs Copy DNS resolution and mount virtual filesystems: ubuntu desktop iso

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 : This paper describes a low-level, scriptable method using

| Customization Level | Added Packages | ISO Size (original) | ISO Size (custom) | Boot time increase | |---------------------|----------------|---------------------|--------------------|--------------------| | Minimal (drivers) | 5 | 2.8 GB | 2.9 GB | +0.4 sec | | Standard (IDE + tools) | 18 | 2.8 GB | 3.7 GB | +2.1 sec | | Full (CUDA, ROS, Docker) | 42 | 2.8 GB | 5.2 GB | +5.8 sec | 23.04) with three customization levels:

Ubuntu, Live CD, ISO Remastering, SquashFS, Chroot, Customization, Linux Deployment 1. Introduction The ability to create a customized, ready-to-run Ubuntu Desktop ISO is critical for organizations requiring consistency, reduced setup time, and offline installation capabilities. While tools like systemback and Cubic exist, they often lag behind Ubuntu release cycles or introduce unnecessary complexity. This paper describes a low-level, scriptable method using standard Linux utilities ( squashfs-tools , xorriso , chroot ) to produce a fully functional custom ISO.

mkdir -p ~/iso_workspace/original_iso sudo mount -o loop ubuntu-*.iso ~/iso_workspace/original_iso rsync -av ~/iso_workspace/original_iso/ ~/iso_workspace/extract-cd/ sudo umount ~/iso_workspace/original_iso The live filesystem resides in casper/filesystem.squashfs :

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: