I have a PI 2, which with my few apps and their zillions of dependencies means I have 89 tcz files to load at boot. This takes about 35 or so seconds to get into X. In an attempt to shorten the boot time I created a disk image file, mounted it through a loop device, and used unsquashfs to put the extensions into it. This results in a few directories like etc, lib, var, and usr. The first three are little and I copied them into the stock ramfs image and it's only marginally bigger. The usr directory is about 70 megs so I don't want or necessarily need it in memory (and we're pretty much stuck with the SD card anyway), so I compiled overlayfs into the kernel and hacked tce-setup to, in effect, slide the additional usr files under the existing root tree /usr directory. This works OK and cuts 20+ seconds from the boot time.
What I think would be cleaner, but I have been unsuccessful at doing, is to mount the overlay under the / file system. According to many posts on other distros it's supposed to be possible, but they switch root file systems somewhere in the boot process and we don't, if I understand the process correctly, which I think is the root (pardon the pun) of my problem. This way I wouldn't have to patch the stock ramfs with the etc, lib, and var directories from the extensions and all the other kludges that I have to do to get it going. Maybe I do something in /init or rcS?
Does anyone have any other ideas to cut boot time?