Re: [RFH] !!SOS!! totally hosed init system
Roger Leigh <rleigh <at> codelibre.net> writes:
> Did you try running insserv by hand to restore the links? Did
> the maintainer scripts restore any of the links for you?
I’ve tried both (unsure if what I tried was right; dpkg-reconfigure
initscripts and insserv with most combinations of -d, -f, the name
of an initscript with or without /etc/init.d/ before, or just the
directory), but all I got was those /etc/rc2.d/S24single etc. links
since insserv happily ignored the LSB Default-Start header.
Once I installed upstart, purged and dpkg-i’d initscripts, I’ve
had the links “mostly” in the right places, but now still, half
of the init scripts are called and the other half aren’t. (Also,
having had few exposure to upstart before, I’m even less sure
how much it uses /etc/rc*.d/ for operation.) For example, openvpn,
kdm and boinc were missing but ssh was started.
> > And: why did this happen in the first place?
> If you're referring to the commit above, it's because we've fully
> transitioned to dependency-based boot for wheezy, so the hardcoded
> runlevel ordering isn't used any more (at all), even for file-rc.
> Note that file-rc was also updated to use insserv, so it too was
> also using dynamic ordering. So the above removal should have had
> zero effect upon use of either system--both systems were already
> using the "defaults" option implicitly.
Right, but “defaults” translates to “start 2345 stop 06” here,
happily ignoring the LSB header.
I didn’t actually refer to that commit though, but to the why did
a working file-rc setup suddenly become unbootable like that issue.
Unfortunately, I didn’t have bootlogd installed at first, but later
when I did install it, it only wrote to /var/log/boot once, and then
never again (I’ve had a dozen boots or so today).
(Oh goodies. Now /var/log/boot doesn’t even exist, and boot.log
is 0 bytes still.)
> The real problem here is probably that the maintainer scripts for
> handling the transition between the file-rc and sysv-rc systems
> may not be doing their job robustly.
This may be the issues I’ve seen _after_ switching from file-rc
back to sysv-rc, yes.
But the other issues (filesystems readonly, /dev/net/tun ENOENT,
eth1 not renamed, etc.) were common to both of them; most (but
not all) of those went away with upstart though…
> and sysv-rc should make sure insserv is run again. If any
insserv was run again but spewed lots of warnings about invalid
dependencies, and about ignoring the "Default-Start: S" value
for eg. the single script in favour of the "2 3 4 5" it installed.
> be much appreciated. I thought this was all working for wheezy
I think it was working for wheezy, yes.
Anyway, is there a way to tell update-rc.d or insserv or whatever
to just ignore the existing /etc/rc*.d/ structure completely and
build a new one just from the LSB headers? (Also, how much of it
do I need for upstart? I could probably switch back to sysvinit,
too – if things will work there again.)
PS: @Adrian: I just do not want to be replied to by Joss, no matter what,
totally unrelated to this.