base-files: split /etc/init.d/boot into 2 files
[openwrt/openwrt.git] / package / base-files / files / etc / init.d / system
diff --git a/package/base-files/files/etc/init.d/system b/package/base-files/files/etc/init.d/system
new file mode 100755 (executable)
index 0000000..24a9fde
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2014 OpenWrt.org
+
+START=10
+USE_PROCD=1
+
+validate_system_section()
+{
+       uci_validate_section system system "${1}" \
+               'hostname:string:OpenWrt' \
+               'conloglevel:uinteger' \
+               'buffersize:uinteger' \
+               'timezone:string:UTC' \
+               'zonename:string'
+
+       return $?
+}
+
+system_config() {
+       local cfg="$1"
+
+       local hostname conloglevel buffersize timezone zonename
+
+       validate_system_section "${1}" || {
+               echo "validation failed"
+               return 1
+       }
+
+       echo "$hostname" > /proc/sys/kernel/hostname
+       [ -z "$conloglevel" -a -z "$buffersize" ] || dmesg ${conloglevel:+-n $conloglevel} ${buffersize:+-s $buffersize}
+       echo "$timezone" > /tmp/TZ
+       [ -n "$zonename" ] && [ -f "/usr/share/zoneinfo/$zonename" ] && ln -s "/usr/share/zoneinfo/$zonename" /tmp/localtime
+
+       # apply timezone to kernel
+       date -k
+}
+
+reload_service() {
+       config_load system
+       config_foreach system_config system
+}
+
+service_triggers()
+{
+       procd_add_reload_trigger "system"
+       procd_add_validation validate_system_section
+}
+
+start_service() {
+       reload_service
+}