[systemd-devel] [PATCH] Generate a fake systemd-fsck-root.service in the initramfs
zbyszek at in.waw.pl
Sun May 10 12:47:58 PDT 2015
On Sun, May 10, 2015 at 09:59:18PM +0300, Andrei Borzenkov wrote:
> В Sun, 10 May 2015 17:23:12 +0000
> Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl> пишет:
> > On Wed, May 06, 2015 at 07:12:07PM +0200, Lennart Poettering wrote:
> > > On Wed, 06.05.15 15:50, Harald Hoyer (harald.hoyer at gmail.com) wrote:
> > >
> > > > Works for me... booted with "ro" on the kernel cmdline:
> > > >
> > > > $ systemctl status systemd-fsck-root.service
> > > > ● systemd-fsck-root.service - File System Check on Root Device
> > > > Loaded: loaded (/usr/lib/systemd/system/systemd-fsck-root.service; static;
> > > > vendor preset: disabled)
> > > > Active: inactive (dead) since Mi 2015-05-06 15:37:58 CEST; 1min 44s ago
> > > > Docs: man:systemd-fsck-root.service(8)
> > > > Main PID: 144 (code=exited, status=0/SUCCESS)
> > > > CGroup: /system.slice/systemd-fsck-root.service
> > >
> > > I think tis is really confusing for the admin. he now thinks that this
> > > is actually the exit status of the root fsck, but it's atcually just
> > > /bin/true.
> > I pushed now a version which generates a real systemd-fsck-root.service
> > in the initramfs.
> > It *does* introduce the extra synchronization dep. If it turns out to be
> > a problem, it should be easy enough to fix,
> If it easy to fix, why not do it upfront?
I see two ways to implement that:
- add a target (e.g. systemd-fsck-root.target), and order systemd-fsck-root.service
before it, systemd-fsck-root at .service after it, but don't install this target
into the initramfs. This way, we'll have a dependency only in the real fs.
- make the After=systemd-fsck-root.service dependency only in the real fs.
For example, this could be done by moving it to a snippet
/usr/lib/systemd/system/systemd-fsck at .service.d/root-dependency.conf,
and not installing this snippet in the initramfs.
Either way is "easy", but annoyingly visible. If you have a non-theoretical
use case where this matters, or a simpler / less visible way to do it,
then indeed I'd do it right now.
More information about the systemd-devel