From owner-freebsd-questions@FreeBSD.ORG Mon Sep 22 06:30:59 2003 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 71DDB16A4B3 for ; Mon, 22 Sep 2003 06:30:59 -0700 (PDT) Received: from falcon.midgard.homeip.net (h76n3fls24o1048.bredband.comhem.se [213.67.148.76]) by mx1.FreeBSD.org (Postfix) with SMTP id 9F7C243FA3 for ; Mon, 22 Sep 2003 06:30:54 -0700 (PDT) (envelope-from ertr1013@student.uu.se) Received: (qmail 9816 invoked by uid 1001); 22 Sep 2003 13:30:52 -0000 Date: Mon, 22 Sep 2003 15:30:52 +0200 From: Erik Trulsson To: David Fleck Message-ID: <20030922133052.GA7702@falcon.midgard.homeip.net> Mail-Followup-To: David Fleck , Sergey DoubleF Zaharchenko , FreeBSD Questions References: <20030921083559.U1534@grond.sourballs.org> <20030921190832.51ab0169.doublef@tele-kom.ru> <20030922074442.J430@grond.sourballs.org> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <20030922074442.J430@grond.sourballs.org> User-Agent: Mutt/1.5.4i cc: Sergey DoubleF Zaharchenko cc: FreeBSD Questions Subject: Re: What determines if kernel modules are auto-loaded? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Sep 2003 13:30:59 -0000 On Mon, Sep 22, 2003 at 07:58:27AM -0500, David Fleck wrote: > On Sun, 21 Sep 2003, Sergey DoubleF Zaharchenko wrote: > > On Sun, 21 Sep 2003 18:53:31 +0000 Sergey "DoubleF" Zaharchenko probably wrote: > > > Mostly the program which uses the device. For instance, vnconfig and > > > mount will load the necessary modules because they are supposed to be > > > run as root and expect to have the necessary priveleges. Why would a > > > programmer make a mp3 player that would auto-load the sound module? An > > > mp3 player should be portable and should not depend on such things as= a > > > kernel module. Moreover, the player is not supposed to run as > > > root, which is required to load kernel modules. > > > > You should read kldload(2), etc. if you want to load modules in your pr= ogram. >=20 > Thanks for the response - it helps shed some more light on things. But I > don't want to load modules for 'my' program - I'm far less interested in > this from a development point of view than from a system admin. point of > view. >=20 > Why, for instance, does my (4.6.2-RELEASE-p20) system have a nfs.ko kernel > module, and a line in /boot/defaults/loader.conf to enable this module, > but (apparently) no way to *use* the module? If I compile a kernel with > 'options NFS' uncommented in the kernel config file, the nfs module gets > built into the kernel, and loading the module is pointless - however, if I > comment out 'options NFS', the kernel can't compile because of missing > symbols. So I have a chunk of code that gets built by the makefile as a > module, but can't be used as a module? I find this all very unintuitive. What do you mean "can't compile"? I have built kernels without 'options NFS' before without any problems, and it certainly is supposed to be possible to build a kernel without NFS support, and later load the NFS code via the module. AFAIK all the modules built can be used as modules, otherwise, as you note, there wouldn't be much point in having them as modules and the developers are generally not that stupid. In some circumstances it is necessary to have code built into the kernel rather than loaded from the corresponding module, but these are exceptions rather than the rule. One example is the ipfw.ko module. All modules are built with a fixed set of options and this module is built without 'options IPDIVERT' which is required to used natd. So if you want to use natd you need to have both 'options IPFIREWALL' and 'options IPDIVERT' in the kernel config, while if you just want a firewall without NAT support you can compile the kernel without either option and load the ipfw.ko module at runtime. Another example is if you want to boot from an NFS-mounted filesystem, in which case you need NFS support in the kernel, since otherwise the system can=E4t load any modules. >=20 > What seems to be happening during the kernel compile process is that a > certain number of modules are always compiled, regardless of config file > settings - the settings only determine if a given chunk of code makes it > into the kernel itself. If the module is compiled into a .ko file, and if > the code isn't present in the kernel, then it can be loaded by kldload. Is > this correct? Yes, that is essentially correct. --=20 Erik Trulsson ertr1013@student.uu.se