I've been working with Debian in a virtual machine. With a slightly optimized kernel and some other tweaks and I get from grub to login in 16 seconds. After that point I haven't set up X to automatically load but typing quickly I can load blackbox and XMMS and play a song in about 35 seconds. Hows this sound for a cold boot? (35 seconds total, from grub not from login)
not bad. Here are some similar results I got with a custom LinuxICE kernel. From grub, past login (autologin) loading X and nghost1.
Are you using "upstart" with your debian system? That may increase speed even more. If you can provide details about how you setup your system, I am definitely interested. I've been experimenting with debian as the next LinuxICE2 base.
I started with the absolute base system from the business card iso. I used rcconf to narrow down services to just ALSA. I installed runit. In etc/init.d/rc I changed CONCURRENCY=none to CONCURRENCY=shell and (I'm not sure if this change did anything) changed "startup $ACTION $SCRIPTS" to "startup $ACTION $SCRIPTS &". I can show you my .config for my kernel but it's nothing special. There's still some junk compiled in it that I don't need.
What I would like to do is find a way to stop all hardware detection at startup. My idea is to have two kernels compiled. At startup, leave a very short window of time to pick which one to boot from. One kernel will probe for new hardware and the other will have the info precached and read it from a file.
cool. Sounds close to what i'm doing right now. I'm using "live-helper" to debootstrap debian core files and build it up into a livecd for LinuxICE2. I know you are already doing some of these things but here and here are some more tweaks you can do to get your system running quicker.
If you haven't tried upstart yet, it should also make things faster too. It's in the experimental repo.
Little update... After changing some scripts, I now have everything automated. I go from grub to playing music in 20 seconds. That's a cold boot, too. Here's the process
2- typical hardware probing
3- runit starts I guess what you can call its first stage and all processes are begun simultaneously (or they should be)
4- after everything starts, runit goes to stage two and I edited the script for it and added "su -c startx"
5- xinitrc consists of "xmms & exec fluxbox" so xmms loads with the window system
6- hit play
I don't see things booting much faster unless my idea in post #3 is possible. Which it is cause this is linux but could be difficult. Which again, it will be... cause this is linux.
It might be worth noting that I don't use a swap file.