[Buildroot] [PATCH] Allow a single DHCP configuration via the system configuration submenu
Jérémy Rosen
jeremy.rosen at openwide.fr
Wed Dec 17 16:15:46 UTC 2014
This patch allows the setup of simple a single interface to be
automatically brought up and configured via DHCP on system startup.
The interface name can be set via a configuration option. This patch
does not support systemd-networkd, any complex network configuration should
be done via overlay of /etc/network/interfaces or the relevant networkd
configuration file
Signed-off-by: Jérémy Rosen <jeremy.rosen at openwide.fr>
---
support/scripts/generate-network-config.sh | 24 ++++++++++++++++++++++++
system/Config.in | 18 ++++++++++++++++++
system/skeleton/etc/network/interfaces | 4 ----
system/system.mk | 5 +++++
4 files changed, 47 insertions(+), 4 deletions(-)
create mode 100755 support/scripts/generate-network-config.sh
delete mode 100644 system/skeleton/etc/network/interfaces
diff --git a/support/scripts/generate-network-config.sh b/support/scripts/generate-network-config.sh
new file mode 100755
index 0000000..92f8d16
--- /dev/null
+++ b/support/scripts/generate-network-config.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+export BR2_SIMPLE_DHCP=$(sed -r -e "/^BR2_SIMPLE_DHCP=(.*)$/!d;" -e 's//\1/;' $BR2_CONFIG)
+
+export BR2_SIMPLE_DHCP_INTERFACE="$(sed -r -e "/^BR2_SIMPLE_DHCP_INTERFACE=\"(.*)\"$/!d;" -e 's//\1/;' $BR2_CONFIG)"
+
+do_generate_interfaces ()
+{
+ echo "# interface file auto-generated by buildroot"
+ echo
+ echo "auto lo"
+ echo "iface lo inet loopback"
+ echo
+
+ if [ -z "$BR2_SIMPLE_DHCP" ] ; then
+ return
+ fi
+
+ echo "auto $BR2_SIMPLE_DHCP_INTERFACE"
+ echo "iface $BR2_SIMPLE_DHCP_INTERFACE inet dhcp"
+}
+
+mkdir -p $TARGET_DIR/etc/network/
+do_generate_interfaces > $TARGET_DIR/etc/network/interfaces
diff --git a/system/Config.in b/system/Config.in
index a3b7aff..10a81e9 100644
--- a/system/Config.in
+++ b/system/Config.in
@@ -324,6 +324,24 @@ config BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW
endif # BR2_ROOTFS_SKELETON_DEFAULT
+config BR2_SIMPLE_DHCP
+ bool "automatic network configuration via DHCP"
+ default n
+ depends on !BR2_PACKAGE_SYSTEMD_NETWORKD
+ help
+ Automatically do a DHCP request on startup on selected interface at
+ startup. For more complicated setups use an overlay.
+
+comment "automatic network configuration via DHCP is not compatible with networkd"
+ depends on BR2_PACKAGE_SYSTEMD_NETWORKD
+
+config BR2_SIMPLE_DHCP_INTERFACE
+ string "name of the physical network interface to run DHCP on"
+ depends on BR2_SIMPLE_DHCP
+ default eth0
+ help
+ The name of the network interface to configure automatically
+
config BR2_TARGET_TZ_INFO
bool "Install timezone info"
# No timezone for musl; only for uClibc or (e)glibc.
diff --git a/system/skeleton/etc/network/interfaces b/system/skeleton/etc/network/interfaces
deleted file mode 100644
index 218b82c..0000000
--- a/system/skeleton/etc/network/interfaces
+++ /dev/null
@@ -1,4 +0,0 @@
-# Configure Loopback
-auto lo
-iface lo inet loopback
-
diff --git a/system/system.mk b/system/system.mk
index e4a3160..bb933f6 100644
--- a/system/system.mk
+++ b/system/system.mk
@@ -38,6 +38,11 @@ ifneq ($(TARGET_GENERIC_ROOT_PASSWD),)
TARGETS += host-mkpasswd
endif
+define SIMPLE_NETWORK
+ $(TOPDIR)/support/scripts/generate-network-config.sh $(TARGET_DIR)
+endef
+TARGET_FINALIZE_HOOKS += SIMPLE_NETWORK
+
ifeq ($(BR2_ROOTFS_SKELETON_DEFAULT),y)
define SYSTEM_ROOT_PASSWD
--
2.1.3
More information about the buildroot
mailing list