--- /dev/null
+#!/bin/sh
+# vi: ts=4 noexpandtab
+# load modules
+
+loadmods() {
+ local line
+ while read line; do
+ line="${line%%#*}"
+ [ -n "$line" ] || continue
+ modprobe $line
+ done
+}
+
+parse_modules() {
+ local f="$1" arch="$2" march="" comment="" modinfo="" oifs="$IFS"
+ local x="" found=false
+ [ -f "$f" ] || return 1
+ case "$arch" in
+ i?86) march=",i386,x86,";;
+ amd64|x86_64) march=",x86_64,x86,";;
+ ppc64|powerpc) march=",powerpc,ppc64,";;
+ arm*) march=",arm,$arch,";;
+ esac
+ while read line; do
+ modinfo=${line%%#*}
+ [ "$modinfo" = "$line" ] && comment="" ||
+ comment="${line#${modinfo}#}"
+ [ "${comment#*arch=}" = "$comment" ] &&
+ { echo "$modinfo"; continue; }
+ found=false
+ for tok in $comment; do
+ [ "${tok#arch=}" != "$tok" ] || continue
+ IFS=","; set -- ${tok#arch=}; IFS="$oifs";
+ [ $# -eq 0 ] && continue
+ for x in "$@"; do
+ [ "${march#*,$x,}" != "$march" ] &&
+ { echo "$modinfo"; found=true; break; }
+ shift;
+ done
+ $found && break
+ done
+ done < "$f"
+}
+
+MODULES_FILE="/etc/modules"
+
+case "$1" in
+ start)
+ lxc-is-container && exit 0
+ if [ -f "$MODULES_FILE" ]; then
+ [ -d "/lib/modules/$(uname -r)" ] || exit 0
+ march=$(uname -m)
+ parse_modules "$MODULES_FILE" "$march" | loadmods
+ [ "$march" = "ppc64" ] && sleep 1
+ fi
+ ;;
+ stop|restart|reload) : ;;
+ parse_modules)
+ parse_modules "$2" "$3";;
+ *)
+ echo $"Usage: $0 {start}"
+ exit 1
+esac
+
+exit $?