[systemd-devel] automount EFI system partition to /efi fails

Zbigniew Jędrzejewski-Szmek zbyszek at in.waw.pl
Wed Apr 25 07:48:13 UTC 2018


On Tue, Apr 24, 2018 at 06:47:24PM -0600, Chris Murphy wrote:
> https://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/
> *The ESP used for the current boot is automatically mounted to /efi (or
> /boot as fallback),*
> 
> systemd-238-7.fc28.1.x86_64
> 
> I've commented out the /boot/efi entry in /etc/fstab and reboot but the ESP
> doesn't get mounted to /efi or /boot or /boot/efi.

gpt-auto-generator cannot mount anything to a nested directory,
because when it's running the outer mount (/boot in this case) will
not be done yet, hence it cannot check if /boot/efi is a directory. So
by design it will only consider /efi and /boot as the targets.
 
> Full journal with systemd.log_level=debug.
> https://drive.google.com/open?id=1b4Lfd0HurX4Z68T1jAHYMC0wy51tQwtk
> 
> I get a couple of confusing items:
> 
> [    3.971099] f28h.local systemd-gpt-auto-generator[476]: /efi already
> populated, ignoring.
> [    4.102022] f28h.local audit[476]: AVC avc:  denied  { read } for
>  pid=476 comm="systemd-gpt-aut" name="efi" dev="nvme0n1p9" ino=3999777
> scontext=system_u:system_r:systemd_gpt_generator_t:s0
> tcontext=unconfined_u:object_r:default_t:s0 tclass=dir permissive=0
> 
> 
> It's definitely empty. But maybe it's due to the avc. chcon fails to set
> the type to systemd_gpt_generator_t which itself gives me an avc.

It's possible that this is the cause. From the AVC we don't see the name,
but we know it's a directory and read() fails on it. Failure to list the
directory will cause gpt-auto-generator to consider the directory busy,
which would lead to the "/efi already populated" message.

> Apr 24 18:42:49 f28h.local audit[4486]: AVC avc:  denied  { relabelto } for
>  pid=4486 comm="chcon" name="efi" dev="nvme0n1p9" ino=3999777
> scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
> tcontext=system_u:object_r:systemd_gpt_generator_t:s0 tclass=dir
> permissive=0
> 
> 
> Next
> 
> 
> [    6.291607] f28h.local systemd[715]: Followed symlinks /efi → /efi.
> [    6.291643] f28h.local systemd[715]: Applying namespace mount on /efi
> [    6.291671] f28h.local systemd[715]: Successfully mounted /efi to /efi
> [    6.294820] f28h.local systemd[715]: Remounted /efi read-only.
> [    6.314602] f28h.local systemd[715]: Remounted /sys/firmware/efi/efivars
> read-only.

It looks like /efi does get mounted. What mounted it?

Zbyszek


More information about the systemd-devel mailing list