From f4669ff4099b6afcfd71273eed4fc922602dceea Mon Sep 17 00:00:00 2001 From: tkl Date: Mon, 12 Apr 2021 10:10:21 +0200 Subject: [PATCH] recipes-core: Add initial bootup script to busybox --- recipes-core/busybox/busybox-initcfg.bb | 2 + recipes-core/busybox/files/S99firstboot.sh | 110 +++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 recipes-core/busybox/files/S99firstboot.sh diff --git a/recipes-core/busybox/busybox-initcfg.bb b/recipes-core/busybox/busybox-initcfg.bb index 4617814..a9fd1d5 100644 --- a/recipes-core/busybox/busybox-initcfg.bb +++ b/recipes-core/busybox/busybox-initcfg.bb @@ -5,6 +5,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/files:" SRC_URI += " \ file://S20load_modules.sh \ + file://S99firstboot.sh \ file://S49cgroups_mount.sh \ file://ntp.conf \ file://ntpd \ @@ -17,6 +18,7 @@ do_install_append () { install -m 0644 ${WORKDIR}/ntp.conf ${D}${sysconfdir} install -m 0755 ${WORKDIR}/ntpd ${D}${sysconfdir}/init.d/ install -m 0755 ${WORKDIR}/S20load_modules.sh ${D}${sysconfdir}/rcS.d/ + install -m 0755 ${WORKDIR}/S99firstboot.sh ${D}${sysconfdir}/rcS.d/ install -m 0755 ${WORKDIR}/S49cgroups_mount.sh ${D}${sysconfdir}/rcS.d/ cd ${D}${sysconfdir}/rcS.d/ diff --git a/recipes-core/busybox/files/S99firstboot.sh b/recipes-core/busybox/files/S99firstboot.sh new file mode 100644 index 0000000..b9fbcd3 --- /dev/null +++ b/recipes-core/busybox/files/S99firstboot.sh @@ -0,0 +1,110 @@ +#!/bin/sh + +function generate_hostname() { + mac=$( ifconfig |grep eth0 | grep -io '[0-9a-f:]\{15\}[0-9a-f]\{2\}' ) + mac=${mac//:} + nic=${mac:6} + nic=$(( 16#$nic )) + let length=32 + + for i in 4 3 2 1 0; do + let div=$length**$i + let idx=$nic/$div + let nic=$nic%$div + + if [ $idx = 0 ] ; then + res=a + elif [ $idx = 1 ] ; then + res=b + elif [ $idx = 2 ] ; then + res=c + elif [ $idx = 3 ] ; then + res=d + elif [ $idx = 4 ] ; then + res=e + elif [ $idx = 5 ] ; then + res=f + elif [ $idx = 6 ] ; then + res=g + elif [ $idx = 7 ] ; then + res=h + elif [ $idx = 8 ] ; then + res=i + elif [ $idx = 9 ] ; then + res=j + elif [ $idx = 10 ] ; then + res=k + elif [ $idx = 11 ] ; then + res=m + elif [ $idx = 12 ] ; then + res=n + elif [ $idx = 13 ] ; then + res=p + elif [ $idx = 14 ] ; then + res=q + elif [ $idx = 15 ] ; then + res=r + elif [ $idx = 16 ] ; then + res=s + elif [ $idx = 17 ] ; then + res=t + elif [ $idx = 18 ] ; then + res=u + elif [ $idx = 19 ] ; then + res=v + elif [ $idx = 20 ] ; then + res=w + elif [ $idx = 21 ] ; then + res=x + elif [ $idx = 22 ] ; then + res=y + elif [ $idx = 23 ] ; then + res=z + elif [ $idx = 24 ] ; then + res=2 + elif [ $idx = 25 ] ; then + res=3 + elif [ $idx = 26 ] ; then + res=4 + elif [ $idx = 27 ] ; then + res=5 + elif [ $idx = 28 ] ; then + res=6 + elif [ $idx = 29 ] ; then + res=7 + elif [ $idx = 30 ] ; then + res=8 + elif [ $idx = 31 ] ; then + res=8 + fi + basex="$basex${res}" + done + + old_hostname=$( cat /etc/hostname ) + new_hostname=unknown-$basex + + if [ $old_hostname = raspberrypi3-64 ] + then + new_hostname=rpi3-$basex + fi + + if [ $old_hostname = raspberrypi4-64 ] + then + new_hostname=rpi3-$basex + fi + + echo $new_hostname > /etc/hostname +} + +FLAG="/var/local/firstboot.log" + +if [ ! -f $FLAG ]; then + echo "First boot" + touch $FLAG + + generate_hostname + generate_avahi_service + + + reboot +fi