The above data is enough for performing a crude preload:opening all these files will require synchronous reads of their directories and inodes, so you might need to split b) into first opening and reading /dev/hda1, then opening and reading the regular files.
a) Boot the machine
b) Boost the disk queue size, set the VFS readahead to zero, open
/dev/hda1 and all the regular files, hose reads at the disk via
fadvise(). Restore VFS readahead and queue size, continue with boot.
And I suspect that the whole thing will be of marginal benefit. Althoughanother possibility: use a device mapper module under /dev/hda1 that records I/O patterns, then relocates blocks to fit that pattern, so that the normal boot sequence ends up issuing sequential disk writes.
things might be better now that files are laid out with the Orlov allocator
(make sure that the distro was installed with a 2.6 kernel! The file
layout will be quite different if the installer used a 2.4 ext3).
Of course the next step is to rewrite files so that they are more
favourably laid out on disk. Tricky. Or dump all pagecache to some temp
file in a nice linear slurp and preload that, copying it all to the
appropriate per-inode pagecaches and taking care of files which have been
modified. Trickier ;)