Fedora 40 upgrade, non-root partitions no longer automounted

After upgrading to Fedora 40 via dnf on the Xfce spin I had an issue where after logging in the system (lightdm), I would get kicked back on the login screen. Normally my account is set to autologin, which made it seem even stranger.

Turns out that my /home partition wasn’t getting mounted. My partitioning isn’t very complicated, as it was done mostly through the live installer. It basically consists of a LUKS encrypted block storage device, which has two partitions / (root) and /home (plus a separate /storage partition I keep on a separate disk). My fstab:

UUID=2bbd16f3-3182-465f-9cf7-8b0633f5936c /boot                   ext4    defaults        1 2
UUID=9F16-1726          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
UUID=2bc7af9b-80e9-4df6-92f0-73ffb104f096 /                       btrfs   subvol=root,ssd,noatime,space_cache,discard=async,compress=zstd:1,x-systemd.device-timeout=0 0 0
UUID=2bc7af9b-80e9-4df6-92f0-73ffb104f096 /home                   btrfs   subvol=home,ssd,noatime,space_cache,discard=async,compress=zstd:1,x-systemd.device-timeout=0 0 0
/dev/mapper/fedora-storage /storage ext4 defaults,noatime 0 0

It might be because of systemd-homed

I don’t think I had systemd-homed enabled prior to Fedora 40, or at least I haven’t manually enabled it before, and couldn’t find any relevant changelog.

What I did notice was that the service was enabled, and the that home.mount unit had systemd-homed.service as a Before= constraint, and there was a Conflicts= target which would force the /home partition to be unmounted during the boot process.

I can’t share the exact values, since I’ve patched around the issue in frustration, and taking detailed notes wasn’t my priority.

Fact is that homectl binary (part of systemd-homed) didn’t see the system as having any users (maybe this is the source of the problem?), and if I do a userdbctl control listing, my user is outside the systemd-homed user ids:

└─ ↑ end system users ↑           system             999     - Last system user                                                -                         -                
   dm                             regular           1000  1000 my name                                                    /home/dm                  /usr/bin/zsh
┌─ ↓ begin systemd-homed users ↓  regular          60001     - First systemd-homed user                                        -                         -                
└─ ↑ end systemd-homed users ↑    regular          60513     - Last systemd-homed user                                         -                         -    

Maybe a missing user migration issue when updating existing systems to systemd-homed?

My workaround

I’ve disabled systemd-homed.service, and used the the systemd-fstab-generator command to generate fresh home.mount file from my fstab definition, which I then modified to include an [Install] section with a WantedBy=default.target and moved that new file to /etc/systemd/system/home.mount

/usr/lib/systemd/system-generators/systemd-fstab-generator /tmp '' ''
vi /tmp/home.mount # add WantedBy=
sudo mv /tmp/home.mount /etc/systemd/system/home.mount
sudo systemctl daemon-reload
sudo systemctl enable home.mount

Feedback

I’d be happy to know if there is an alternative config I could try to get automounts to work (can I remove a Conflict= in a systemd drop-in override?), because I wouldn’t like to keep the hardcoded home.mount file around because I will at some point forget about it.

systemd-homed has been enabled by default for quite a few releases now, so it is highly likely that it has been enabled also before Fedora 40. If systemd-homed really would cause problems, then it would be strange we don’t hear about it.

On the other hand: if you don’t use it, by all means do disable it.

Where did you find that Conflicts=?

In the output of systemctl show home.mount, but I don’t recall the exact value, as after that I overwrote the .mount file with the generated one.

That would be

Conflicts=umount.target

which means that when starting umount.target this unit should stop. And the umount.target would be started in connection with shutdown or reboot. So quite normal and even desired.

As others ave mentioned, systemd-homed unmounts home on shutdown or reboot. I suspect something went wrong and will be shown in journalctl. May try a side-by-side comparison of a normal boot session and the one that cycled back to login.