IDEA: Shortening boot-time

Hans de Goede j.w.r.degoede at hhs.nl
Fri Jul 23 06:21:05 UTC 2004


Hi,

I'll post my self intro message later, I've been not sleeping alnight 
thinking about a scheme to speed up desktop start-up times for Fedora, 
and want to get it out of my head before I loose parts of it.

The basic idea is todo things the XP way and loads lotts of (cr)app(s) 
while the user is already seeing a GUI.

For this we need a couple of basic changes:
-remove starting of prefdm from inittab and make it a service
-add a prefdm-early service, which as the name says starts early if 
possible (right after kudzu), and which avoids the prefdm service from 
starting by using the same subsys lock.
-move starting some of slow things from rc.sysinit to a service, detect 
if they really needed early in rc.sysinit and then call/source the 
service script.
-Introduce a desktop config flag somewhere in /etc/sysconfig, which:
makes sysinitrc skip lotts of enterprise setup stuff
-Introduce a desktop kernel as a counterwheight to the enterprise 
kernels which leaves out more advanced server stuff such as raid, 
devicemapper, advanced routing, etc.


Now the dirty inner workings of my scheme:
------------------------------------------

Delay USB-init:
-usb (including the sleep call, GRRR) is moved from rc.sysinit to a 
service, which starts before networking, but after prefdm-early.
-in rc.sysinit, at the place where usb used to be, take for each
  line /etc/fstab which is not a comment, empty and doesnot contain
  noauto, if it begins with LABEL=, see if we have a partition with such
  a delay. if it begins with /dev/, see if we can open the device
-check if we can open /dev/input/mous0 and /dev/input/keyboard0
-now if one of the LABELs or devices can't be openened, we
  probably have an USB attached disk, or HID device we need, so start USB
  now
-on a normal desktop, all these checks should work without USB, so usb
  will be started later as part of the runlevel, again the subsyslock
  should avoid double starting.
-ofcourse there needs to be a way to tell rc.sysinit to always load USB
  early

Delay loading scsi modules and the long scsi chain scan:
-on some systems, people have a scsi-card for say a scanner, or
  because the bought a cdrecorder in the days atapi was unreliable,
  so they have scsi but they don't have any disks attached!
-make mkinitrd try to rmmod sd_mod, if this succeeds scsi is clearly
  not needed for disks, so don't put the scsi modules in the initrd
-add a scsi-service which loads the modules when initrd hasn't done so
  already.
-of course there needs to be a way to tell mkinitrd to always load the
  scsi modules.

Services prefdm-pre-net and prefdm-post-net:
-the pre-net prefdm checks if the user has choicen an authentication
  method which requires networking and checks /etc/fstab for
  netfilesystems on vital places like /usr, /home. If neither of these
  are there it starts the prefdm service.
  (netfs mounts like /archive or /lotsofmp3s really aren't all that
   interesting to get mounted instant IMHO)
  (the checking for netfs can be done in the loop in sysinitrc and then
  be reported to this script in someway)
-the post-net script always starts prefdm, it is there for admins to
  remove in ntsysv if they want the old behaviour where prefdm starts
  last, maybe the prefdm-*-net scripts, could even go in a sperate RPM,
  which then can just be removed be people who think this is a bug
  instead of a feature.
-the real prefdm service should thus get prio99, moving rc.local to prio
  98


Well I'm sure this idea is full of holes, so shoot. But please this is 
not meant as an invitation to start a flamewar about how FC / linux 
startup time sucks, if you want to talk about that talk to the wall, 
ceiling or floor.

Regards,

Hans



-- 
EuropeSwPatentFree http://EuropeSwPatentFree.hispalinux.es





More information about the fedora-devel-list mailing list