[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

IDEA: Shortening boot-time


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
-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

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
-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

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.



EuropeSwPatentFree http://EuropeSwPatentFree.hispalinux.es

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]