#!/bin/bash # # This is the modules-update script for Debian GNU/Linux. # Written by Wichert Akkerman # Copyright (C) 1998, 1999 Software in the Public Interest # # Modifications by Daniel Robbins , Gentoo Foundation # 02 Sep 2001 -- Removed "arch" stuff since I see no reason to have # support for varying CPU architectures on a single system. # # Updated by Aron Griffis # 05 May 2004 -- handle --assume-kernel argument for livecd building CFGFILE="/etc/modules.conf" TMPFILE="${CFGFILE}.$$" CFGFILE2="/etc/modprobe.conf" TMPFILE2="${CFGFILE2}.$$" CFGFILE3="/etc/modules.devfs" TMPFILE3="${CFGFILE3}.$$" CFGFILE4="/etc/modprobe.devfs" TMPFILE4="${CFGFILE4}.$$" MODDIR="/etc/modules.d" ARCHDIR="${MODDIR}/arch" HEADER="### This file is automatically generated by modules-update" source /sbin/functions.sh # Parse command-line FORCE=false ASSUME_KV= while [ -n "$1" ]; do case "$1" in force) FORCE=true ;; --assume-kernel=*) ASSUME_KV=${1#*=} ;; *) echo "Error: I don't understand $1" >&2 exit 1 ;; esac shift done # Set kernel version, either from --assume-kernel or uname -r KV=${ASSUME_KV:-$(uname -r)} if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.5.48) ]]; then KERNEL_2_5=true else KERNEL_2_5=false fi set -e # Reset the sorting order since we depend on it export LC_COLLATE="C" depdir() { dep="`sed -n -e '/[ \t]*depfile=/h;${x;s/[ \t]*depfile=//g;s,/[^/]*$,,p}' ${CFGFILE}`" if [ -z "${dep}" ] then dep="/lib/modules/${KV}" fi echo "${dep}" } CFGFILES="${CFGFILE}" if ${KERNEL_2_5}; then CFGFILES="${CFGFILES} ${CFGFILE2} ${CFGFILE4}" fi for x in ${CFGFILES} do if [ -f "${x}" ] then if ! sed -ne 1p "${x}" | egrep -q "^${HEADER}" then echo "Error: the current ${x} is not automatically generated." if $FORCE; then echo "force specified, (re)generating file anyway." else echo "Use \"modules-update force\" to force (re)generation." exit 1 fi fi fi done if [ 0 -ne "`id -u`" ] then echo "You have to be root to do this." exit 2 fi if [ -e "${CFGFILE}" ] then cp -f "${CFGFILE}" "${CFGFILE}".old fi if ${KERNEL_2_5}; then if [ -e "${CFGFILE2}" ] then cp -f "${CFGFILE2}" "${CFGFILE2}".old fi if [ -e "${CFGFILE4}" ] then cp -f "${CFGFILE4}" "${CFGFILE4}".old fi fi echo "${HEADER}" > "${TMPFILE}" cat <> "${TMPFILE}" # # Please do not edit this file directly. If you want to change or add # anything please take a look at the files in ${MODDIR} and read # the manpage for modules-update. # EOF if [ -x /sbin/generate-modprobe.conf -a "${KERNEL_2_5}" = "true" ] then sed -e "s:the files in ${MODDIR}:${CFGFILE}:" \ "${TMPFILE}" > "${TMPFILE2}" if [ -f "${CFGFILE3}" ] then sed -e "s:the files in ${MODDIR}:${CFGFILE3}:" \ "${TMPFILE}" > "${TMPFILE4}" fi fi for cfg in "${MODDIR}"/* "${CONF}" do [ -d "${cfg}" ] && continue [ ! -r "${cfg}" ] && continue # Skip backup and RCS files; fixes bug 20597 (07 May 2004 agriffis) [[ ${cfg} == *~ || ${cfg} == *.bak || ${cfg} == *,v ]] && continue echo "### modules-update: start processing ${cfg}" >> "${TMPFILE}" if [ -x ${cfg} ] then # $cfg can be executable; nice touch, Wichert! :) "${cfg}" >> "${TMPFILE}" else cat "${cfg}" >> "${TMPFILE}" fi echo >> "${TMPFILE}" echo "### modules-update: end processing ${cfg}" >> "${TMPFILE}" echo >> "${TMPFILE}" done mv -f "${TMPFILE}" "${CFGFILE}" if [ -x /sbin/generate-modprobe.conf -a "${KERNEL_2_5}" = "true" ] then # Make sure that generate-modprobe.conf can handle --assume-kernel # if we were called with it. if [[ -n ${ASSUME_KV} ]] && ! grep -qe --assume-kernel \ /sbin/generate-modprobe.conf then eerror "Error: modules-update called with --assume-kernel flag, but" eerror "generate-modprobe.conf doesn't understand it. You need to" eerror "install >=module-init-tools-3.0-r2" exit 3 fi if /sbin/generate-modprobe.conf ${ASSUME_KV:+--assume-kernel=${KV}} \ >> "${TMPFILE2}" 2> /dev/null then mv -f "${TMPFILE2}" "${CFGFILE2}" else ewarn "Warning: could not generate ${CFGFILE2}!" rm -f "${TMPFILE2}" fi if [ -f "${CFGFILE3}" ] then gawk '$0 !~ /^[[:space:]]*include/ { print $0 }' "${CFGFILE3}" \ > "${TMPFILE3}" export TESTING_MODPROBE_CONF="${TMPFILE3}" if /sbin/generate-modprobe.conf ${ASSUME_KV:+--assume-kernel=${KV}} \ >> "${TMPFILE4}" 2> /dev/null then mv -f "${TMPFILE4}" "${CFGFILE4}" echo >> "${CFGFILE4}" echo "include /etc/modprobe.conf" >> "${CFGFILE4}" else ewarn "Warning: could not generate ${CFGFILE4}!" rm -f "${TMPFILE4}" fi rm -f "${TMPFILE3}" fi 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 if [ -f /usr/src/linux/System.map ]; then depmod -a -F /usr/src/linux/System.map ${KV} else ewarn "System.map not found - unable to check symbols" fi fi # vim:ts=4