Of course. Remember, everything is open for modification in Linux and most of it ain't rocket science. Just requires a little up front research and learning (and a couple of brain cells to rub together certainly wouldn't hurt).
NOTE: the brain cell remark is not targeted to you, just a general statement.
Basic boot sequence on most Linuxes:
1) System BIOS
2) Master Boot Record
3) Boot Loader (GRUB or LILO)
4) Kernel (hardware detection and drivers for said hardware)
5) init/run levels (similar to SERVICES.EXE/Services in WinNT/2K/XP)
Now the first 4 steps should not take long on any Linux system. Step 5 would be where the majority of the boot time would take place.
The "init" program's configuration file should be "/etc/inittab". This file itself should not usually require modification and if you screw it up your system will not boot. However, within that configuration file is where the "run levels" are defined, including the default run level.
Run levels:
0 - halt
1 - single user
2-4 - user defined
5 - Xwindows login prompt
6 - reboot
If your system starts up with a graphical logon prompt then your "initdefault" is set to 5.
Now the "inittab" file defines the directories where the service scripts reside that should be started/stopped when entering a runlevel. Usually all of the scripts reside in the
"/etc/rc.d/init.d" or the "/etc/init.d" directory. There should be one script for each service, written to start or stop the service based on whether the script was called with the "start" or "stop" parameter. This directory is just a storage directory. There will be another directory for each of the individual run levels. Usually either:
/etc/rc.d/rc0.d
/etc/rc.d/rc1.d
/etc/rc.d/rc2.d
/etc/rc.d/rc3.d
/etc/rc.d/rc4.d
/etc/rc.d/rc5.d
/etc/rc.d/rc6.d
or:
/etc/rc0.d
/etc/rc1.d
/etc/rc2.d
/etc/rc3.d
/etc/rc4.d
/etc/rc5.d
/etc/rc5.d
In each of those directories you will find many symbolic links to the service scripts in "/etc/rc.d/init.d". The name of the symbolic links are significant as they signify whether the service should be "started" or "stopped" and which order the scripts should be executed in. Take the "sshd" service for example. Say you have a "/etc/rc.d/init.d/sshd" script that is used to control the sshd server service. You want it to start when your system boots. Since you have your initdefault set to 5 (graphical login) you would create a symbolic link to that file like so:
ln -s /etc/rc.d/init.d/sshd /etc/rc.d/rc5.d/S60sshd
which creates a symbolic link called "/etc/rc.d/rc5.d/S60sshd". Notice the "S60" that I prepended to the script name. This is significant because the "S" means I want theservice "started" when entering run level "5". Also notice the number "60" between the "S" and the script name. This is also significant because I do not want the script to start until scripts with lower 2 digit numbers have been started, but before scripts with higher 2 digit numbers have been started.
In addition to the "S" you can prepend a "K" which would "stop" a service upon entering the run level. 2 digit numbers should also be used in the naming for the "stop" scripts.
Again, this is the manual method of turning on/off services. It is exactly what "tksysv" and the "chkconfig" commands will do but with a more intuitive interface.
Now since you have initdefault set to "5" after all of the services have started from the /etc/rc.d/init.d/rc5.d directory your XDM/KDM startup script will run. Depending on what is started in that script could also make difference in startup times between distros. You should find the name graphical logon script that is executed in your /etc/inittab configuration file. Check out that script and modify it if you don't like all that it performs. In RedHat the script that kicks off the graphical login is "/etc/X11/prefdm". Other distros probably use a different script.
I suggest you take a look at the configuration files and the scripts in /etc/rc.d/init.d to see how the stuff works. There really isn't a lot to it.
For further reading search for "linux boot process" in Google. Or if you want more specific information about a specific distro substitute "linux" with "distroname".
[ August 29, 2002: Message edited by: VoidMain ]