Hi,

this might not really be the place to ask this question, but I'll go ahead
anyway. If this really belongs somewhere else, don't hesitate to point that
out.

I'm building a small gentoo rootfs based on uclibc. After trying once with
baselayout-lite (which kinda worked, but without any real init / rc support
except for manually writing new rc scripts), I'm trying baselayout2
(2.0.0_rc6).

The first problem I found was the absence of an inittab, but that makes sense
since only busybox is providing init (so I should just write one myself...).

The second problem, and that is the actual subject of this mail, is that the
rc scripts (or more specifically the runscript binary) won't work. It will run
and responds nicely to --help, but once I try to start something I get the
following (and yes, I am root):

/ $ /etc/init.d/local start
 * ERROR: local has been started by something else

Which is a rather cryptic message. After investigating the source, this
message really means "Couldn't set state to `starting'". This is caused by the
absence of a /lib/rc/init.d/starting directory. After creating this directory
(and a /lib/rc/init.d/exclusive directory to solve the next error) everything
works as expected.

Even more, after a first succesful run, all the other directories in
/lib/rc/init.d/ (started, stopping, etc.) are also created.

Another look at the source is that as as side effect of dependency
calculation, these directories are created if needed. But dependency checking
is only done after marking the service as started, so this breaks on an empty
system.

Now, my real question: Who is supposed to create these directories? The most
sensible thing IMHO would be having runscript create them on startup (which
would require some code changes). If not, then the baselayout ebuild should
provide them?

Now, looking a bit closer, I might have found a solution. An easy way to solve
the problem is simply forcing dependencies to be calculated, for example by
running 

/ $ /etc/init.d/local ineed

This creates the needed directories without crashing.

Now, if I would create a normal inittab, instead of trying to start single
services without going through rc startup properly it might actually be that
it starts with dependency calculation and the problem magically dissappears...
I'll try that, and see what happens (though that would not fully invalidate
this email if it works).

Gr.

Matthijs

Attachment: signature.asc
Description: Digital signature

Reply via email to