I'm trying to run some experiments with Linux and look for the smallest distribution by installation size. (RAM, CPU doesn't really matter)
Depending on your platform, ttylinux is maybe something for you:
This smallest ttylinux system has an 8 MB file system and runs on i486 computers within 28 MB of RAM, but provides a complete command line environment and is ready for Internet access.
Started in 2001 and latest release is from 2015-03-05 so it is still maintained.
OpenWrt is also one of the smallest.
If you are willing to go through a compiling process and cut down on features, you could try buildroot. I created a very basic Linux install (essentially just the kernel, minimal Busybox utilities and one extra application) which fit into a 6MB ISO image.
The key here is to reduce the kernel and Busybox configuration ("make linux-nconfig" and "make busybox-menuconfig") to the bare minimum you need, and then to enable the XZ compression on the initial kernel ramdisk. Cutting down on everything I didn't need allowed me to reduce the whole ISO image down to about 9MB, and after enabling the XZ compression further down to 6MB.
For the kernel, I just checked each option in the configuration menu and disabled it unless I specifically needed it. You could disable all network drivers for which you don't have a corresponding network adapter, disable other, less common hardware which you don't foresee using (multi-port serial cards, joysticks, multi-function devices...) and so on. You can also leave many subsystems on the basic implementations rather than more sophisticated ones (e.g. basic ACPI CPU idle states rather than Intel/AMD CPU idle states), which may mean that you will trade off power efficiency and full hardware support for kernel size. You could also disable entire subsystems like hibernation/sleep support and sound system if you don't need to use them.
You could save a lot of space by doing that. For example, the KVM (virtualisation) and btrfs support modules (which I decided to put outside the kernel as loadable modules in case I will need them in the future) take up 1.1 MB by themselves. By deleting those module files you could get down to about 4.9MB. It could be that they take up less space integrated into the kernel binary, but then I've seen that other, smaller modules are sized 20-100 kilobytes, so your mileage may vary.
Busybox is a single binary that behaves like different binaries depending on how it's called from the command line, which lets you save space. It's included in Buildroot by default. It can behave as ls, df, dd, cat, nc, bash and many others. It looks like a good replacement for almost the entire *nix userland, unless you need some specific utility extensions which you can only find in more fully-featured/traditional (e.g. GNU, BSD) versions of these utilities. Busybox is similar to the kernel in terms of disabling features - disable everything except for the binaries (AKA applets) you need, and the size will be reduced down. Dynamically compiled Busybox binary it takes up 512 kilobytes in Buildroot and about 2.1MB on Ubuntu 14.10. The larger Ubuntu version supports a lot more than my Buildroot version, and it's still smaller than the default userland in terms of size - 2.1 MB for Busybox which includes all basic utilities (plus md5, sha256, sha512 sum, telnet, gzip, grep, df, dd, and many, many other applets) vs the traditional userland - 2.1MB gives you Bash and only a few of these utilities.
Extreme methods of decreasing the system size
You can try some of the things below to reduce the size further, but make backups of the working directory often as you may break the Buildroot install you are working on and may have to rebuild some of the binaries.
Compress all executables (including the kernel) with the UPX compressor. Since UPX is designed specifically to perform executable compression, this makes the resulting executables much smaller. But please make sure that you test all the executables afterwards and that they work correctly.
Use a different libc. I'm using uClibc, but I heard that musl and dietlib are much smaller and produce smaller executables. I had some build problems with musl this time, but it may work better.
Replace some or all userland utilities with asmutils. These utilities implement some of the common *nix utilities in pure Assembly (rather than C or other languages), which theoretically allows for much more compact code. Some of them work well, but some can be only used in very basic ways (e.g. "mount" only takes parameters in a specific sequence and no FS-specific mount options are implemented). On the other hand, they are very small (most are less than 1KB compiled, smalles ones about 139 bytes or so). You can pick which ones you want to use, so you can use these replacements only for the commands you want to save space on and keep more feature-rich versions as Busybox applets.
Tomsrtbt is a couple megabytes; it fits on a floppy.