IDEA: Shortening boot-time

Bill Nottingham notting at redhat.com
Fri Jul 23 16:23:20 UTC 2004


Hans de Goede (j.w.r.degoede at 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





More information about the fedora-devel-list mailing list