Message ID | 1420709805-13040-1-git-send-email-jeremy.rosen@openwide.fr |
---|---|
State | Superseded |
Headers | show |
Hi Jérémy, Thomas, Gustavo, list, On Thu, Jan 8, 2015 at 10:36 AM, Jérémy Rosen <jeremy.rosen@openwide.fr> wrote: > 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@openwide.fr> > > Tested-by: Karoly Kasza <kaszak@gmail.com> Reviewed-by: Karoly Kasza <kaszak@gmail.com> Tested with uClibc, successfully built different rootfs.ext images and booted them. Tested with master branch, x86_64 arch in QEMU, internal toolchain GCC 4.9.2 w/ uclibc, Linux 3.18.1. I recommend maybe adding a dependency in Config.in later for package ifupdown (not yet merged, proposed by Gustavo), if no Busybox is present in the system. Regards, Karoly
On 01/09/2015 07:28 AM, Károly Kasza wrote: Hi Jérémy, Károly, the rest. > Tested-by: Karoly Kasza <kaszak@gmail.com <mailto:kaszak@gmail.com>> > Reviewed-by: Karoly Kasza <kaszak@gmail.com <mailto:kaszak@gmail.com>> > > Tested with uClibc, successfully built different rootfs.ext images and > booted them. > Tested with master branch, x86_64 arch in QEMU, internal toolchain GCC > 4.9.2 w/ uclibc, Linux 3.18.1. > > I recommend maybe adding a dependency in Config.in later for package > ifupdown (not yet merged, proposed by Gustavo), if no Busybox is present > in the system. I wouldn't go as far as selecting ifupdown, but possibly depending on BR2_PACKAGE_BUSYBOX | BR2_PACKAGE_IFUPDOWN because the option will always be "set" (it's a string) and you can't do that easily. That way the option will vanish if there's no proper provider of ifupdown which is the interpreter of /etc/network/interfaces. Of course busybox may lack ifupdown for custom configs, but that's the case for so many things (a shell, for example) that we can't cover weird scenarios in a sane way, and it might just be intended. Other than that: Tested-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Acked-by: Gustavo Zacarias <gustavo@zacarias.com.ar> (qemu-arm-versatile-defconfig default busybox init and systemd). Regards.
diff --git a/system/Config.in b/system/Config.in index a3b7aff..71ba7ab 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 + string "Name of the physical network interface to run DHCP on" + default "" + depends on !BR2_PACKAGE_SYSTEMD_NETWORKD + help + The name of the network interface to configure automatically. + A DHCP request will automatically happen on startup on the selected + interface. + + If left empty, no automatic DHCP requests will take place. + + For more complicated network setups use an overlay to overwrite + /etc/network/interfaces or add a networkd configuration file. + +comment "automatic network configuration via DHCP is not compatible with networkd" + depends on BR2_PACKAGE_SYSTEMD_NETWORKD + 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..96aa342 100644 --- a/system/system.mk +++ b/system/system.mk @@ -38,6 +38,31 @@ ifneq ($(TARGET_GENERIC_ROOT_PASSWD),) TARGETS += host-mkpasswd endif +define SET_NETWORK_LOCALHOST + echo "# interface file auto-generated by buildroot" > $(TARGET_DIR)/etc/network/interfaces + echo >> $(TARGET_DIR)/etc/network/interfaces + echo "auto lo" >> $(TARGET_DIR)/etc/network/interfaces + echo "iface lo inet loopback" >> $(TARGET_DIR)/etc/network/interfaces + echo >> $(TARGET_DIR)/etc/network/interfaces +endef + +NETWORK_DHCP_IFACE = $(call qstrip,$(BR2_SIMPLE_DHCP)) + +ifneq ($(NETWORK_DHCP_IFACE),) +define SET_NETWORK_DHCP + echo "auto $(NETWORK_DHCP_IFACE)" >> $(TARGET_DIR)/etc/network/interfaces + echo "iface $(NETWORK_DHCP_IFACE) inet dhcp" >> $(TARGET_DIR)/etc/network/interfaces +endef +endif + +define SET_NETWORK + mkdir -p $(TARGET_DIR)/etc/network/ + $(SET_NETWORK_LOCALHOST) + $(SET_NETWORK_DHCP) +endef + +TARGET_FINALIZE_HOOKS += SET_NETWORK + ifeq ($(BR2_ROOTFS_SKELETON_DEFAULT),y) define SYSTEM_ROOT_PASSWD
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@openwide.fr> --- v3 : - move the condition from shell logic to make logic (reusing the code proposed by Thomas Petazzoni) v2 : - inline shell section instead of providing a script - add one Config.in option instead of two --- system/Config.in | 18 ++++++++++++++++++ system/skeleton/etc/network/interfaces | 4 ---- system/system.mk | 25 +++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 4 deletions(-) delete mode 100644 system/skeleton/etc/network/interfaces