"Your first step should be to measure how the time is currently
being spent while your machine boots. Then optimise the slow bits,
and don't worry about the bits that are already fast.
"A couple of tools are available for measuring the time taken
during boot and visualising the results. I suggest that you install
these tools first and save their results somewhere safe: I have not
done so, and so I can no longer show you how slowly my machine
booted before I started fixing it, which is a shame The total time
was, IIRC, 33 seconds from the end of Grub to the xdm login dialog
being visible; I've knocked 19 seconds off that.
"bootchart is available as a Debian package. Install it and boot
with "init=/sbin/bootchartd" added to the kernel command line. (In
Grub, select the kernel using the cursor keys, press e, select the
line with the kernel command line, press e, edit, press return, and
then press b.) Then run the bootchart utility which reads the log
written during boot and creates an SVG graph. You can view the
resulting file using most web browsers, or you can try "see" which
will probably launch inkscape.
"The bootchart will show you which processes took the most time,
and you can also see how much time was spent waiting for I/O and
how much time was CPU-limited. If the results don't seem to make
much sense, try running bootchart with its -n option; this makes
the results more verbose."