Skip to content

Commit 25a8774

Browse files
committed
Update test-image-overlayroot integration test
Use proper systemd mount units to setup the custom overlay. The handling of fstab entries by systemd is limited and should be better handled by self managed mount units
1 parent 16affb7 commit 25a8774

File tree

2 files changed

+72
-16
lines changed

2 files changed

+72
-16
lines changed

build-tests/x86/tumbleweed/test-image-overlayroot/appliance.kiwi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
<type
7272
image="oem"
7373
filesystem="xfs"
74-
kernelcmdline="console=ttyS0 rd.systemd.verity=1 security=selinux selinux=1 enforcing=1 rd.root.overlay.readonly"
74+
kernelcmdline="console=ttyS0 rd.systemd.verity=1 security=selinux selinux=0 enforcing=0 rd.root.overlay.readonly"
7575
firmware="efi"
7676
format="vmdk"
7777
overlayroot="true"

build-tests/x86/tumbleweed/test-image-overlayroot/config.sh

Lines changed: 71 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ echo "Configure image: [$kiwi_iname]..."
1414
#--------------------------------------
1515
systemctl enable sshd
1616

17+
# for some reason systemd automount unit wants to mount the
18+
# ESP to /efi instead of /boot/efi.
19+
mkdir -p /efi
20+
1721
#======================================
1822
# kernel links
1923
#--------------------------------------
@@ -57,23 +61,75 @@ for profile in ${kiwi_profiles//,/ }; do
5761
# ssh host keys must exist prior read-only
5862
/usr/sbin/sshd-gen-keys-start
5963

60-
cat >/etc/fstab.append <<- EOF
61-
# we want home on the persistent storage if present
62-
overlay /home overlay defaults,lowerdir=/run/overlay/rootfsbase/home,upperdir=/run/overlay/overlayfs/home/rw,workdir=/run/overlay/overlayfs/home/work 0 0
63-
64-
# we want root home to be 128M in memory
65-
tmpfs /run/overlay/overlayfs/root tmpfs defaults,size=128M 0 0
66-
overlay /root overlay defaults,x-systemd.required-by=run-overlay-overlayfs-root.mount,lowerdir=/run/overlay/rootfsbase/root,upperdir=/run/overlay/overlayfs/root/rw,workdir=/run/overlay/overlayfs/root/work 0 0
64+
# we want home on the persistent storage if present
65+
cat >/usr/lib/systemd/system/home.mount <<-EOF
66+
[Unit]
67+
DefaultDependencies=no
68+
[Mount]
69+
Where=/home
70+
Options=lowerdir=/run/overlay/rootfsbase/home,upperdir=/run/overlay/overlayfs/home/rw,workdir=/run/overlay/overlayfs/home/work
71+
What=overlay
72+
Type=overlay
73+
DirectoryMode=0755
74+
[Install]
75+
WantedBy=multi-user.target
76+
EOF
77+
systemctl enable home.mount
6778

68-
# required write areas on a read-only (/)
69-
tmpfs /etc/lvm/devices tmpfs defaults 0 0
70-
tmpfs /tmp tmpfs defaults 0 0
71-
tmpfs /var/tmp tmpfs defaults 0 0
72-
tmpfs /var/log tmpfs defaults 0 0
73-
tmpfs /var/lib/private/systemd/timesync tmpfs defaults 0 0
74-
tmpfs /var/lib/systemd/timesync tmpfs defaults 0 0
75-
tmpfs /var/lib/systemd/linger tmpfs defaults 0 0
79+
# we want root home to be 128M in memory
80+
cat >/usr/lib/systemd/system/run-overlay-overlayfs-root.mount <<-EOF
81+
[Unit]
82+
DefaultDependencies=no
83+
[Mount]
84+
Where=/run/overlay/overlayfs/root
85+
What=tmpfs
86+
Options=size=128M
87+
Type=tmpfs
88+
DirectoryMode=0755
89+
[Install]
90+
WantedBy=multi-user.target
7691
EOF
92+
cat >/usr/lib/systemd/system/root.mount <<-EOF
93+
[Unit]
94+
DefaultDependencies=no
95+
Requires=run-overlay-overlayfs-root.mount
96+
After=run-overlay-overlayfs-root.mount
97+
[Mount]
98+
Where=/root
99+
Options=lowerdir=/run/overlay/rootfsbase/root,upperdir=/run/overlay/overlayfs/root/rw,workdir=/run/overlay/overlayfs/root/work
100+
What=overlay
101+
Type=overlay
102+
DirectoryMode=0755
103+
[Install]
104+
WantedBy=multi-user.target
105+
EOF
106+
systemctl enable run-overlay-overlayfs-root.mount
107+
systemctl enable root.mount
108+
109+
# required write areas on a read-only (/)
110+
for target in \
111+
etc/lvm/devices \
112+
tmp \
113+
var/tmp \
114+
var/log \
115+
var/lib/private/systemd/timesync \
116+
var/lib/systemd/timesync \
117+
var/lib/systemd/linger;
118+
do
119+
name=$(echo "${target}" | tr / -)
120+
cat >/usr/lib/systemd/system/"${name}".mount <<-EOF
121+
[Unit]
122+
DefaultDependencies=no
123+
[Mount]
124+
Where=/${target}
125+
What=tmpfs
126+
Type=tmpfs
127+
DirectoryMode=0755
128+
[Install]
129+
WantedBy=multi-user.target
130+
EOF
131+
systemctl enable "${name}".mount
132+
done
77133
fi
78134
done
79135

0 commit comments

Comments
 (0)