WARNING: These ideas are only for users who are well-versed in both Linux as a whole and Arch Linux.
If you're willing to tread into dangerous territory, you can slim a base Arch install down to less than 500MB installed. This requires doing some very dangerous things:
- removing all unnecessary locales (already covered)
- removing any firmware files not needed to run your system (from
- removing any kernel modules not needed to run your system (from
- removing any
.a files in
/usr/lib (only if you never use the system to compile software. note: this includes using
- removing everything in
/usr/include (only if you never use the system to compile software)
- removing unneeded documentation from
- (VERY BAD IDEA unless maybe for a server) removing man pages from
- (also a bad idea) removing unneeded terminal descriptors from
/usr/share/terminfo and unneeded timezone files from
- (DANGEROUS) running
strip * on all folders containing executable binaries (
- (in extreme situations) using a tool such as
upx to compress larger binaries (the Samba binaries lend themselves to this well as they tend to be quite large since they are often compiled statically.) Also note that using
upx means the entire uncompressed binary must fit in RAM during execution, so be weary on systems with low RAM.
Before you do ANY of this, MAKE A FULL BACKUP of your system. Linux thankfully makes this relatively easy - if you can attach and mount an external volume (e.g. a USB drive) you can do something like
cd / && tar -cf /mnt/usb/mySystem.tar / to backup the entire system.
Once again, note that I do not actually recommend doing the above (especially 7 through 9) unless you have in-depth knowledge, experience and understanding of Linux internals and Arch Linux. Playing with just about any of the files I've listed can damage a system in horrible ways, so you've been warned. If you don't know if your system needs a certain firmware file, module, etc. then do your research before you mess with it. (Be warned that removing kernel modules that your system needs can result in an unbootable system, or a system with no keyboard/network card/sound/display/etc. support, or all sorts of other unexplainable behavior.)
Also please note that any package upgrades can and will restore many of the files you remove above. If you do decide to go this route, you may wish to eventually script the removal of unneeded files and run your script after every major package upgrade. (Example: upgrading the kernel will bring back all the kernel modules as well as upgrade via dependency the linux-firmware package bringing back all of the firmware in
Finally, keep an eye on
/var/log as the journal files will grow over time. You can remove past journals but keep the current ones by doing something like
rm *\@*.journal in your journal folder.
I've successfully ran a NAS server off a 512MB Disk-on-Module device for months using these techniques, however they're still not for the faint of heart. (I've also used LinuxFromScratch to build a similar project in only 128MB of storage, but that's another story...)