#!/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 $?