[systemd-devel] Implementing resume from hibernation as a systemd unit file
intelfx100 at gmail.com
Fri Aug 15 15:35:06 PDT 2014
On Friday 15 August 2014 at 12:19:50, Lennart Poettering wrote:
> > > >
> > > > I'd like to make this work both with initramfs and without one (provided that
> > > > the rootfs has been mounted read-only by using 'ro' kernel cmdline parameter).
> > > >
> > > > In this case, what are the needed orderings?
> > >
> > > Actually systemd-remount-fs.service uses After=local-fs-pre.target
> > > anyway, so ordering before l-f-p.t should be nough.
> > Hm. In git (v215-651-g41488fe), it is
> > Before=local-fs-pre.target local-fs.target shutdown.target
> > Wants=local-fs-pre.target
> Ah, right. This is actually correct here. We want to make sure that the
> root fs is remounted before we mount the other units, since this might
> required creating additional directories to mount things on...
> There are two more complications:
> a) if you want to make use of local-fs-pre.target you actually have to
> pull it in, it's a "passive" unit. See systemd.special(5).
> b) You want to run your stuff before fsck is run on the devices, so that
> you don't end up interrupting an fsck that is half in progress.
> To put this together, in your unit file you need:
> Before=local-fs-pre.target systemd-remount-fs.service systemd-fsck-root.service
> That should be enough. (You don't need to individually order the
> systemd-fsck at .service instances for the other devices after your
> service, since they are already ordered after systemd-fsck-root.service,
> and you order yourself before that, so all is good).
One more question. What about setups with no initrd and read-write rootfs?
In such cases, the resume unit must silently skip itself.
ConditionPathIsReadWrite=!/ doesn't seem to be useful here: with initramfs
this check will yield a false-negative.
This can be solved by introducing two resume units (say,
systemd-resume at .service and initrd-resume at .service), first with
Before=local-fs-pre.target systemd-remount-fs.service systemd-fsck-root.service
and the second one with
# something else ?
BTW... are you sure that the second variant (in initramfs) does not require something
to order before sysroot.mount and all fsck units?..
Ivan Shapovalov / intelfx /
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 213 bytes
Desc: This is a digitally signed message part.
More information about the systemd-devel