8a0a8f9d7512041191197f660528558af7a0f3ea
[packages/trusty/cirros-testvm.git] / cirros-testvm / src-cirros / src / etc / init.d / load-modules
1 #!/bin/sh
2 # vi: ts=4 noexpandtab
3 # load modules
4
5 loadmods() {
6         local line
7         while read line; do
8                 line="${line%%#*}"
9                 [ -n "$line" ] || continue
10                 modprobe $line
11         done
12 }
13
14 parse_modules() {
15         local f="$1" arch="$2" march="" comment="" modinfo="" oifs="$IFS"
16         local x="" found=false
17         [ -f "$f" ] || return 1
18         case "$arch" in
19                 i?86) march=",i386,x86,";;
20                 amd64|x86_64) march=",x86_64,x86,";;
21                 ppc64|powerpc) march=",powerpc,ppc64,";;
22                 arm*) march=",arm,$arch,";;
23         esac
24         while read line; do
25                 modinfo=${line%%#*}
26                 [ "$modinfo" = "$line" ] && comment="" ||
27                         comment="${line#${modinfo}#}"
28                 [ "${comment#*arch=}" = "$comment" ] &&
29                         { echo "$modinfo"; continue; }
30                 found=false
31                 for tok in $comment; do
32                         [ "${tok#arch=}" != "$tok" ] || continue
33                         IFS=","; set -- ${tok#arch=}; IFS="$oifs";
34                         [ $# -eq 0 ] && continue
35                         for x in "$@"; do
36                                 [ "${march#*,$x,}" != "$march" ] &&
37                                         { echo "$modinfo"; found=true; break; }
38                                 shift;
39                         done
40                         $found && break
41                 done
42         done < "$f"
43 }
44
45 MODULES_FILE="/etc/modules"
46
47 case "$1" in
48         start)
49                 lxc-is-container && exit 0
50                 if [ -f "$MODULES_FILE" ]; then
51                         [ -d "/lib/modules/$(uname -r)" ] || exit 0
52                         march=$(uname -m)
53                         parse_modules "$MODULES_FILE" "$march" | loadmods
54                         [ "$march" = "ppc64" ] && sleep 1
55                 fi
56                 ;;
57         stop|restart|reload) : ;;
58         parse_modules)
59                 parse_modules "$2" "$3";;
60         *)
61                 echo $"Usage: $0 {start}"
62                 exit 1
63 esac
64
65 exit $?