Installation from a directory on a filesystem that has already been
mounted.  If the options available for mounting things automatically
are inadequate for your needs you'll need to get a shell command
prompt (for example by switching VT using Alt-F<n> or quitting
dselect) and use it to mount the filesystem before continuing.

The area you're installing from should contain the Packages.gz file
from each distribution area being installed (usually stable, contrib
and non-free) as well as the corresponding binary/*/*.deb files.

The easiest way to do get this is to make a (partial) copy of the
distribution site's directory hierarchy, if possible.
