@@ -92,28 +92,60 @@ copy_binaries() {
9292 log_success " Binaries copied and dependencies linked"
9393}
9494
95+ setup_subuid_subgid () {
96+ log_info " Setting up subuid/subgid..."
97+ hostrun sh -c ' echo "sysbox:200000:65536" > /etc/subuid'
98+ hostrun sh -c ' echo "sysbox:200000:65536" > /etc/subgid'
99+ log_success " Created subuid/subgid mappings"
100+ }
101+
95102# Setup /etc overlay and configuration
96103setup_etc_overlay () {
104+ # Check if main overlay already exists
105+ if hostrun mount | grep -q " /etc .*overlay" ; then
106+ log_warning " /etc already has overlay mounted - skipping mount"
107+ return
108+ fi
109+
97110 log_info " Setting up /etc overlay..."
98111
99- # Create persistent overlay directories
100- hostrun mkdir -p /dstack/persistent/sysbox-etc- overlay/upper /dstack/persistent/sysbox-etc- overlay/work
112+ # Create volatile overlay directories for /etc
113+ hostrun mkdir -p /var/volatile/ overlay/etc/sysbox/ upper /var/volatile/ overlay/etc/sysbox /work
101114
102- # Check if main overlay already exists
103- if hostrun mount | grep -q " /etc.*overlay.*sysbox-etc-overlay" ; then
104- log_warning " /etc already has sysbox overlay mounted"
105- else
106- # Mount main /etc overlay
107- hostrun mount -t overlay overlay \
108- -o lowerdir=/etc,upperdir=/dstack/persistent/sysbox-etc-overlay/upper,workdir=/dstack/persistent/sysbox-etc-overlay/work \
109- /etc
110- log_success " Main /etc overlay mounted"
115+ # Preserve wireguard config if it exists in volatile storage
116+ if [ -f /host/var/volatile/overlay/etc/wireguard/upper/wg0.conf ]; then
117+ log_info " Preserving existing wireguard configuration..."
118+ mkdir -p /host/var/volatile/overlay/etc/sysbox/upper/wireguard
119+ cp /host/var/volatile/overlay/etc/wireguard/upper/* /host/var/volatile/overlay/etc/sysbox/upper/wireguard/ 2> /dev/null || true
111120 fi
112121
113- # Create subuid/subgid
114- hostrun sh -c ' echo "sysbox:200000:65536" > /etc/subuid'
115- hostrun sh -c ' echo "sysbox:200000:65536" > /etc/subgid'
116- log_success " Created subuid/subgid mappings"
122+ # Preserve docker config if it exists in volatile storage
123+ if [ -d /host/var/volatile/overlay/etc/docker/upper ]; then
124+ log_info " Preserving existing Docker configuration..."
125+ mkdir -p /host/var/volatile/overlay/etc/sysbox/upper/docker
126+ cp -r /host/var/volatile/overlay/etc/docker/upper/* /host/var/volatile/overlay/etc/sysbox/upper/docker/ 2> /dev/null || true
127+ fi
128+
129+ # Unmount existing individual overlays (except /etc/users which should remain persistent)
130+ log_info " Unmounting individual overlays..."
131+ hostrun umount /etc/wireguard 2> /dev/null || true
132+ hostrun umount /etc/docker 2> /dev/null || true
133+
134+ # Mount volatile /etc overlay
135+ hostrun mount -t overlay overlay \
136+ -o lowerdir=/etc,upperdir=/var/volatile/overlay/etc/sysbox/upper,workdir=/var/volatile/overlay/etc/sysbox/work \
137+ /etc
138+ log_success " Volatile /etc overlay mounted"
139+
140+ # Remount /etc/users as persistent (if it exists) to override the volatile /etc mount
141+ if [ -d /host/dstack/persistent/overlay/etc/users ]; then
142+ log_info " Remounting /etc/users as persistent overlay..."
143+ hostrun mkdir -p /dstack/persistent/overlay/etc/users/upper /dstack/persistent/overlay/etc/users/work
144+ hostrun mount -t overlay overlay \
145+ -o lowerdir=/etc/users,upperdir=/dstack/persistent/overlay/etc/users/upper,workdir=/dstack/persistent/overlay/etc/users/work \
146+ /etc/users
147+ log_success " /etc/users mounted as persistent overlay"
148+ fi
117149}
118150
119151# Configure Docker runtime
@@ -231,7 +263,6 @@ show_status() {
231263 echo
232264 echo " 📁 Data Location:"
233265 echo " • Sysbox data: /dstack/persistent/sysbox-data"
234- echo " • Overlay data: /dstack/persistent/sysbox-etc-overlay"
235266 echo
236267}
237268
@@ -240,6 +271,7 @@ main() {
240271 check_existing
241272 copy_binaries
242273 setup_etc_overlay
274+ setup_subuid_subgid
243275 configure_docker
244276 create_systemd_services
245277 start_sysbox
0 commit comments