Hans de Goede (j.w.r.degoede(a)hhs.nl) said:
-remove starting of prefdm from inittab and make it a service
Doesn't work correctly without console tricks (if *dm starts
before *getty, it will take one of the terminals allocated
for the getty.) But that probably can be worked around.
-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.
Which particular things do you have in mind that are slow?
fsck isn't quick, but it's sort of required.
-Introduce a desktop config flag somewhere in /etc/sysconfig, which:
makes sysinitrc skip lotts of enterprise setup stuff
Such as?
-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.
Advanced routing stuff doesn't gain you any time. And I've seen
quite a few desktops with RAID.
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.
You *really* want all the hardware stuff done early. In fact, it's
probably better to do it all earlier than it is now. Something like:
init
- initialize all hardware
- fsck
- mount *everything*
... continue on a more normal path ...
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.
How much does your proposal improve startup time? :)
Bill