diff mbox series

[07/11] uboot-envtools: add a board.d script to load defaults from the environment

Message ID 20240923171825.148902-8-john@phrozen.org
State Under Review
Delegated to: John Crispin
Headers show
Series allow loading default credentials from flash | expand

Commit Message

John Crispin Sept. 23, 2024, 5:18 p.m. UTC
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          |  2 ++
 package/boot/uboot-envtools/files/fw_defaults | 16 ++++++++++++++++
 2 files changed, 18 insertions(+)
 create mode 100644 package/boot/uboot-envtools/files/fw_defaults
diff mbox series

Patch

diff --git a/package/boot/uboot-envtools/Makefile b/package/boot/uboot-envtools/Makefile
index 875afad554..61939be6de 100644
--- a/package/boot/uboot-envtools/Makefile
+++ b/package/boot/uboot-envtools/Makefile
@@ -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
index 0000000000..5ef27f6cad
--- /dev/null
+++ b/package/boot/uboot-envtools/files/fw_defaults
@@ -0,0 +1,16 @@ 
+. /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 ] && ucidef_set_root_password "$(cat /var/run/uboot-env/owrt_root_password)"
+[ -f /var/run/uboot-env/owrt_timezone ] && ucidef_set_timezone "$(cat /var/run/uboot-env/owrt_timezone)"
+
+board_config_flush
+
+exit 0