git-svn-id: https://svn.o-hand.com/repos/poky/trunk@530 311d38ba-8fff-0310-9ca6-ca027cbcb966
4.0 KiB
Executable File
#!/bin/sh
This is the update-modules script for Debian GNU/Linux.
Copyright 1998-2001 Wichert Akkerman wakkerma@debian.org
Licensed under the GNU GPL, version 2
MODCONFFILE=/etc/modules.conf MODCONFTMPFILE="${MODCONFFILE}.$$" MODULESFILE=/etc/modules MODULESTMPFILE="${MODULESFILE}.$$"
ARCHDIR=/etc/modutils/arch CPUDIR=/etc/modutils/cpu HEADER="### This file is automatically generated by update-modules"
set -e
if [ "$1" = "force" ] ; then force=1 else force= fi
Reset the sorting order since we depend on it
LC_COLLATE=C export LC_COLLATE
depdir()
{
dep=grep '[[:space:]]*depfile' "${MODCONFFILE}" | tail -n 1 | sed -e 's/depfile=//' -e 's,/[^/]*$,,'
if [ -z "$dep" ] ; then
dep="/lib/modules/uname -r"
fi
echo $dep
}
arch() {
local model=uname -m
case $model in
i[0-9]86) model=i386; ;;
sun4u) model=sparc64; ;;
arm*) model=arm; ;;
ppc) model=powerpc; ;;
esac
echo $model
}
archmodel() {
local arch=arch
local model=""
if [ $arch = "m68k" ]; then
if [ -f /proc/hardware ]; then
model=sed -ne 's/^Model:[[:space:]]*//p' /proc/hardware
case $model in
Atari*) model="atari"; ;;
Amiga*) model="amiga"; ;;
Macintosh*) model="mac"; ;;
Motorola*) model="MVME"; ;;
) model="generic"; ;;
esac
model=".${model}"
else
echo "/proc/hardware does not exist, assuming general m68k system"
model=".generic"
fi
elif [ $arch = "powerpc" ]; then
if [ -f /proc/cpuinfo ]; then
model=sed -ne 's/^machine[[:space:]]*:[[:space:]]*//p' /proc/cpuinfo
case $model in
Amiga) model="apus"; ;;
Power*) model="pmac"; ;;
*) model="generic"; ;;
esac
model=".${model}"
else
echo "/proc/cpuinfo does not exist, assuming general powerpc system"
model=".generic"
fi
fi
echo "${arch}${model}"
}
checkoverwrite() { local cfgfile="$1"
if [ -f "$cfgfile" ]; then
if ! sed -ne 1p "$cfgfile" | grep -q "^$HEADER" ; then
echo "Error: the current $cfgfile is not automatically generated." >&2
if [ -z "$force" ]; then
echo "Use \"update-modules force\" to force (re)generation."
exit 1
else
echo "force specified, (re)generating file anyway."
fi
fi
fi
}
createfile() { cat < "$1" $HEADER"
Please do not edit this file directly. If you want to change or add
anything please take a look at the files in /etc/modutils and read
the manpage for update-modules.
EOF }
addfile() { local src="$1" local tgt="$2"
echo "### update-modules: start processing $src" >> "$tgt"
if [ -x "$src" ]; then
if ! "$src" >> "$tgt" ; then
echo "Error while executing $src, aborting" >&2
exit 1
fi
else
cat "$src" >> "$tgt"
fi
cat <<EOF >> "$tgt"
update-modules: end processing $cfg
EOF }
checkoverwrite "$MODCONFFILE"
if [ 0 -ne "id -u" ]; then
echo "You have to be root to do this." >&2
exit 2
fi
model=archmodel
oldmodel=$model
while [ ! -f "${ARCHDIR}/${model}" ]; do
oldmodel=$model
model=echo $oldmodel | sed -e 's/\.[^.]\+//'
if [ "$model" = "$oldmodel" ]; then
break
fi
echo "Configuration for $oldmodel not found, trying $model"
done
CONF="${ARCHDIR}/${model}"
if [ ! -f "$CONF" ]; then ## echo "Architecture-specific modutils configuration not found, using defaults" CONF="${ARCHDIR}/generic" fi
[ -e "$MODCONFFILE" ] && cp -f "$MODCONFFILE" "${MODCONFFILE}.old"
createfile "$MODCONFTMPFILE" createfile "$MODULESTMPFILE"
for cfg in /etc/modutils/* $CONF ; do if [ -f "$cfg" ]; then # this check is necesarry to skip /etc/modutils/archs if echo $cfg | grep -q '.dpkg-[a-z]*|~$' ; then true elif echo $cfg | grep -q '.conf$' ; then addfile "$cfg" "$MODCONFTMPFILE" else addfile "$cfg" "$MODULESTMPFILE" fi fi done
first_time=0 if [ ! -f $MODULESFILE ]; then first_time=1 fi
mv "$MODCONFTMPFILE" "$MODCONFFILE" mv "$MODULESTMPFILE" "$MODULESFILE"
if [ $first_time -eq 1 ]; then /etc/init.d/modutils.sh || true fi
We also call depmod here to stop insmod from complaining that modules.conf
is more recent then modules.dep
if [ -d "depdir" -a -f /proc/modules ]
then
depmod -A || true
fi
exit 0