Author: dougb
Date: Sat Jun 18 19:41:05 2011
New Revision: 223264
URL: http://svn.freebsd.org/changeset/base/223264

Log:
  Add rc.d/kld to load kernel modules after local disks are up.
  This method is many times faster than doing it in /boot/loader.conf.

Added:
  head/etc/rc.d/kld   (contents, props changed)
Modified:
  head/etc/defaults/rc.conf
  head/etc/rc.d/Makefile
  head/etc/rc.d/var
  head/share/man/man5/rc.conf.5

Modified: head/etc/defaults/rc.conf
==============================================================================
--- head/etc/defaults/rc.conf   Sat Jun 18 15:23:08 2011        (r223263)
+++ head/etc/defaults/rc.conf   Sat Jun 18 19:41:05 2011        (r223264)
@@ -38,6 +38,7 @@ ddb_enable="NO"               # Set to YES to load dd
 ddb_config="/etc/ddb.conf"     # ddb(8) config file.
 devd_enable="YES"      # Run devd, to trigger programs on device tree changes.
 devd_flags=""          # Additional flags for devd(8).
+#kld_list=""           # Kernel modules to load after local disks are mounted
 kldxref_enable="NO"    # Build linker.hints files with kldxref(8).
 kldxref_clobber="NO"   # Overwrite old linker.hints at boot.
 kldxref_module_path="" # Override kern.module_path. A ';'-delimited list.

Modified: head/etc/rc.d/Makefile
==============================================================================
--- head/etc/rc.d/Makefile      Sat Jun 18 15:23:08 2011        (r223263)
+++ head/etc/rc.d/Makefile      Sat Jun 18 19:41:05 2011        (r223264)
@@ -18,7 +18,7 @@ FILES=        DAEMON FILESYSTEMS LOGIN NETWORKI
        ip6addrctl ipfilter ipfs ipfw ipmon \
        ipnat ipsec ipxrouted \
        jail \
-       kadmind kerberos keyserv kldxref kpasswdd \
+       kadmind kerberos keyserv kld kldxref kpasswdd \
        ldconfig local localpkg lockd lpd \
        mixer motd mountcritlocal mountcritremote mountlate \
        mdconfig mdconfig2 mountd moused mroute6d mrouted msgs \

Added: head/etc/rc.d/kld
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/etc/rc.d/kld   Sat Jun 18 19:41:05 2011        (r223264)
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# Copyright (c) 2011 Douglas Barton
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+# PROVIDE: kld
+# REQUIRE: FILESYSTEMS
+# KEYWORD: nojail
+
+. /etc/rc.subr
+
+name="kld"
+
+start_cmd="${name}_start"
+stop_cmd=':'
+
+kld_start()
+{
+       [ -n "$kld_list" ] || return
+
+       local _kld
+
+       echo 'Loading kernel modules:'
+       for _kld in $kld_list ; do
+               load_kld -e ${_kld}.ko $_kld
+       done
+}
+
+load_rc_config $name
+run_rc_command "$1"

Modified: head/etc/rc.d/var
==============================================================================
--- head/etc/rc.d/var   Sat Jun 18 15:23:08 2011        (r223263)
+++ head/etc/rc.d/var   Sat Jun 18 19:41:05 2011        (r223264)
@@ -28,7 +28,7 @@
 #
 
 # PROVIDE: var
-# REQUIRE: FILESYSTEMS
+# REQUIRE: FILESYSTEMS kld
 
 . /etc/rc.subr
 

Modified: head/share/man/man5/rc.conf.5
==============================================================================
--- head/share/man/man5/rc.conf.5       Sat Jun 18 15:23:08 2011        
(r223263)
+++ head/share/man/man5/rc.conf.5       Sat Jun 18 19:41:05 2011        
(r223264)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd April 27, 2011
+.Dd June 18, 2011
 .Dt RC.CONF 5
 .Os
 .Sh NAME
@@ -196,6 +196,14 @@ Configuration file for
 .Xr ddb 8 .
 Default
 .Pa /etc/ddb.conf .
+.It Va kld_list
+.Pq Vt str
+A list of kernel modules to load right after the local
+disks are mounted.
+Loading modules at this point in the boot process is
+much faster than doing it via
+.Pa /boot/loader.conf
+for those modules not necessary for mounting local disk.
 .It Va kldxref_enable
 .Pq Vt bool
 Set to
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to