[systemd-devel] [PATCH] Generate a fake systemd-fsck-root.service in the initramfs

Andrei Borzenkov arvidjaar at gmail.com
Sun May 10 13:36:50 PDT 2015


В Sun, 10 May 2015 19:47:58 +0000
Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl> пишет:

> 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.
> 

I see. No, I do not have practical example before me. The only case
I'm aware of when this would matter is root on loop, but I have never
seen such system myself (and distribution I use currently does not
offer this in installer, as far as I know).


More information about the systemd-devel mailing list