[HEADS-UP] adding missing systemd links in rawhide upgrades

Lennart Poettering mzerqung at 0pointer.de
Wed Aug 18 22:32:01 UTC 2010


On Wed, 18.08.10 18:15, Dave Jones (davej at redhat.com) wrote:

>  >     # systemctl enable getty at .service prefdm.service getty.target rc-local.service remote-fs.target
>  > 
>  > And that should make things work again.
> 
> even after doing this, I still haven't managed to get a single box running systemd.
> They all hang after complaining that it failed to load configuration for default.target
> (and a bunch of other services like distcache, livesys-late, cman)

Have you seen the two follow-up messages I posted to this one? You need
to create the default.target link as well. See those two mails for details.

> It tells me to see the logs for details, but there's not a single message
> from systemd in the logs.

There should be an explanation in dmesg, that it cannot find default.target.

> as an aside: it also prints out some bogus messages about autofs and ipv6 being
> missing. if you could remove those, that would likely save some pointless bug reports.

Well, systemd by default uses autofs for certain "API" vfs mounts, such
as binfmt_misc: we create the mount point and only when it is accessed
we actually mount the file system on it. This has the effect that we'll
load the binfmt kernel module only when somebody actaully writes
something to the fs. i.e. we make the mount points availabale all the
time in the file system, but the backing module is not necessarily
loaded. Something similar applies to a couple of other non-essential
virtual "API" file systems. 

When systemd initializes we will initialize autofs too (by opening
/dev/autofs), and that will fail if the module is not loaded (and the
usual module-autoloading won't work for the autofs device node since
udev isn't around yet, and the device node is hence not created yet).

systemd also configures the lo network device by default as part of
early bootup, as part of its normal startup code (in C). here too module
autoloading doesn't work, since configuring an ipv6 address on lo will
not cause the protocol module to be loaded.

So, in summary, we have to modprobe autofs and ipv6 manually before we
go on with the startup, and given that this is how it is I don't think
it makes much sense compiling them as a module anymore. It's similarly
pointless as compiling unix.ko as a module, or the RTC module. It just
slows down the boot and will be loaded into the kernel anyway. And
that's why we complain.

(note that systemd will still boot if autofs and ipv6 aren't available
at all, it's not essential and we actually do honour the modprobe
blacklist)

Lennart

-- 
Lennart Poettering - Red Hat, Inc.


More information about the devel mailing list