mirror of
https://github.com/kernelkit/infix.git
synced 2026-08-06 15:43:02 +02:00
confd: allow setting factory hostname from qemu_fw_cfg
This patch adds support for overriding the default hostname generation on Qemu systems with the /sys/firmware/qemu_fw_cfg/by_name/opt/hostname file. E.g., virtual Infamy test systems using Qeneth. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
committed by
Tobias Waldekranz
parent
bb18afa883
commit
c3a227289d
+15
-24
@@ -1,38 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Generate ietf-system.yang hostname based on:
|
||||
# 1. Command line argument + MAC suffix
|
||||
# 2. Specific hostname from qemu_fw_cfg, from Qeneth
|
||||
# 3. /etc/hostname from squashfs + MAC suffix
|
||||
#
|
||||
set -e
|
||||
|
||||
base_mac_lowest_physical()
|
||||
gen()
|
||||
{
|
||||
ip -d -j link show | jq -r '
|
||||
.[] |
|
||||
select(.link_type == "ether") |
|
||||
select(has("linkinfo") | not) | .address' \
|
||||
| sort | head -n 1
|
||||
}
|
||||
base_mac=$(jq -r '.["mac-address"]' /run/system.json)
|
||||
if [ -z "$base_mac" ] || [ "$base_mac" = "null" ]; then
|
||||
base_mac=00:00:00:00:00:00
|
||||
fi
|
||||
|
||||
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
|
||||
echo "$1-$(echo $base_mac | tail -c 9 | tr ':' '-')"
|
||||
}
|
||||
|
||||
if [ "$1" ]; then
|
||||
sysname="$1"
|
||||
sysname=$(gen "$1")
|
||||
elif [ -f "/sys/firmware/qemu_fw_cfg/by_name/opt/hostname/raw" ]; then
|
||||
sysname="$(cat /sys/firmware/qemu_fw_cfg/by_name/opt/hostname/raw)"
|
||||
else
|
||||
sysname="$(cat /etc/hostname)"
|
||||
sysname=$(gen "$(cat /etc/hostname)")
|
||||
fi
|
||||
|
||||
source_base_mac
|
||||
sysname="${sysname}-$(echo $base_mac | tail -c 9 | tr ':' '-')"
|
||||
|
||||
cat <<EOF
|
||||
{
|
||||
"ietf-system:system": {
|
||||
|
||||
Reference in New Issue
Block a user