Skip to content

Commit

Permalink
eos-test-mode: Remount eos-live overlays in some services' namespace
Browse files Browse the repository at this point in the history
Some systemd services start before execute eos-test-mode. And, if they
mount the real storage blocks to paths under /sysroot in their namespace
directly, then the modification under those paths will be kept, even
"test mode" is finished. Therefore, the filesystem is not fresh new for
the real end-user. This is caused by ostree making the /sysroot mount
private.

This commit remounts the eos-live overlays by restarting the systemd
services which mount a real storage block to paths under /systemd in
their namespace.

https://phabricator.endlessm.com/T35625
  • Loading branch information
starnight committed Aug 29, 2024
1 parent 95f55c8 commit 28e58e8
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions eos-test-mode
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,15 @@ systemctl mask --runtime --now eos-autoupdater.timer eos-autoupdater.service

# Disable phoning home for this boot, too
systemctl mask --runtime --now eos-phone-home.{service,timer,path}

# Restart systemd services which mount real storage blocks to the paths under
# /sysroot/ directly. This helps them remount the eos-live overlays in their
# namespace. This is caused by ostree making the /sysroot mount private.
# https://phabricator.endlessm.com/T35625
pattern='$1 ~ "^/dev/" && $2 ~ "^/sysroot/"'
action='{split(FILENAME, p, "/"); print p[3]; nextfile}'
awk "$pattern $action" /proc/*/mounts | uniq | while read -r pid;
do
service=$(systemctl whoami $pid)
systemctl restart $service
done

0 comments on commit 28e58e8

Please sign in to comment.