Reducing Boot Time On a General Linux Distro
Linzer writes "In this blog entry, Fred Crozat (head of Mandriva's engineering team in France) explains in great detail how his team has been detecting and getting rid of bottlenecks in the boot process, from the early stages to loading the desktop environment, thus decreasing overall boot time. An informative tour of the nuts and bolts of the boot process and how they can be tinkered with: initrd, initscripts, udev, modprobe calls. The basic tool they use for performance analysis is bootchart, which produces a map of process information and resource utilization during boot. The final trick: preloading desktop environment files while waiting for the user to type her password."
Yes! We will call it... Upstart! Oh wait.
Sam ty sig.
As Fred's post mentions, Mandriva has been using a parallel init system (called prcsys) since January 2006. It's entirely SysV compatible and requires only that the SysV init scripts have dependency information (in fd.o standardized format) in the headers. It transparently handles init scripts with no dependency information (they're started serially, after everything else) and can be disabled with a single kernel parameter, 'nopinit'. It pre-dates upstart, which only showed up in late 2006.
OSX's launchd does a fantastic job at this. My Macbook boots in no time. Plus it keeps on working while I'm in the desktop environment, so if I need a service I can just start using it and it's launched automatically. A good example is the ssh-agent. It just works.
The usb implementation is buggy. They threw in enough fixes till it roughly worked on Windows and then it was considered good enough to ship. That's why it doesn't work on Linux. I'm just wondering how you don't know this already. Surely you've heard of this happening before?
Igor Presnyakov stole my hat
On Linux usb ports can be powered down to save power. However it turns out that many USB devices are broken and can't cope with being powered down. Now the question comes up what version of Linux are you using? If it's something older than 6 months then there's a good chance this has been fixed (the list of things allowed to be powered down has gone from a blacklist to a whitelist of large categories). See this commit talking about the kernel no longer powering anything down bar USB hubs for some more details.
A very short term band aid might be to disable usb autosuspend on that device via /sys/.
The Linux developers doing the bulk of the work are paid.
Javascript + Nintendo DSi = DSiCade
Here's a poweropint presentation about this work. If you're an LWN subscriber you can you read an article and comments about the 5 second boot presentation at the Linux Plumbers Conference (it will become viewable by all on from the 2nd October 2008). Finally you might be able to test drive some of this work if you are willing to sacrifice a USB key and destroy your existing EeePC install by because Moblin may include this work.