uboot-envtools: add a board.d script to load defaults from the environment
authorJohn Crispin <john@phrozen.org>
Tue, 17 Sep 2024 15:30:46 +0000 (17:30 +0200)
committerJohn Crispin <john@phrozen.org>
Wed, 2 Oct 2024 13:41:33 +0000 (15:41 +0200)
This allows loading default wifi credentials, passwords and ssh keys on
firstboot.

Signed-off-by: John Crispin <john@phrozen.org>
package/boot/uboot-envtools/Makefile
package/boot/uboot-envtools/files/fw_defaults [new file with mode: 0644]

index 875afad554cf3176543470631d25835c57e3efe7..61939be6de90e3a5dc57c294a092ac9ff8d29e78 100644 (file)
@@ -72,6 +72,8 @@ define Package/uboot-envtools/install
        $(INSTALL_BIN) ./files/fw_printsys $(1)/usr/sbin
        $(INSTALL_BIN) ./files/fw_setsys $(1)/usr/sbin
        $(INSTALL_BIN) ./files/fw_loadenv $(1)/usr/sbin
+       $(INSTALL_DIR) $(1)/etc/board.d
+       $(INSTALL_DATA) ./files/fw_defaults $(1)/etc/board.d/05_fw_defaults
        $(INSTALL_DIR) $(1)/lib
        $(INSTALL_DATA) ./files/uboot-envtools.sh $(1)/lib
        $(INSTALL_DIR) $(1)/etc/uci-defaults
diff --git a/package/boot/uboot-envtools/files/fw_defaults b/package/boot/uboot-envtools/files/fw_defaults
new file mode 100644 (file)
index 0000000..42558aa
--- /dev/null
@@ -0,0 +1,17 @@
+. /lib/functions/uci-defaults.sh
+
+fw_loadenv
+
+board_config_update
+
+[ -f /var/run/uboot-env/owrt_ssid -a -f /var/run/uboot-env/owrt_wifi_key ] &&
+       ucidef_set_wireless all "$(cat /var/run/uboot-env/owrt_ssid)" sae-mixed "$(cat /var/run/uboot-env/owrt_wifi_key)"
+[ -f /var/run/uboot-env/owrt_country ] && ucidef_set_country "$(cat /var/run/uboot-env/owrt_country)"
+[ -f /var/run/uboot-env/owrt_ssh_auth_key ] && ucidef_set_ssh_authorized_key "$(cat /var/run/uboot-env/owrt_ssh_auth_key)"
+[ -f /var/run/uboot-env/owrt_root_password_plain ] && ucidef_set_root_password_plain "$(cat /var/run/uboot-env/owrt_root_password_plain)"
+[ -f /var/run/uboot-env/owrt_root_password_hash ] && ucidef_set_root_password_hash "$(cat /var/run/uboot-env/owrt_root_password_hash)"
+[ -f /var/run/uboot-env/owrt_timezone ] && ucidef_set_timezone "$(cat /var/run/uboot-env/owrt_timezone)"
+
+board_config_flush
+
+exit 0