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

an idea for patch of the /etc/init.d/rc script

Hi folks,

I'm very new to debian development, but I'm old debian fan. I don't know
is that the right list for suggestions because I'm really new. Please
somebody to read that mail and to show me the right way :)

Also my english is not very good, so please excuse me for the hard reading.

Anyway, Last few days I waste my time to install a debian on my mobile
pc. After that I found that ACPI daemon is not installed by default
(probably that's OK) and I done that. But when I boot my PC I found that
all the boot procedure is very very slow (something like 20-30 seconds
with all the stuff installed), and when the ACPI daemon is started, some
regions of the PC are very risky hot. So I start to think how the boot
procedure can go faster, and I figured out.

There are two solutions for my problem, one is concrete, and the second
is general.

The concrete solution is acpid to go from S20acpid to S10acpid. In that
case will skip most of the waiting.

The general solution is to fix a little the RC boot script. My idea is

Some of the startup scripts does not depend on each other. For example –
starting of mysql and postgresql does not depend. So why we don't do it
in parallel?

If we place the same number id's for S[0-9][0-9]* links for each scripts
that can be started in parallel, that will faster the whole process.

For example:

dequila:/etc/rc2.d# ls S20*
S20acct          S20exim4       S20netatalk           S20sslwrap
S20acpid         S20festival    S20nfs-kernel-server  S20tcpspy
S20cpudyn        S20hddtemp     S20openct             S20vdr
S20cpufreqd      S20ifplugd     S20oss-preserve       S20wpasupplicant
S20cpufrequtils  S20inetd       S20postgresql         S20xend
S20cupsys        S20irda-utils  S20postgresql-8.0     S20xfs
S20dbus-1        S20makedev     S20samba              S20xprint
S20dirmngr       S20mysql       S20ssh
All of them can be started in parallel.
There is a patch following example patch to /etc/init.d/rc:
dequila:/etc/init.d# diff rc rc.org
<       # Now lets read all the S files
<       for i in /etc/rc$runlevel.d/S*
<       do
<          numid=${i:1:2}
<          rcscr[$numid]="${rcscr[$numid]} $i"
<       done
<       for numid in {0..99}
<       do
<       for i in ${rcscr[$numid]}
>       for i in /etc/rc$runlevel.d/S*
<                               startup $i stop &
>                               startup $i stop
<                               startup $i start &
>                               startup $i start
<       # Let wait for childs to end
<       wait
<       done
The advantage is that the boot procedure goes real faster. In my case it goes from 30 seconds to less than 10. The only disadvantage is that error messages in some cases goes out of order. But I believe it is fixable. That was a problem (a little, but existing) in the previous boot system too.
That patch works fine for me, and I hope it will be included in the unstable distribution. Can somebody says an opinion and what I have to do, to publish that patch?

Reply to: