summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorHelmut Grohne <helmutg@debian.org>2023-01-15 08:54:06 +0000
committerHelmut Grohne <helmutg@debian.org>2023-01-15 08:54:06 +0000
commitb6aee3905cc52fa206cfbef3fe01d2c6388435a1 (patch)
tree86ab25a9c7434d62019359da0f996d2097aa8247 /share
parent59c77e0c3422287651c6e270917bcfa04a6c17a6 (diff)
parentca2cbf6d84dcc96845fcc6521aebe3b5076cdb32 (diff)
downloaddebvm-b6aee3905cc52fa206cfbef3fe01d2c6388435a1.tar.gz
Merge branch 'helmut' into 'main'
reduce usage of DEBVER See merge request helmutg/debvm!22
Diffstat (limited to 'share')
-rwxr-xr-xshare/customize-autologin.sh23
-rwxr-xr-xshare/customize-dpkgavailable.sh12
-rwxr-xr-xshare/customize-networkd.sh37
-rwxr-xr-xshare/customize-resolved.sh26
4 files changed, 98 insertions, 0 deletions
diff --git a/share/customize-autologin.sh b/share/customize-autologin.sh
new file mode 100755
index 0000000..b9a4a8b
--- /dev/null
+++ b/share/customize-autologin.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Copyright 2022 Helmut Grohne <helmut@subdivi.de>
+# SPDX-License-Identifier: MIT
+#
+# This is a mmdebstrap customize hook that configures automatic root login on a
+# serial console. It also parses the debvm.term kernel cmdline and passes it as
+# TERM to agetty.
+
+set -eu
+
+TARGET=$1
+
+UNIT=serial-getty@.service
+
+mkdir "$TARGET/etc/systemd/system/$UNIT.d"
+
+(
+ echo '[Service]'
+ printf '%s\n' 'ExecStartPre=/bin/sed -n -e "s/^\\(.* \\)\\?\\(TERM=[^ ]*\\).*/\\2/w/run/debvmterm" /proc/cmdline'
+ echo 'EnvironmentFile=-/run/debvmterm'
+ echo 'ExecStart='
+ sed -n 's,^ExecStart=-/sbin/agetty ,&-a root ,p' "$TARGET/lib/systemd/system/$UNIT"
+) > "$TARGET/etc/systemd/system/$UNIT.d/autologin.conf"
diff --git a/share/customize-dpkgavailable.sh b/share/customize-dpkgavailable.sh
new file mode 100755
index 0000000..f35b81f
--- /dev/null
+++ b/share/customize-dpkgavailable.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Copyright 2022 Helmut Grohne <helmut@subdivi.de>
+# SPDX-License-Identifier: MIT
+#
+# This is a mmdebstrap customize hook that initializes dpkg's available
+# database from an updated apt package list cache.
+#
+# Without the available database, dpkg --set-selections won't work.
+
+set -eu
+
+APT_CONFIG=$MMDEBSTRAP_APT_CONFIG apt-cache dumpavail | dpkg --root "$1" --update-avail
diff --git a/share/customize-networkd.sh b/share/customize-networkd.sh
new file mode 100755
index 0000000..c89aae2
--- /dev/null
+++ b/share/customize-networkd.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+# Copyright 2022 Helmut Grohne <helmut@subdivi.de>
+# SPDX-License-Identifier: MIT
+#
+# This is a mmdebstrap customize hook that enables and configures
+# systemd-networkd on various Debian releases.
+
+set -eu
+
+TARGET=$1
+
+SYSTEMD_VERSION=$(dpkg-query --root "$TARGET" -f '${Version}' -W systemd)
+
+if test "${MMDEBSTRAP_MODE:-}" = chrootless; then
+ systemctl --root "$TARGET" enable systemd-networkd.service
+else
+ chroot "$TARGET" systemctl enable systemd-networkd.service
+fi
+
+{
+ echo '[Match]'
+ echo 'Name=en*'
+ if dpkg --compare-versions "$SYSTEMD_VERSION" lt 220-7~; then
+ echo 'Name=eth*'
+ fi
+
+ echo '[Network]'
+ echo 'DHCP=yes'
+
+ if dpkg --compare-versions "$SYSTEMD_VERSION" lt 249; then
+ # This anchor is included by default since bullseye. Fails DNSSEC
+ # validation when missing.
+ echo 'DNSSECNegativeTrustAnchors=home.arpa'
+ fi
+ echo '[DHCP]'
+ echo 'UseDomains=yes'
+} >"$TARGET/etc/systemd/network/20-wired.network"
diff --git a/share/customize-resolved.sh b/share/customize-resolved.sh
new file mode 100755
index 0000000..e8fe248
--- /dev/null
+++ b/share/customize-resolved.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+# Copyright 2022 Helmut Grohne <helmut@subdivi.de>
+# SPDX-License-Identifier: MIT
+#
+# This is a mmdebstrap customize hook that enables systemd-resolved on various
+# Debian releases.
+
+set -eu
+
+TARGET=$1
+
+LIBNSS_RESOLVE_VERSION=$(dpkg-query --root "$TARGET" -f '${Version}' -W libnss-resolve 2>/dev/null) || :
+
+if dpkg --compare-versions "$LIBNSS_RESOLVE_VERSION" lt 251.3-2~exp1; then
+ if test "${MMDEBSTRAP_MODE:-}" = chrootless; then
+ systemctl --root "$TARGET" enable systemd-resolved.service
+ else
+ chroot "$TARGET" systemctl enable systemd-resolved.service
+ fi
+
+ if test -z "$LIBNSS_RESOLVE_VERSION"; then
+ ln -fs ../run/systemd/resolve/resolv.conf "$TARGET/etc/resolv.conf"
+ else
+ ln -fs ../run/systemd/resolve/stub-resolv.conf "$TARGET/etc/resolv.conf"
+ fi
+fi