Skip to content

Commit 472210d

Browse files
committed
refact: Write multi-line config with printf instead of echo
echo expanding backslash escapes is a dash extension. The apt .sources, sshd and journald snippets would silently become single lines with literal \n if /bin/sh ever changed.
1 parent 84041f9 commit 472210d

5 files changed

Lines changed: 14 additions & 14 deletions

File tree

‎system/Dockerfile‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ RUN sed -i 's/^Components: main$/Components: main non-free-firmware/' /etc/apt/s
9191
&& systemctl enable systemd-timesyncd.service \
9292
&& systemctl mask ssh.socket \
9393
&& systemctl mask sshd-keygen.service \
94-
&& echo "Port 4222\nPermitRootLogin yes" >/etc/ssh/sshd_config.d/cuos.conf \
94+
&& printf "Port 4222\nPermitRootLogin yes\n" >/etc/ssh/sshd_config.d/cuos.conf \
9595
&& rm -f /etc/ssh/ssh_host_* \
9696
&& update-alternatives --install /usr/bin/vim vim /usr/bin/vim.tiny 100 \
9797
## Ensure persistence in /data \
@@ -102,7 +102,7 @@ RUN sed -i 's/^Components: main$/Components: main non-free-firmware/' /etc/apt/s
102102
&& rm -Rf /var/lib/docker && ln -sf /data/docker /var/lib/docker \
103103
&& rm -Rf /var/lib/containerd && ln -sf /data/containerd /var/lib/containerd \
104104
&& rm -Rf /root && ln -sf /data/root /root \
105-
&& echo "[Journal]\nStorage=persistent\nSystemMaxUse=1G\nRuntimeMaxUse=50M\nCompress=yes\nSeal=yes\nSplitMode=uid\nSyncIntervalSec=5m\nRateLimitInterval=30s\nRateLimitBurst=1000" >/etc/systemd/journald.conf \
105+
&& printf "[Journal]\nStorage=persistent\nSystemMaxUse=1G\nRuntimeMaxUse=50M\nCompress=yes\nSeal=yes\nSplitMode=uid\nSyncIntervalSec=5m\nRateLimitInterval=30s\nRateLimitBurst=1000\n" >/etc/systemd/journald.conf \
106106
&& rm /etc/network/interfaces
107107

108108
# Install CuOS scripts (systemd required)

‎system/Dockerfile.lxc‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ RUN echo "Cache buster: v1" \
5454
# No timesyncd for LXC \
5555
&& systemctl mask ssh.socket \
5656
&& systemctl mask sshd-keygen.service \
57-
&& echo "Port 4222\nPermitRootLogin yes" >/etc/ssh/sshd_config.d/cuos.conf \
57+
&& printf "Port 4222\nPermitRootLogin yes\n" >/etc/ssh/sshd_config.d/cuos.conf \
5858
&& rm -f /etc/ssh/ssh_host_* \
5959
&& update-alternatives --install /usr/bin/vim vim /usr/bin/vim.tiny 100 \
6060
## Ensure persistence in /data \
@@ -65,7 +65,7 @@ RUN echo "Cache buster: v1" \
6565
&& rm -Rf /var/lib/docker && ln -sf /data/docker /var/lib/docker \
6666
&& rm -Rf /var/lib/containerd && ln -sf /data/containerd /var/lib/containerd \
6767
&& rm -Rf /root && ln -sf /data/root /root \
68-
&& echo "[Journal]\nStorage=persistent\nSystemMaxUse=1G\nRuntimeMaxUse=50M\nCompress=yes\nSeal=yes\nSplitMode=uid\nSyncIntervalSec=5m\nRateLimitInterval=30s\nRateLimitBurst=1000" >/etc/systemd/journald.conf \
68+
&& printf "[Journal]\nStorage=persistent\nSystemMaxUse=1G\nRuntimeMaxUse=50M\nCompress=yes\nSeal=yes\nSplitMode=uid\nSyncIntervalSec=5m\nRateLimitInterval=30s\nRateLimitBurst=1000\n" >/etc/systemd/journald.conf \
6969
&& rm /etc/network/interfaces \
7070
## LXC \
7171
&& systemctl mask cgroupfs-mount.service sys-kernel-debug.mount

‎system/Dockerfile.orangepi-zero3‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ COPY armbianEnv.txt /boot
1717
RUN echo "Cache buster: v1" \
1818
&& echo "orangepi-zero3" >"/etc/cuos-arch" \
1919
&& sed -i 's/^Components: main$/Components: main non-free-firmware/' /etc/apt/sources.list.d/debian.sources \
20-
&& echo "Types: deb\nURIs: http://apt.armbian.com\nSuites: $(grep -E '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '"')\nComponents: main\nSigned-By: /etc/apt/keyrings/armbian.key" > /etc/apt/sources.list.d/armbian.sources \
20+
&& printf "Types: deb\nURIs: http://apt.armbian.com\nSuites: $(grep -E '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '"')\nComponents: main\nSigned-By: /etc/apt/keyrings/armbian.key\n" > /etc/apt/sources.list.d/armbian.sources \
2121
&& apt-get update \
2222
&& apt-get full-upgrade -y \
2323
&& apt-get clean && rm -rf /var/lib/apt/lists/*
@@ -114,7 +114,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
114114
&& systemctl enable systemd-timesyncd.service \
115115
&& systemctl mask ssh.socket \
116116
&& systemctl mask sshd-keygen.service \
117-
&& echo "Port 4222\nPermitRootLogin yes" >/etc/ssh/sshd_config.d/cuos.conf \
117+
&& printf "Port 4222\nPermitRootLogin yes\n" >/etc/ssh/sshd_config.d/cuos.conf \
118118
&& rm -f /etc/ssh/ssh_host_* \
119119
&& update-alternatives --install /usr/bin/vim vim /usr/bin/vim.tiny 100 \
120120
## Ensure persistence in /data \
@@ -125,7 +125,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
125125
&& rm -Rf /var/lib/docker && ln -sf /data/docker /var/lib/docker \
126126
&& rm -Rf /var/lib/containerd && ln -sf /data/containerd /var/lib/containerd \
127127
&& rm -Rf /root && ln -sf /data/root /root \
128-
&& echo "[Journal]\nStorage=persistent\nSystemMaxUse=1G\nRuntimeMaxUse=50M\nCompress=yes\nSeal=yes\nSplitMode=uid\nSyncIntervalSec=5m\nRateLimitInterval=30s\nRateLimitBurst=1000" >/etc/systemd/journald.conf \
128+
&& printf "[Journal]\nStorage=persistent\nSystemMaxUse=1G\nRuntimeMaxUse=50M\nCompress=yes\nSeal=yes\nSplitMode=uid\nSyncIntervalSec=5m\nRateLimitInterval=30s\nRateLimitBurst=1000\n" >/etc/systemd/journald.conf \
129129
&& rm /etc/network/interfaces \
130130
## Armbian/uBoot \
131131
&& rm -f /etc/fake-hwclock.data && ln -sf /data/fake-hwclock.data /etc/fake-hwclock.data \

‎system/Dockerfile.rpi-arm32‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ EOF
5757

5858
# Add Raspberry Pi apt repository and key
5959
RUN echo "Cache buster: v1" \
60-
&& echo "Types: deb\nURIs: http://raspbian.raspberrypi.com/raspbian/\nArchitectures: armhf\nSuites: trixie\nComponents: main contrib non-free rpi\nSigned-By: /etc/apt/keyrings/raspbian-archive.gpg" >/etc/apt/sources.list.d/debian.sources \
61-
&& echo "Types: deb\nURIs: http://archive.raspberrypi.com/debian/\nSuites: $(grep -E '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '"')\nComponents: main\nSigned-By: /etc/apt/keyrings/raspberrypi-archive.gpg" > /etc/apt/sources.list.d/raspi.sources \
60+
&& printf "Types: deb\nURIs: http://raspbian.raspberrypi.com/raspbian/\nArchitectures: armhf\nSuites: trixie\nComponents: main contrib non-free rpi\nSigned-By: /etc/apt/keyrings/raspbian-archive.gpg\n" >/etc/apt/sources.list.d/debian.sources \
61+
&& printf "Types: deb\nURIs: http://archive.raspberrypi.com/debian/\nSuites: $(grep -E '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '"')\nComponents: main\nSigned-By: /etc/apt/keyrings/raspberrypi-archive.gpg\n" > /etc/apt/sources.list.d/raspi.sources \
6262
&& dpkg --add-architecture arm64 \
6363
&& apt-get update \
6464
&& apt-get full-upgrade -y \
@@ -153,7 +153,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
153153
&& systemctl enable systemd-timesyncd.service \
154154
&& systemctl mask ssh.socket \
155155
&& systemctl mask sshd-keygen.service \
156-
&& echo "Port 4222\nPermitRootLogin yes" >/etc/ssh/sshd_config.d/cuos.conf \
156+
&& printf "Port 4222\nPermitRootLogin yes\n" >/etc/ssh/sshd_config.d/cuos.conf \
157157
&& rm -f /etc/ssh/ssh_host_* \
158158
&& update-alternatives --install /usr/bin/vim vim /usr/bin/vim.tiny 100 \
159159
## Ensure persistence in /data \
@@ -164,7 +164,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
164164
&& rm -Rf /var/lib/docker && ln -sf /data/docker /var/lib/docker \
165165
&& rm -Rf /var/lib/containerd && ln -sf /data/containerd /var/lib/containerd \
166166
&& rm -Rf /root && ln -sf /data/root /root \
167-
&& echo "[Journal]\nStorage=persistent\nSystemMaxUse=1G\nRuntimeMaxUse=50M\nCompress=yes\nSeal=yes\nSplitMode=uid\nSyncIntervalSec=5m\nRateLimitInterval=30s\nRateLimitBurst=1000" >/etc/systemd/journald.conf \
167+
&& printf "[Journal]\nStorage=persistent\nSystemMaxUse=1G\nRuntimeMaxUse=50M\nCompress=yes\nSeal=yes\nSplitMode=uid\nSyncIntervalSec=5m\nRateLimitInterval=30s\nRateLimitBurst=1000\n" >/etc/systemd/journald.conf \
168168
&& rm /etc/network/interfaces \
169169
## RPI \
170170
&& rm -f /etc/fake-hwclock.data && ln -sf /data/fake-hwclock.data /etc/fake-hwclock.data \

‎system/Dockerfile.rpi-arm64‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ EOF
4141

4242
# Add Raspberry Pi apt repository and key
4343
RUN echo "Cache buster: v1" \
44-
&& echo "Types: deb\nURIs: http://archive.raspberrypi.com/debian/\nSuites: $(grep -E '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '"')\nComponents: main\nSigned-By: /etc/apt/keyrings/raspberrypi-archive.gpg" > /etc/apt/sources.list.d/raspi.sources \
44+
&& printf "Types: deb\nURIs: http://archive.raspberrypi.com/debian/\nSuites: $(grep -E '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '"')\nComponents: main\nSigned-By: /etc/apt/keyrings/raspberrypi-archive.gpg\n" > /etc/apt/sources.list.d/raspi.sources \
4545
&& apt-get update \
4646
&& apt-get full-upgrade -y \
4747
&& apt-get clean && rm -rf /var/lib/apt/lists/*
@@ -134,7 +134,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
134134
&& systemctl enable systemd-timesyncd.service \
135135
&& systemctl mask ssh.socket \
136136
&& systemctl mask sshd-keygen.service \
137-
&& echo "Port 4222\nPermitRootLogin yes" >/etc/ssh/sshd_config.d/cuos.conf \
137+
&& printf "Port 4222\nPermitRootLogin yes\n" >/etc/ssh/sshd_config.d/cuos.conf \
138138
&& rm -f /etc/ssh/ssh_host_* \
139139
&& update-alternatives --install /usr/bin/vim vim /usr/bin/vim.tiny 100 \
140140
## Ensure persistence in /data \
@@ -145,7 +145,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
145145
&& rm -Rf /var/lib/docker && ln -sf /data/docker /var/lib/docker \
146146
&& rm -Rf /var/lib/containerd && ln -sf /data/containerd /var/lib/containerd \
147147
&& rm -Rf /root && ln -sf /data/root /root \
148-
&& echo "[Journal]\nStorage=persistent\nSystemMaxUse=1G\nRuntimeMaxUse=50M\nCompress=yes\nSeal=yes\nSplitMode=uid\nSyncIntervalSec=5m\nRateLimitInterval=30s\nRateLimitBurst=1000" >/etc/systemd/journald.conf \
148+
&& printf "[Journal]\nStorage=persistent\nSystemMaxUse=1G\nRuntimeMaxUse=50M\nCompress=yes\nSeal=yes\nSplitMode=uid\nSyncIntervalSec=5m\nRateLimitInterval=30s\nRateLimitBurst=1000\n" >/etc/systemd/journald.conf \
149149
&& rm /etc/network/interfaces \
150150
## RPI \
151151
&& rm -f /etc/fake-hwclock.data && ln -sf /data/fake-hwclock.data /etc/fake-hwclock.data \

0 commit comments

Comments
 (0)