2290964d7eff6bb501d3f2b5481cb62c5b605d2f
[openwrt/openwrt.git] / package / base-files / files / etc / init.d / system
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2014 OpenWrt.org
3
4 START=10
5 USE_PROCD=1
6
7 validate_system_section() {
8 uci_load_validate system system "$1" "$2" \
9 'hostname:string:OpenWrt' \
10 'conloglevel:uinteger' \
11 'buffersize:uinteger' \
12 'timezone:string:UTC' \
13 'zonename:string'
14 }
15
16 system_config() {
17 [ "$2" = 0 ] || {
18 echo "validation failed"
19 return 1
20 }
21
22 echo "$hostname" > /proc/sys/kernel/hostname
23 [ -z "$conloglevel" -a -z "$buffersize" ] || dmesg ${conloglevel:+-n $conloglevel} ${buffersize:+-s $buffersize}
24 rm -f /tmp/TZ
25 if [ -n "$zonename" ]; then
26 local zname=$(echo "$zonename" | tr ' ' _)
27 [ -f "/usr/share/zoneinfo/$zname" ] && ln -sf "/usr/share/zoneinfo/$zname" /tmp/localtime
28 else
29 echo "$timezone" > /tmp/TZ
30 fi
31
32 # apply timezone to kernel
33 hwclock -u --systz
34 }
35
36 reload_service() {
37 config_load system
38 config_foreach validate_system_section system system_config
39 }
40
41 service_triggers() {
42 procd_add_reload_trigger "system"
43 procd_add_validation validate_system_section
44 }
45
46 start_service() {
47 reload_service
48 }