How do I reduce the size of an Arch Linux iso?

So, I am making a customized Arch Linux iso as an installer for my distribution. I've looked at another Arch distro called ArchLabs, and their installer size is 750 M. My ISO ends up generating at over 1000 M. The thing is, my package list is a slimmed down version of the ArchLabs list, so shouldn't it be smaller? My airootfs is smaller too, but I can't seem to figure this out. Heres the link to the ArchLabs repo, and here's the link to my repo. (My ISO's build files are under installer-iso.)

Here is the link to my ISO, its package list, extracted airootsfs, and extracted iso.Direct link to the iso file here.

11

1 Answer

The airootfs.sfs squashfs is 1.4Gb when mounted. 600Mb goes to /usr/lib/firmware. That is impressive.

I had to mount your iso to extract the airootfs.sfs. I mounted it on /mnt/loop:

/dev/loop1 1036620 1036620 0 100% /mnt/loop

I cd'd to /mnt/loop and ran a "du"

ghp-amdphIIX4B:/mnt/loop
# du -s .
784455 .

I created a new.iso from /mnt/loop:

ghp-amdphIIX4B:/mnt/loop
# mkisofs -o /tmp/new.iso .
... 99.38% done, estimate finish Sat Dec 12 00:02:59 2020
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 30720
Path table size(bytes): 208
Max brk space used 23000
392431 extents written (766 MB)
# ls -l /tmp/new.iso
-rw-r--r-- 1 root root 803698688 12 dec 00:02 /tmp/new.iso

200Mb smaller???

And that's because I didn't see your iso als contains a 245Mb EFI System:

# fdisk -l /tmp/arch.iso
Disk /tmp/arch.iso: 1012.32 MiB, 1061498880 bytes, 2073240 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 30323032-3231-4131-B130-303932393038
Device Start End Sectors Size Type
/tmp/arch.iso1 64 1570815 1570752 767M Linux filesystem
/tmp/arch.iso2 1570816 2072575 501760 245M EFI System
/tmp/arch.iso3 2072576 2073175 600 300K Microsoft basic data

My EFI partition boots Linux and Windows, and is less than 25Mb. Using ReFind, it boots the kernels it finds in the appropriate partitions. No need for 250Mb of

# ls -al /mnt/loop2/arch/boot/x86_64/
total 246092
drwxr-xr-x 2 root root 4096 Dec 11 14:29 .
drwxr-xr-x 3 root root 4096 Dec 11 14:29 ..
-rwxr-xr-x 1 root root 81423440 Dec 11 14:29 initramfs-linux-ae-fallback.img
-rwxr-xr-x 1 root root 81423440 Dec 11 14:29 initramfs-linux-ae-tkg-pds.img
-rwxr-xr-x 1 root root 81423440 Dec 11 14:29 initramfs-linux-ae.img
-rwxr-xr-x 1 root root 7713600 Dec 11 14:29 vmlinuz-linux-ae
7

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like