I looked at this a bit closer and we already bind mount everything /etc* in initrd. So my initial hunch was wrong. It turns out the issue is that src/basic/time-util.c:get_timezone() is smart and checks the prefix of the symlink target of /etc/localtime.
The attached patch for systemd fixes this on focal and we will need something similar for xenial, bionic. We also need a proper spread regression test for snapd - which should be trivial to write as we have tests/core/system-settings already which checks that this works *except* the reboot :(
I looked at this a bit closer and we already bind mount everything /etc* in initrd. So my initial hunch was wrong. It turns out the issue is that src/basic/ time-util. c:get_timezone( ) is smart and checks the prefix of the symlink target of /etc/localtime.
The attached patch for systemd fixes this on focal and we will need something similar for xenial, bionic. We also need a proper spread regression test for snapd - which should be trivial to write as we have tests/core/ system- settings already which checks that this works *except* the reboot :(