@@ -68,6 +68,7 @@ RUN set -x \
68
68
RUN set -x \
69
69
&& mkdir -p /tmp/workdir && cd /tmp/workdir \
70
70
&& SYSTEMD_SYSTEM=/usr/lib/systemd/system \
71
+ && SYSTEMD_REQUIRES_LOCAL_FS=$SYSTEMD_SYSTEM/local-fs.target.requires \
71
72
# Download Tizen images
72
73
&& wget --progress=dot:giga -r -nd --no-parent -e robots=off -A 'tizen-*.tar.gz' \
73
74
http://download.tizen.org/snapshots/TIZEN/Tizen-$TIZEN_VERSION/Tizen-$TIZEN_VERSION-Unified/latest/images/standard/tizen-headless-armv7l/ \
@@ -80,7 +81,7 @@ RUN set -x \
80
81
&& apt-get update \
81
82
&& DEBIAN_FRONTEND=noninteractive apt-get install -fy --no-install-recommends libguestfs-tools linux-image-generic \
82
83
# Add extra libraries to the root image
83
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda glob copy-in \
84
+ && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda copy-in \
84
85
$TIZEN_SDK_TOOLCHAIN/arm-tizen-linux-gnueabi/lib/libasan.so.* \
85
86
$TIZEN_SDK_TOOLCHAIN/arm-tizen-linux-gnueabi/lib/libubsan.so.* \
86
87
$TIZEN_SDK_SYSROOT/usr/lib/libbluetooth-api.so.* \
@@ -89,17 +90,22 @@ RUN set -x \
89
90
$TIZEN_SDK_SYSROOT/usr/lib/libnsd-dns-sd.so.* \
90
91
/usr/lib/ \
91
92
# Disable failing systemd services
92
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda glob rm $SYSTEMD_SYSTEM/deviced.service \
93
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda glob rm $SYSTEMD_SYSTEM/mnt-inform.mount \
94
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda glob rm $SYSTEMD_SYSTEM/murphyd.service \
95
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda glob rm $SYSTEMD_SYSTEM/pulseaudio.service \
93
+ && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda \
94
+ glob rm $SYSTEMD_SYSTEM/clone_partitions.service : \
95
+ glob rm $SYSTEMD_SYSTEM/deviced.service : \
96
+ glob rm $SYSTEMD_SYSTEM/mm-resource-managerd.service : \
97
+ glob rm $SYSTEMD_SYSTEM/mnt-inform.mount : \
98
+ glob rm $SYSTEMD_SYSTEM/muse-server.* : \
99
+ glob rm $SYSTEMD_SYSTEM/murphyd.service : \
100
+ glob rm $SYSTEMD_SYSTEM/pulseaudio.service \
96
101
# Mount Tizen system partition on /opt-ro instead of /opt
97
102
&& SYSTEMD_UNIT_OPT_RO_MOUNT=$SYSTEMD_SYSTEM/opt\\ x2dro.mount \
98
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda ln-sf $SYSTEMD_UNIT_OPT_RO_MOUNT $SYSTEMD_SYSTEM/local-fs.target.requires \
99
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda mv $SYSTEMD_SYSTEM/opt.mount $SYSTEMD_UNIT_OPT_RO_MOUNT \
103
+ && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda \
104
+ mv $SYSTEMD_SYSTEM/opt.mount $SYSTEMD_UNIT_OPT_RO_MOUNT : \
105
+ ln-sf $SYSTEMD_UNIT_OPT_RO_MOUNT $SYSTEMD_REQUIRES_LOCAL_FS : \
106
+ mkdir /opt-ro \
100
107
&& virt-edit $TIZEN_IOT_IMAGE_ROOT -e 's#/opt#/opt-ro#g' $SYSTEMD_UNIT_OPT_RO_MOUNT \
101
108
&& virt-edit $TIZEN_IOT_IMAGE_ROOT -e 's#Options=#Options=ro,#' $SYSTEMD_UNIT_OPT_RO_MOUNT \
102
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda mkdir /opt-ro \
103
109
# Create /tmp/.opt-upper and /tmp/.opt-work after /tmp is mounted
104
110
&& SYSTEMD_UNIT_OPT_PRE_MOUNT=$SYSTEMD_SYSTEM/opt.pre-mount.service \
105
111
&& echo -n \
@@ -113,7 +119,6 @@ RUN set -x \
113
119
| guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda upload - $SYSTEMD_UNIT_OPT_PRE_MOUNT \
114
120
# Mount Tizen system partition as a tmp-based overlay
115
121
&& SYSTEMD_UNIT_OPT_MOUNT=$SYSTEMD_SYSTEM/opt.mount \
116
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda ln-sf $SYSTEMD_UNIT_OPT_MOUNT $SYSTEMD_SYSTEM/local-fs.target.requires \
117
122
&& echo -n \
118
123
"[Unit]\n ConditionPathIsMountPoint=!/opt\n " \
119
124
"RequiresMountsFor=/opt-ro /tmp\n " \
@@ -124,10 +129,10 @@ RUN set -x \
124
129
"Where=/opt\n " \
125
130
"Type=overlay\n " \
126
131
"Options=lowerdir=/opt-ro,upperdir=/tmp/.opt-upper,workdir=/tmp/.opt-work\n " \
127
- | guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda upload - $SYSTEMD_UNIT_OPT_MOUNT \
132
+ | guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda upload - $SYSTEMD_UNIT_OPT_MOUNT : \
133
+ ln-sf $SYSTEMD_UNIT_OPT_MOUNT $SYSTEMD_REQUIRES_LOCAL_FS \
128
134
# Fix SMACK label for /tmp/.opt-work/work
129
135
&& SYSTEMD_UNIT_OPT_POST_MOUNT=$SYSTEMD_SYSTEM/opt.post-mount.service \
130
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda ln-sf $SYSTEMD_UNIT_OPT_POST_MOUNT $SYSTEMD_SYSTEM/local-fs.target.requires \
131
136
&& echo -n \
132
137
"[Unit]\n " \
133
138
"DefaultDependencies=no\n " \
@@ -136,30 +141,37 @@ RUN set -x \
136
141
"Type=oneshot\n " \
137
142
"ExecStart=chsmack -a * /tmp/.opt-work/work\n " \
138
143
"RemainAfterExit=yes\n " \
139
- | guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda upload - $SYSTEMD_UNIT_OPT_POST_MOUNT \
144
+ | guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda upload - $SYSTEMD_UNIT_OPT_POST_MOUNT : \
145
+ ln-sf $SYSTEMD_UNIT_OPT_POST_MOUNT $SYSTEMD_REQUIRES_LOCAL_FS \
140
146
# Mount Matter ISO image on startup
141
147
&& SYSTEMD_UNIT_CHIP_MOUNT=$SYSTEMD_SYSTEM/mnt-chip.mount \
142
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda ln-sf $SYSTEMD_UNIT_CHIP_MOUNT $SYSTEMD_SYSTEM/local-fs.target.requires \
143
148
&& echo -n \
144
149
"[Unit]\n " \
145
150
"ConditionPathIsMountPoint=!/mnt/chip\n " \
146
151
"[Mount]\n " \
147
152
"What=/dev/disk/by-label/CHIP\n " \
148
153
"Where=/mnt/chip\n " \
149
154
"Options=nofail\n " \
150
- | guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda upload - $SYSTEMD_UNIT_CHIP_MOUNT \
151
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda mkdir /mnt/chip \
155
+ | guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda upload - $SYSTEMD_UNIT_CHIP_MOUNT : \
156
+ ln-sf $SYSTEMD_UNIT_CHIP_MOUNT $SYSTEMD_REQUIRES_LOCAL_FS : \
157
+ mkdir /mnt/chip \
152
158
# Setup auto-login for root user
153
159
&& SYSTEMD_UNIT_SERIAL_GETTY=$SYSTEMD_SYSTEM/serial-getty@.service \
154
160
&& virt-edit $TIZEN_IOT_IMAGE_ROOT -e \
155
161
's#^ExecStart=.*#ExecStart=-/sbin/agetty -o "-p -f root" --noclear -a root --keep-baud 115200 %I \$ TERM#' $SYSTEMD_UNIT_SERIAL_GETTY \
162
+ # Run serial-getty.service after multi-user.target
163
+ && SYSTEMD_WANTS_GRAPHICAL=$SYSTEMD_SYSTEM/graphical.target.wants \
164
+ && SYSTEMD_WANTS_MULTI_USER=$SYSTEMD_SYSTEM/multi-user.target.wants \
165
+ && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda mv $SYSTEMD_WANTS_MULTI_USER/getty.target $SYSTEMD_WANTS_GRAPHICAL \
166
+ && virt-edit $TIZEN_IOT_IMAGE_ROOT -e 's#^After=#Before=serial-getty\@ ttyAMA0.service\n After=#' $SYSTEMD_SYSTEM/multi-user.target \
156
167
# Execute launcher script after root login
157
168
&& echo -n \
158
169
"[ -x /launcher.sh ] && /launcher.sh\n " \
159
170
| guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda upload - /root/.profile \
160
171
# Launcher script
161
172
&& echo -n \
162
173
"#!/bin/bash\n " \
174
+ "grep -q 'rootshell' /proc/cmdline && exit\n " \
163
175
"if [[ -x /mnt/chip/runner.sh ]]; then\n " \
164
176
" echo '### RUNNER START ###'\n " \
165
177
" /mnt/chip/runner.sh\n " \
@@ -169,8 +181,7 @@ RUN set -x \
169
181
"fi\n " \
170
182
"echo 'Shutting down emulated system...'\n " \
171
183
"echo o > /proc/sysrq-trigger\n " \
172
- | guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda upload - /launcher.sh \
173
- && guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda chmod 0755 /launcher.sh \
184
+ | guestfish --rw -a $TIZEN_IOT_IMAGE_ROOT -m /dev/sda upload - /launcher.sh : chmod 0755 /launcher.sh \
174
185
# Remove ALL previously installed packages
175
186
&& apt-get autopurge -fy $(tail -2 /var/log/apt/history.log | grep ^Install | cut -c 10- | sed 's/([^)]*),\? //g' ) \
176
187
&& rm -rf /var/lib/apt/lists \
0 commit comments