home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh -e
-
- create_etc_modules() {
- if [ ! -e /etc/modules ]; then
- cat <<EOT > /etc/modules
- # /etc/modules: kernel modules to load at boot time.
- #
- # This file contains the names of kernel modules that should be loaded
- # at boot time, one per line. Lines beginning with "#" are ignored.
-
- EOT
- chmod 644 /etc/modules
- fi
- }
-
- archmodel() {
- local arch=$(uname -m)
- case $arch in
- i[0-9]86) arch=i386 ;;
- x86_64|amd64) arch=x86_64 ;;
- arm*) arch=arm ;;
- mips*) arch=mips ;;
- # 64 bit variants of some architectures are treated like the 32 bit
- s390x) arch=s390 ;;
- parisc64) arch=parisc ;;
- sparc64) arch=sparc ;;
- # these architectures have variants with wildly different hardware
- ppc64) arch=powerpc.generic ;;
- ppc|powerpc)
- if [ -f /proc/cpuinfo ]; then
- model=$(sed -ne 's/^machine[[:space:]]*:[[:space:]]*//p' /proc/cpuinfo)
- else
- echo "/proc/cpuinfo does not exist, assuming generic powerpc system"
- fi
- case "$model" in
- Amiga*) arch="powerpc.apus" ;;
- Power*) arch="powerpc.pmac" ;;
- *) arch="powerpc.generic" ;;
- esac
- ;;
- m68k)
- if [ -f /proc/hardware ]; then
- model=$(sed -ne 's/^Model:[[:space:]]*//p' /proc/hardware)
- else
- echo "/proc/hardware does not exist, assuming generic m68k system"
- fi
- case "$model" in
- Atari*) arch="m68k.atari" ;;
- Amiga*) arch="m68k.amiga" ;;
- *) arch="m68k.generic" ;;
- esac
- ;;
- esac
-
- echo $arch
- }
-
- create_arch_symlink() {
- cd /etc/modprobe.d/
-
- model=$(archmodel)
- oldmodel=$model
-
- while [ ! -f arch/$model ]; do
- oldmodel=$model
- model=${oldmodel%.*}.generic
- [ "$model" = "$oldmodel" ] && break
- echo "Configuration for $oldmodel not found, trying $model"
- done
-
- ARCHCONFFILE=arch/$model
- if [ -f $ARCHCONFFILE ]; then
- ln -sf $ARCHCONFFILE arch-aliases
- else
- echo "Architecture-specific config file not found"
- fi
- }
-
- remove_compat_symlinks() {
- for file in /bin/lsmod.modutils /sbin/ksyms /sbin/kallsyms; do
- [ -L $file ] && rm $file
- done
- return 0
- }
-
- undivert_gen() {
- DEXT=${3:-modutils}
- dpkg-divert --remove --rename --package module-init-tools \
- --divert $2/$1.$DEXT $2/$1 > /dev/null
- }
-
- undivert_man() {
- DSECTION=${2:-8}
- for locale in '' fr/; do
- dpkg-divert --remove --rename --package module-init-tools --divert \
- /usr/share/man/${locale}man$DSECTION/$1.modutils.$DSECTION.gz \
- /usr/share/man/${locale}man$DSECTION/$1.$DSECTION.gz > /dev/null
- done
- }
-
- big_modutils_cleanup() {
- remove_compat_symlinks
-
- # When a diverted file is removed from a package, old version of dpkg forget
- # to delete it. See #428650 for the gory details.
- rm -f /usr/share/man/fr/man5/modules.modutils.5.gz \
- /usr/share/man/fr/man8/*.modutils.8.gz
- undivert_man modules 5
-
- for cmd in depmod insmod update-modules modinfo; do
- undivert_gen $cmd /sbin
- undivert_man $cmd
- done
- for cmd in kallsyms ksyms; do
- undivert_gen $cmd /sbin
- done
- for cmd in lsmod modprobe rmmod; do
- rm -f /sbin/$cmd.modutils
- undivert_gen $cmd /sbin Lmodutils
- undivert_man $cmd
- done
-
- # modutils forgets to delete this file on purge
- rm -f /etc/rcS.d/S20modutils
- }
-
- upgrade_quirks() {
- [ "$2" ] || return 0
- if dpkg --compare-versions "$2" le "3.2.2-3ubuntu3"; then
- rm -f /etc/modprobe.d/blacklist-pata
- fi
- if dpkg --compare-versions "$2" eq "3.3-pre3-1ubuntu4"; then
- rm -f /etc/modprobe.d/blacklist-ipv6
- fi
- dpkg --compare-versions $2 lt 3.3-pre11-4 || return 0
- # finally remove the diversions of modutils
- big_modutils_cleanup
-
- return 0
- }
-
- case "$1" in
- configure)
- create_etc_modules
- create_arch_symlink
-
- upgrade_quirks "$@"
- ;;
-
- abort-upgrade|abort-remove|abort-deconfigure)
- ;;
-
- *)
- echo "$0 called with unknown argument '$1'" >&2
- exit 1
- ;;
- esac
-
- # Automatically added by dh_installinit
- if [ -x "/etc/init.d/module-init-tools" ]; then
- update-rc.d module-init-tools start 15 S . >/dev/null || exit $?
- fi
- # End automatically added section
-
-
- exit 0
-