Freddie,
I think the time has come to find out exactly where your machine is running slow. This is done by including diagnostic lines in the scripts.
The main boot script that it is safe to look as is /etc/init.d/rcS This mounts the file systems and initiates the desktop, so is the best place to start. The file systems are mounted by the code below (on 3MX anyway and others will be similar) so if we add some user variables to datestamp the processes then we can see how long each takes.
MYSTART=$(/bin/date)
# mount filesystems
/bin/mount -o loop /proc
MYGOTPROC=$(/bin/date)
/bin/mount -t devpts /dev/pts
MYGOTPTS=$(/bin/date)
/bin/mount -t usbfs none /proc/bus/usb
MYGOTUSB=$(/bin/date)
/etc/init.d/mount_extend &
MYGOTEXTEND=$(/bin/date)
source /etc/init.d/modules
Then for ease of use write yourself a little script called, say, /sbin/mystart.sh
#!/bin/sh
echo 'started ' $MYSTART
echo 'proc loaded ' $MYGOTPROC
echo 'pts loaded ' $MYGOTPTS
echo 'usb loaded ' $MYGOTUSB
echo '2nd Gb loading ' $MYGOTEXTEND
Run the script from a terminal to examine the timings, and add similar lines elsewhere to look at other parts of the start process. Note that I have used environment variables as at the start of the process there is nowhere to write user files. Once you have the extended flash drive loaded you can write to this using lines like
echo 'got to this point ' $(date) >> /Extend/Extend_1/mylog.txt
which will add a line to a file. But note the ampersand (&) at the end if the command to load the extended drive. This means carry on with the script without waiting for this line to finish processing so you would need to remove the ampersand to get a true timing for the completion of this step.
Hope this helps.