diff --git a/board/common/rootfs/etc/auto-factory.d/10-system.json b/board/common/rootfs/etc/auto-factory.d/10-system.json new file mode 100644 index 00000000..71796301 --- /dev/null +++ b/board/common/rootfs/etc/auto-factory.d/10-system.json @@ -0,0 +1,5 @@ +{ + "ietf-system:system": { + "hostname": "infix" + } +} diff --git a/board/common/rootfs/lib/infix/cfg-bootstrap b/board/common/rootfs/lib/infix/cfg-bootstrap new file mode 100755 index 00000000..6fe08bc2 --- /dev/null +++ b/board/common/rootfs/lib/infix/cfg-bootstrap @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e + +PATH=/lib/infix/factory:$PATH + +[ "$FACTORY_D" ] || FACTORY_D=/etc/auto-factory.d +[ "$CFG_D" ] || CFG_D=/cfg + +gen-hostname >$FACTORY_D/20-auto-hostname.json +gen-interfaces >$FACTORY_D/20-auto-interfaces.json + +jq -s add $(find $FACTORY_D -name '*.json') >$CFG_D/auto-factory-config.cfg + +# TODO: Look for statically defined factory-config, based on the +# system's product ID. + +# If we haven't found a better one, settle for auto-factory-config as +# the system's factory-config. +[ -h $CFG_D/factory-config.cfg ] || \ + ln -sf auto-factory-config.cfg $CFG_D/factory-config.cfg + +# On first boot, install factory-config as startup-config +[ -f $CFG_D/startup-config.cfg ] || \ + cp $CFG_D/factory-config.cfg $CFG_D/startup-config.cfg diff --git a/board/common/rootfs/lib/infix/factory/gen-hostname b/board/common/rootfs/lib/infix/factory/gen-hostname new file mode 100755 index 00000000..bfa50586 --- /dev/null +++ b/board/common/rootfs/lib/infix/factory/gen-hostname @@ -0,0 +1,42 @@ +#!/bin/sh + +set -e + +base_mac_lowest_physical() +{ + ip -d -j link show | jq -r ' + .[] | + select(.link_type == "ether") | + select(has("linkinfo") | not) | .address' \ + | sort | head -n 1 +} + +source_base_mac() +{ + # TODO: Source the base MAC from the vital product data memory, if + # available. + # base_mac=$(base_mac_vpd) + # [ "$base_mac" ] && return + + base_mac=$(base_mac_lowest_physical) + [ "$base_mac" ] && return + + base_mac=00:00:00:00:00:00 +} + +if [ "$1" ]; then + sysname="$1" +else + sysname="$(cat /etc/hostname)" +fi + +source_base_mac +sysname="${sysname}-$(echo $base_mac | tail -c 9 | tr ':' '-')" + +cat < sysrepocfg -v4 -E/cfg/startup-config.cfg -f json -- diff --git a/package/confd/tmpfiles.conf b/package/confd/tmpfiles.conf index 58cf1038..5229f40e 100644 --- a/package/confd/tmpfiles.conf +++ b/package/confd/tmpfiles.conf @@ -1,2 +1,2 @@ d /run/resolvconf/interfaces - - - -C /cfg/startup-config.cfg - - - +