gdm early login

Chuck R. Anderson cra at WPI.EDU
Thu Apr 7 04:54:22 UTC 2005


On Wed, Apr 06, 2005 at 05:59:55PM -0400, Ray Strode wrote:
> Recently Matthias Clasen, David Zeuthen, and I spent some time working
> on getting GDM to start earlier in the boot process.

Cool.  Here are some numbers from my system, timing from hitting enter
on the grub screen, to when rhgb is first displayed, to when you can
start typing on the login screen, and finally to when the gnome splash
screen disappears and the desktop is ready to use.  This was on a
hyperthreading P4 2.4 GHz with the SMP kernel:

		rhgb	early-login
rhgb displayed	00:20	n/a
login screen	01:08	00:33
desktop ready	01:30	01:13

> /sbin/chkconfig --add gdm-early-login
> /sbin/chkconfig --add gdm-allow-login
> /sbin/chkconfig gdm-early-login on
> /sbin/chkconfig gdm-allow-login on
> to regenerate the symlinks in /etc/rc5.d

In the process of looking at how this works, I noticed that some of
the "stop" initscripts are not being run.  Specifically, it appears
that /etc/rc.d/rc doesn't run the K?? script for a service unless
there was a /var/lock/subsys/$service file created by the service
"start" script.  This seems like a nice optimization for skipping
shutdown for services that don't need it, speeding up the shutdown
procedure.

These scripts do not appear to create subsys locks, but have K??
scripts that are not being run on init runlevel changes (including
reboot/shutdown):

init.d/anacron
init.d/diskdump
init.d/gdm-allow-login
init.d/gdm-early-login

The only one here that seems to be a concern is diskdump, because it's
"stop" section appears necessary at first glance, since it stops
devices and unloads modules:

stop() {
        case "$KERNEL" in
        "2.4")
                if [ -f $PROC_DISKDUMP ]; then
                        grep -v '^#' $PROC_DISKDUMP | while read dev 
sector; do
                                stop_device $dev
                        done
                fi
                ;;
        "2.6")
                find $SYSFSROOT -name dump | while read f; do
                        exec 3<&0 <$f
                        while read dev; do
                                stop_device "/dev/$dev"
                        done
                        exec 0<&3 3<&-
                done
                ;;
        *)

               echo "kernel version '$KERNEL' incorrect" >&2
                exit 1
        esac
        unload_module
}




More information about the fedora-test-list mailing list