xref: /freebsd/share/man/man4/kld.4 (revision 1a720cbec513210fa2e85c3882741ef2f6dc5f35)
122872b5fSGuy Helmer.\" Copyright (c) 1993 Christopher G. Demetriou
222872b5fSGuy Helmer.\" All rights reserved.
322872b5fSGuy Helmer.\"
422872b5fSGuy Helmer.\" Redistribution and use in source and binary forms, with or without
522872b5fSGuy Helmer.\" modification, are permitted provided that the following conditions
622872b5fSGuy Helmer.\" are met:
722872b5fSGuy Helmer.\" 1. Redistributions of source code must retain the above copyright
822872b5fSGuy Helmer.\"    notice, this list of conditions and the following disclaimer.
922872b5fSGuy Helmer.\" 2. Redistributions in binary form must reproduce the above copyright
1022872b5fSGuy Helmer.\"    notice, this list of conditions and the following disclaimer in the
1122872b5fSGuy Helmer.\"    documentation and/or other materials provided with the distribution.
1222872b5fSGuy Helmer.\" 3. The name of the author may not be used to endorse or promote products
1322872b5fSGuy Helmer.\"    derived from this software without specific prior written permission
1422872b5fSGuy Helmer.\"
1522872b5fSGuy Helmer.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1622872b5fSGuy Helmer.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1722872b5fSGuy Helmer.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1822872b5fSGuy Helmer.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1922872b5fSGuy Helmer.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2022872b5fSGuy Helmer.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2122872b5fSGuy Helmer.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2222872b5fSGuy Helmer.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2322872b5fSGuy Helmer.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2422872b5fSGuy Helmer.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2522872b5fSGuy Helmer.\"
267ec7b58fSBaptiste Daroussin.Dd January 13, 2014
2722872b5fSGuy Helmer.Dt KLD 4
283d45e180SRuslan Ermilov.Os
2922872b5fSGuy Helmer.Sh NAME
3022872b5fSGuy Helmer.Nm kld
3122872b5fSGuy Helmer.Nd dynamic kernel linker facility
3222872b5fSGuy Helmer.Sh DESCRIPTION
33b5c508fbSRuslan ErmilovThe LKM (Loadable Kernel Modules) facility has been deprecated in
34b5c508fbSRuslan Ermilov.Fx 3.0
35b5c508fbSRuslan Ermilovand above in favor of the
3622872b5fSGuy Helmer.Nm
376d249eeeSSheldon Hearninterface.
386d249eeeSSheldon HearnThis interface, like its
3922872b5fSGuy Helmerpredecessor, allows the system administrator to dynamically add and remove
40b5e7e999SRuslan Ermilovfunctionality from a running system.
41b5e7e999SRuslan ErmilovThis ability also helps software
4222872b5fSGuy Helmerdevelopers to develop new parts of the kernel without constantly rebooting
4322872b5fSGuy Helmerto test their changes.
4422872b5fSGuy Helmer.Pp
4522872b5fSGuy HelmerVarious types of modules can be loaded into the system.
4622872b5fSGuy HelmerThere are several defined module types, listed below, which can
47b5e7e999SRuslan Ermilovbe added to the system in a predefined way.
48b5e7e999SRuslan ErmilovIn addition, there
4922872b5fSGuy Helmeris a generic type, for which the module itself handles loading and
5022872b5fSGuy Helmerunloading.
5122872b5fSGuy Helmer.Pp
5222872b5fSGuy HelmerThe
53b5c508fbSRuslan Ermilov.Fx
5422872b5fSGuy Helmersystem makes extensive use of loadable kernel modules, and provides loadable
5522872b5fSGuy Helmerversions of most file systems, the
5622872b5fSGuy Helmer.Tn NFS
5722872b5fSGuy Helmerclient and server, all the screen-savers, and the
5822872b5fSGuy Helmer.Tn Linux
59405c3050SMateusz Guzikemulator.
6022872b5fSGuy Helmer.Nm
6122872b5fSGuy Helmermodules are placed by default in the
6231ab9a12SDima Dorfman.Pa /boot/kernel
6331ab9a12SDima Dorfmandirectory along with their matching kernel.
6422872b5fSGuy Helmer.Pp
6522872b5fSGuy HelmerThe
6622872b5fSGuy Helmer.Nm
6722872b5fSGuy Helmerinterface is used through the
6822872b5fSGuy Helmer.Xr kldload 8 ,
6922872b5fSGuy Helmer.Xr kldunload 8
7022872b5fSGuy Helmerand
7122872b5fSGuy Helmer.Xr kldstat 8
7222872b5fSGuy Helmerprograms.
7322872b5fSGuy Helmer.Pp
7422872b5fSGuy HelmerThe
7522872b5fSGuy Helmer.Xr kldload 8
7622872b5fSGuy Helmerprogram can load either
7722872b5fSGuy Helmer.Xr a.out 5
7822872b5fSGuy Helmeror ELF formatted loadable modules.
7922872b5fSGuy HelmerThe
8022872b5fSGuy Helmer.Xr kldunload 8
8122872b5fSGuy Helmerprogram unloads any given loaded module, if no other module is dependent
8222872b5fSGuy Helmerupon the given module.
8322872b5fSGuy HelmerThe
8422872b5fSGuy Helmer.Xr kldstat 8
8522872b5fSGuy Helmerprogram is used to check the status of the modules currently loaded into the
8622872b5fSGuy Helmersystem.
87b9e9c23dSKen Smith.Pp
88b9e9c23dSKen SmithKernel modules may only be loaded or unloaded if the system security level
89b9e9c23dSKen Smith.Va kern.securelevel
90b9e9c23dSKen Smithis less than one.
9122872b5fSGuy Helmer.Sh "MODULE TYPES"
9222872b5fSGuy Helmer.Bl -ohang
9322872b5fSGuy Helmer.It Em "Device Driver modules"
9422872b5fSGuy HelmerNew block and character device
9522872b5fSGuy Helmerdrivers may be loaded into the system with
964b66483fSRuslan Ermilov.Nm .
9712c63b8eSGiorgos KeramidasDevice nodes for the loaded drivers are automatically created when a
9812c63b8eSGiorgos Keramidasmodule is loaded and destroyed when it is unloaded by
99*1a720cbeSAlexander Ziaee.Xr devfs 4 .
10012c63b8eSGiorgos KeramidasYou can specify userland programs that will run when new devices
10112c63b8eSGiorgos Keramidasbecome available as a result of loading modules, or existing devices
10212c63b8eSGiorgos Keramidasgo away when modules are unloaded, by configuring
10312c63b8eSGiorgos Keramidas.Xr devd 8 .
10422872b5fSGuy Helmer.El
10522872b5fSGuy Helmer.Sh FILES
10622872b5fSGuy Helmer.Bl -tag -width /usr/include/sys/module.h -compact
10731ab9a12SDima Dorfman.It Pa /boot/kernel
10831ab9a12SDima Dorfmandirectory containing module binaries built for the kernel also
10931ab9a12SDima Dorfmanresiding in the directory.
11022872b5fSGuy Helmer.It Pa /usr/include/sys/module.h
11122872b5fSGuy Helmerfile containing definitions required to compile a
11222872b5fSGuy Helmer.Nm
11322872b5fSGuy Helmermodule
11422872b5fSGuy Helmer.It Pa /usr/share/examples/kld
11522872b5fSGuy Helmerexample source code implementing a sample kld module
1163136363fSRuslan Ermilov.El
11722872b5fSGuy Helmer.Sh SEE ALSO
1184bef9e22SGuy Helmer.Xr kldfind 2 ,
1194bef9e22SGuy Helmer.Xr kldfirstmod 2 ,
1204bef9e22SGuy Helmer.Xr kldload 2 ,
1214bef9e22SGuy Helmer.Xr kldnext 2 ,
1224bef9e22SGuy Helmer.Xr kldstat 2 ,
1234bef9e22SGuy Helmer.Xr kldunload 2 ,
124*1a720cbeSAlexander Ziaee.Xr devfs 4 ,
12512c63b8eSGiorgos Keramidas.Xr devd 8 ,
12622872b5fSGuy Helmer.Xr kldload 8 ,
12722872b5fSGuy Helmer.Xr kldstat 8 ,
128b9e9c23dSKen Smith.Xr kldunload 8 ,
129b9e9c23dSKen Smith.Xr sysctl 8
1309cbda590SRuslan Ermilov.Sh HISTORY
1319cbda590SRuslan ErmilovThe
1329cbda590SRuslan Ermilov.Nm
1339cbda590SRuslan Ermilovfacility appeared in
1349cbda590SRuslan Ermilov.Fx 3.0
1359cbda590SRuslan Ermilovand was designed as a replacement for the
1365ab2dec3SChristian Brueffer.Nm lkm
1379cbda590SRuslan Ermilovfacility, which was similar in functionality to the loadable kernel modules
1389cbda590SRuslan Ermilovfacility provided by
1399cbda590SRuslan Ermilov.Tn SunOS
1409cbda590SRuslan Ermilov4.1.3.
1419cbda590SRuslan Ermilov.Sh AUTHORS
1429cbda590SRuslan ErmilovThe
1439cbda590SRuslan Ermilov.Nm
1449cbda590SRuslan Ermilovfacility was originally implemented by
1456c899950SBaptiste Daroussin.An Doug Rabson Aq Mt dfr@FreeBSD.org .
14622872b5fSGuy Helmer.Sh BUGS
14722872b5fSGuy HelmerIf a module B, is dependent on another module A, but is not compiled with
14822872b5fSGuy Helmermodule A as a dependency, then
14922872b5fSGuy Helmer.Xr kldload 8
15022872b5fSGuy Helmerfails to load module B, even if module A is already present in the system.
15122872b5fSGuy Helmer.Pp
15222872b5fSGuy HelmerIf multiple modules are dependent on module A, and are compiled with module
15322872b5fSGuy HelmerA as a dependency, then
15422872b5fSGuy Helmer.Xr kldload 8
15522872b5fSGuy Helmerloads an instance of module A when any of the modules are loaded.
15622872b5fSGuy Helmer.Pp
15722872b5fSGuy HelmerIf a custom entry point is used for a module, and the module is compiled as
15822872b5fSGuy Helmeran
15922872b5fSGuy Helmer.Sq ELF
16022872b5fSGuy Helmerbinary, then
16122872b5fSGuy Helmer.Xr kldload 8
16222872b5fSGuy Helmerfails to execute the entry point.
16322872b5fSGuy Helmer.Pp
16422872b5fSGuy Helmer.Xr kldload 8
1657ec7b58fSBaptiste Daroussinpoints the user to read
16648aad6a2SBaptiste Daroussin.Xr dmesg 8
16722872b5fSGuy Helmerfor any error encountered while loading a module.
16822872b5fSGuy Helmer.Pp
16922872b5fSGuy HelmerWhen system internal interfaces change, old modules often cannot
17022872b5fSGuy Helmerdetect this, and such modules when loaded will often cause crashes or
17122872b5fSGuy Helmermysterious failures.
172