summaryrefslogtreecommitdiffstats
path: root/core/modules/dhcpc-busybox
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/dhcpc-busybox')
-rw-r--r--core/modules/dhcpc-busybox/data/etc/systemd/system/lightdm.service.d/lock-hostname.conf2
-rwxr-xr-xcore/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx19
2 files changed, 20 insertions, 1 deletions
diff --git a/core/modules/dhcpc-busybox/data/etc/systemd/system/lightdm.service.d/lock-hostname.conf b/core/modules/dhcpc-busybox/data/etc/systemd/system/lightdm.service.d/lock-hostname.conf
new file mode 100644
index 00000000..cf079a5b
--- /dev/null
+++ b/core/modules/dhcpc-busybox/data/etc/systemd/system/lightdm.service.d/lock-hostname.conf
@@ -0,0 +1,2 @@
+[Service]
+ExecStartPre=-/opt/openslx/scripts/udhcpc-openslx --lock-hostname-updates
diff --git a/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx b/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
index 0d74e832..327bdaa4 100755
--- a/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
+++ b/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx
@@ -29,6 +29,22 @@ declare -rg RESOLV_CONF="/opt/openslx/resolv.conf"
declare -rg THIS_RESOLV="/run/network/${interface}.resolv"
declare -rg flag="/run/network/primary-dhcp.flag"
+if [ "$1" = "--lock-hostname-updates" ]; then
+ # If we change the hostname while Xorg is running, this might
+ # cause issues, depending on how it's set up. So we run this
+ # script with the lock argument to touch the flag file right
+ # before we try to launch lightdm/Xorg. In case the DHCP request
+ # is too slow, this means we'll run with the wrong hostname
+ # (potentially), but that's better than delaying the bootup
+ # unnecessarily.
+ # So also note that if you ever change this script's name/location
+ # (JUST DON'T), you'd need to update all call sites, i.e. the
+ # udhcpc startup script, and the lightdm service drop-in.
+ mkdir -p /run/network
+ touch "$flag"
+ exit 0
+fi
+
shopt -s extglob
rebuild_resolv_conf () {
@@ -186,7 +202,8 @@ case "$1" in
echo "SLX_NET_WINS='$wins'" >> /opt/openslx/config
fi
- # Only if network is not ready yet
+ # Only update hostname if network is not ready yet
+ # later on this might cause issues
if ! [ -e "$flag" ]; then
# Update hostname
if [ -z "$dns_fqdn" ] && [ -n "$domain" ] && [ -n "$hostname" ]; then