モジュールの読み込み

モジュールの読み込みは /etc/rc.d/rc.modules で行います。/etc/rc.d/rc.modules は Bourne シェルスクリプトです。

/etc/rc.d/rc.modules
### Update module dependencies ###
# If /usr is mounted and we have 'find', we can try to take a shortcut:
RELEASE=`uname -r`
if [ -e /lib/modules/$RELEASE/modules.dep -a /lib/modules/$RELEASE/modules.dep -nt /etc/modules.conf ]; then
  NEWMODS="`/usr/bin/find /lib/modules/$RELEASE -type f -newer /lib/modules/$RELEASE/modules.dep`"
  # Only rebuild dependencies if new module(s) are found:
  if [ ! "" = "$NEWMODS" ]; then
    echo "New kernel modules have been found in /lib/modules/$RELEASE/:"
    echo "$NEWMODS"
    echo "Updating module dependencies for Linux $RELEASE:"
    /sbin/depmod -a
  else
    echo "Module dependencies up to date (no new kernel modules found)."
  fi
else # we don't have find, or there is no existing modules.dep, or it is out of date.
  echo "Updating module dependencies for Linux $RELEASE:"
  /sbin/depmod -A
fi

RELEASE に uname -r の出力結果を代入します。/lib/modules/$RELEASE/modules.dep が存在し、/lib/modules/$RELEASE/modules.dep が /etc/modules.conf よりも新しい場合、NEWMODS に /usr/bin/find /lib/modules/$RELEASE -type f -newer /lib/modules/$RELEASE/modules.dep の出力結果を代入します。これは、前回の depmod 実行以降に変更されたファイルを検出します。変更された、あるいは追加されたファイルを検出した場合 /sbin/depmod -a を実行し、新しい modules.dep を作成します。

/lib/modules/$RELEASE/modules.dep が存在しない場合は、/sbin/depmod -A を実行し modules.dep を作成します。また /etc/modules.conf が変更され、modules.dep が古い場合も /sbin/depmod -A を実行します。

コメント部分に find がない場合は /sbin/depmod -A を実行するとありますが、間違いです。find がない場合は正しく動作しません。find は大変便利なプログラムですので、インストールすることをお薦めします。find をインストールしない場合は、以下のように書き換える必要があります。

/etc/rc.d/rc.modules
### Update module dependencies ###
# If /usr is mounted and we have 'find', we can try to take a shortcut:
RELEASE=`uname -r`
if [ -e /lib/modules/$RELEASE/modules.dep -a /lib/modules/$RELEASE/modules.dep -nt /etc/modules.conf ]; then
  if [ -x /usr/bin/find ]; then
    NEWMODS="`/usr/bin/find /lib/modules/$RELEASE -type f -newer /lib/modules/$RELEASE/modules.dep`"
    # Only rebuild dependencies if new module(s) are found:
    if [ ! "" = "$NEWMODS" ]; then
      echo "New kernel modules have been found in /lib/modules/$RELEASE/:"
      echo "$NEWMODS"
      echo "Updating module dependencies for Linux $RELEASE:"
      /sbin/depmod -a
    else
      echo "Module dependencies up to date (no new kernel modules found)."
    fi
  else
    echo "Updating module dependencies for Linux $RELEASE:"
    /sbin/depmod -a
  fi
else # we don't have find, or there is no existing modules.dep, or it is out of date.
  echo "Updating module dependencies for Linux $RELEASE:"
  /sbin/depmod -A
fi

find を利用すると、必要な時にのみ /sbin/depmod -a を実行します。find がない場合は、毎回 /sbin/depmod -a を実行することになります。すなわち、find は起動時間を短縮するために利用されています。

/etc/rc.d/rc.modules
### Network device support ###
# Most of these drivers will probe automatically for the card if you don't
# specify an I/O address and IRQ.  But, the NE2000 driver needs at least the
# I/O.  For complete information, see the net-modules.txt file that comes
# with the Linux 2.2.x source code.  This file can also be found on the
# Slackware CD-ROM in the /docs/linux-2.2.x/ directory.
#
# First, if setup probing found a network card, there may be an 'rc.netdevice'
# file that we should run to load the network module:
if [ -x /etc/rc.d/rc.netdevice ]; then
  . /etc/rc.d/rc.netdevice
fi

/etc/rc.d/rc.netdevice が実行可能であれば、/etc/rc.d/rc.netdevice を実行します。これは、主にネットワークインタフェースカード用のモジュールを読み込みます。

/etc/rc.d/rc.modules
# *** THIS IS STILL LOADED BY DEFAULT ***
# SCSI emulation support.  This will provide SCSI host adapter emulation
# for IDE ATAPI devices, and will allow you to use a SCSI device driver
# instead of a native ATAPI driver.  This is useful if you have an ATAPI
# device for which no native driver has been written (for example, an ATAPI
# PD-CD or CD-RW drive); you can then use this emulation together with an
# appropriate SCSI device driver.  Note that this option does NOT allow you
# to attach SCSI devices to a box that doesn't have a SCSI host adapter
# installed.  Also, you'll need to exclude your CD-RW from being grabbed by
# the normal ATAPI driver by passing a flag to the kernel at boot time.
# If you're using LILO, add this:  append="hdc=ide-scsi"
# Replace "hdc" with the appropriate device name.
/sbin/modprobe ide-scsi

/sbin/modprobe ide-scsi を実行し、モジュール ide-scsi を読み込みます。

参考文献


前へ 起動プロセス入門 次へ