boot 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/bin/sh /etc/rc.common
  2. # Copyright (C) 2006-2011 OpenWrt.org
  3. START=10
  4. STOP=98
  5. system_config() {
  6. local cfg="$1"
  7. local hostname conloglevel timezone
  8. config_get hostname "$cfg" hostname 'OpenWrt'
  9. echo "$hostname" > /proc/sys/kernel/hostname
  10. config_get conloglevel "$cfg" conloglevel
  11. config_get buffersize "$cfg" buffersize
  12. [ -z "$conloglevel" -a -z "$buffersize" ] || dmesg ${conloglevel:+-n $conloglevel} ${buffersize:+-s $buffersize}
  13. config_get timezone "$cfg" timezone 'UTC'
  14. echo "$timezone" > /tmp/TZ
  15. config_get zonename "$cfg" zonename
  16. [ -n "$zonename" ] && [ -f "/usr/share/zoneinfo/$zonename" ] && ln -s "/usr/share/zoneinfo/$zonename" /tmp/localtime
  17. # apply timezone to kernel
  18. date -k
  19. if [ -x /sbin/syslogd ]; then
  20. local args log_ip log_size log_port log_type log_file
  21. config_get log_ip "$cfg" log_ip
  22. config_get log_size "$cfg" log_size 16
  23. config_get log_port "$cfg" log_port 514
  24. config_get log_type "$cfg" log_type circular
  25. config_get log_file "$cfg" log_file "/var/log/messages"
  26. args="${log_ip:+-L -R ${log_ip}:${log_port}} ${conloglevel:+-l $conloglevel}"
  27. if [ "$log_type" = "file" ]; then
  28. args="$args -s $log_size -O $log_file -S"
  29. else
  30. args="$args -C${log_size}"
  31. fi
  32. service_start /sbin/syslogd $args
  33. fi
  34. if [ -x /sbin/klogd ]; then
  35. config_get klogconloglevel "$cfg" klogconloglevel
  36. args="${klogconloglevel:+-c $klogconloglevel}"
  37. service_start /sbin/klogd $args
  38. fi
  39. }
  40. apply_uci_config() {
  41. sh -c '. /lib/functions.sh; include /lib/config; uci_apply_defaults'
  42. }
  43. start() {
  44. [ -f /proc/mounts ] || /sbin/mount_root
  45. [ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
  46. [ -f /proc/net/vlan/config ] && vconfig set_name_type DEV_PLUS_VID_NO_PAD
  47. mkdir -p /var/run
  48. mkdir -p /var/log
  49. mkdir -p /var/lock
  50. mkdir -p /var/state
  51. mkdir -p /tmp/.uci
  52. chmod 0700 /tmp/.uci
  53. touch /var/log/wtmp
  54. touch /var/log/lastlog
  55. touch /tmp/resolv.conf.auto
  56. ln -sf /tmp/resolv.conf.auto /tmp/resolv.conf
  57. grep -q debugfs /proc/filesystems && mount -o noatime -t debugfs debugfs /sys/kernel/debug
  58. [ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe
  59. load_modules /etc/modules.d/*
  60. # allow wifi modules time to settle
  61. sleep 1
  62. /sbin/wifi detect > /tmp/wireless.tmp
  63. [ -s /tmp/wireless.tmp ] && {
  64. cat /tmp/wireless.tmp >> /etc/config/wireless
  65. }
  66. rm -f /tmp/wireless.tmp
  67. apply_uci_config
  68. config_load system
  69. config_foreach system_config system
  70. killall -q hotplug2
  71. [ -x /sbin/hotplug2 ] && /sbin/hotplug2 --override --persistent \
  72. --set-rules-file /etc/hotplug2.rules \
  73. --set-coldplug-cmd /sbin/udevtrigger \
  74. --max-children 1 >/dev/null 2>&1 &
  75. # create /dev/root if it doesn't exist
  76. [ -e /dev/root -o -h /dev/root ] || {
  77. rootdev=$(awk 'BEGIN { RS=" "; FS="="; } $1 == "root" { print $2 }' < /proc/cmdline)
  78. [ -n "$rootdev" ] && ln -s "$rootdev" /dev/root
  79. }
  80. # early sysctl to avoid networking races
  81. if [ -d /proc/sys/net/ipv6/conf ]; then
  82. for i in /proc/sys/net/ipv6/conf/*/accept_ra; do
  83. echo 0 > $i
  84. done
  85. fi
  86. }
  87. stop() {
  88. service_stop /sbin/klogd
  89. service_stop /sbin/syslogd
  90. }