Re: Need help with converting growroot to a systemd service

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

 



On Mon, 11.08.14 12:59, Juerg Haefliger (juergh@xxxxxxxxx) wrote:

> All,
> 
> I want to convert the growroot functionality to a proper systemd service

Not sure what "growroot" is...

> but I'm struggling. I (think I) want it to run and finish before the
> filesystems are checked and before /sysroot is mounted. 

This is supposed to be an initrd service hence?

> For testing purposes, I replaced the growroot script with a simple
> script that sleeps for 5 seconds and emits debug messages at the
> beginning and at the end.  What I end up with is that fsck is started
> before growroot and I can't seem
> to figure out why that is. What I have at the moment is:

fsck units are ordered after the devices they are supposed to check, and
before the mount units for it. If you want your service to run before
the fsck, you'd have to order your service between the device and the fsck.

> 
> [Unit]
> Description=Grow the root partition
> After=systemd-readahead-collect.service systemd-readahead-replay.service
> Before=systemd-fsck@.service sysroot.mount

This will not work. "systemd-fsck@.service" is is not a unit name (but
just a template for unit names), and dependencies may only be declared
relative to other units, never to templates. (I admit though that this
might be useful to have, but then again, I am not sure how we could
implement this nicely...).

My recommendation would be to add a dropin file
systemd-fsck@.service/foobar.conf or so, which adds the reverse
dependency of the one you are looking for. Or in other words: extend the
systemd-fsck@.service definition, instead of your growroot.service definition.

> 
> [Service]
> Type=oneshot
> ExecStart=/bin/growroot
> StandardOutput=syslog+console
> StandardError=syslog+console

These two are unnecessary, as all services stdout/stderr will be
connected to the journal anyway by default, and "syslog" and "journal"
in this context are pretty much identical (in fact, we should probably
remove any reference to syslog in the docs, to avoid the confusion...)

> Also, I suspect I need to add this service to a target unit. What would be
> the most appropriate one? Currently it's initrd.target.

This sounds appropriate for an initrd service.

Lennart

-- 
Lennart Poettering, Red Hat
-- 
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux