Hi folks,

I was recently doing a bunch of test reinstalls of Fedora [1],
looking to see if it's complicated to retain the user directories
during a reinstall. The answer is, sadly, that it's possible only with
some manual tinkering. This is a known problem [2].

With a little bit of trickery, Anaconda will let the "home" subvolume
be and install the system to a new "root" subvolume, so user data is
preserved. But then after a reboot a new user will be created, because
the old user is not hooked up into /etc/passwd.

We actually have a partial solution for this: systemd-homed.
With systemd-homed the information about the user is maintained in the
user directory/subvolume/partition, e.g. /home/username.homedir.
After a reinstall, ideally nothing needs to be done and the user
account is ready to be used.

The primary purpose of systemd-homed is to use per-user encryption
using loopback devices. This still has various problem related to
resizing and suspend. Work is being done [see 3,4 for recent developments],
but it's not at a point where we can recommend it.
But systemd-homed has a mode where the user "home" is just a normal
directory or btrfs subvolume with some metadata stored in files [5].
Some work would be needed [6] to make this work smoothly, but it
doesn't seem like too much. (Mostly filing down some rough edges
in systemd-homed and adding pam_home_systemd and nss_systemd
in various authselect profiles.)

Thus the question: would this be something worth looking into?

[1] 
https://discussion.fedoraproject.org/t/feedback-anaconda-web-ui-partitioning/108995/65
[2] 
https://discussion.fedoraproject.org/t/its-difficult-to-reformat-a-btrfs-partition-subvolume-in-the-installer/89052
[3] https://cfp.all-systems-go.io/all-systems-go-2024/talk/FFY3BB/
[4] https://www.youtube.com/watch?v=3e3IhBBU0JY
[5] https://systemd.io/HOME_DIRECTORY/
[6] When I tested this today, this actually doesn't work.
    systemd-homed does a misguided check that break reinstalls.
    We'd need to figure out some solution here. Most likely just
    conditionalize that part of the code.

Zbyszek
-- 
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to