diff options
author | Luka Pivk <luka.pivk@toradex.com> | 2020-03-06 16:01:52 +0100 |
---|---|---|
committer | Luka Pivk <luka.pivk@toradex.com> | 2020-03-18 14:52:16 +0000 |
commit | 745a6d6da292280207d1b0d8a0662e49d3cbd8e6 (patch) | |
tree | 31de0d82438bc4a4187f8e109b46f2ee26324b01 | |
parent | 47ef64803548f73a0eda753c5d3d3f7f315af606 (diff) |
hostname: generate a uniqe hostname on boot
This will generate a hostname based on machine name and serial number.
(E.g. colibri-imx7-031111777)
If serial number is not found it will say "no-serial-number" in host
name.
If machine is not supported hostname will include "unsupported-device"
string.
If /dev/device-tree does not exist it will say "recovery-mode"
as it assumes its in recovery mode of Toradex Easy Installer
To prevent openembedded from creating /etc/hostname file
add hostname_pn-base-files = "" to configration
Related-to: TEI-100, ELB-1322
Signed-off-by: Luka Pivk <luka.pivk@toradex.com>
-rw-r--r-- | recipes-core/set-hostname/files/set-hostname.service | 13 | ||||
-rw-r--r-- | recipes-core/set-hostname/files/sethostname | 19 | ||||
-rw-r--r-- | recipes-core/set-hostname/set-hostname_1.0.bb | 30 |
3 files changed, 62 insertions, 0 deletions
diff --git a/recipes-core/set-hostname/files/set-hostname.service b/recipes-core/set-hostname/files/set-hostname.service new file mode 100644 index 0000000..306528b --- /dev/null +++ b/recipes-core/set-hostname/files/set-hostname.service @@ -0,0 +1,13 @@ +[Unit] +ConditionPathExists=|!/etc/hostname +Wants=network-pre.target +Before=network-pre.target +After=local-fs.target +After=sys-subsystem-net-devices-eth0.device + +[Service] +Type=oneshot +ExecStart=/usr/bin/sethostname + +[Install] +WantedBy=network.target diff --git a/recipes-core/set-hostname/files/sethostname b/recipes-core/set-hostname/files/sethostname new file mode 100644 index 0000000..87e6320 --- /dev/null +++ b/recipes-core/set-hostname/files/sethostname @@ -0,0 +1,19 @@ +#!/bin/sh +if [ ! -f /proc/device-tree/serial-number ]; then + serial="recovery-mode" +else + serial=$(tr -d '\0' </proc/device-tree/serial-number) + + #if serial number is empty we append no-serial-number string + if [ -z "$serial" -a "$serial" != " " ]; then + serial="no-serial-number" + fi +fi + +hostname=@@MACHINE@@"-"${serial} + +if [ -f /usr/bin/hostnamectl ]; then + /usr/bin/hostnamectl set-hostname ${hostname} +else + hostname ${hostname} +fi diff --git a/recipes-core/set-hostname/set-hostname_1.0.bb b/recipes-core/set-hostname/set-hostname_1.0.bb new file mode 100644 index 0000000..15fa66b --- /dev/null +++ b/recipes-core/set-hostname/set-hostname_1.0.bb @@ -0,0 +1,30 @@ +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit systemd + +SRC_URI += " \ + file://sethostname \ + file://set-hostname.service \ +" + +FILES_${PN} = " \ + ${bindir} \ + ${systemd_system_unitdir} \ +" + +SYSTEMD_SERVICE_${PN} = " \ + set-hostname.service \ +" + +do_install () { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/sethostname ${D}${bindir} + sed -i "s/@@MACHINE@@/${MACHINE}/g" ${D}${bindir}/sethostname + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/set-hostname.service ${D}${systemd_system_unitdir} + fi +} |