329 lines
6.1 KiB
HTML
329 lines
6.1 KiB
HTML
|
<HTML
|
||
|
><HEAD
|
||
|
><TITLE
|
||
|
>What is kerneld?</TITLE
|
||
|
><META
|
||
|
NAME="GENERATOR"
|
||
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
|
||
|
REL="HOME"
|
||
|
TITLE="Linux kerneld mini-HOWTO"
|
||
|
HREF="index.html"><LINK
|
||
|
REL="PREVIOUS"
|
||
|
TITLE="Linux kerneld mini-HOWTO"
|
||
|
HREF="index.html"><LINK
|
||
|
REL="NEXT"
|
||
|
TITLE="How do I set it up?"
|
||
|
HREF="setup.html"></HEAD
|
||
|
><BODY
|
||
|
CLASS="SECT1"
|
||
|
BGCOLOR="#FFFFFF"
|
||
|
TEXT="#000000"
|
||
|
LINK="#0000FF"
|
||
|
VLINK="#840084"
|
||
|
ALINK="#0000FF"
|
||
|
><DIV
|
||
|
CLASS="NAVHEADER"
|
||
|
><TABLE
|
||
|
WIDTH="100%"
|
||
|
BORDER="0"
|
||
|
CELLPADDING="0"
|
||
|
CELLSPACING="0"
|
||
|
><TR
|
||
|
><TH
|
||
|
COLSPAN="3"
|
||
|
ALIGN="center"
|
||
|
>Linux kerneld mini-HOWTO</TH
|
||
|
></TR
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="10%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="bottom"
|
||
|
><A
|
||
|
HREF="index.html"
|
||
|
>Prev</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="80%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="bottom"
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="10%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="bottom"
|
||
|
><A
|
||
|
HREF="setup.html"
|
||
|
>Next</A
|
||
|
></TD
|
||
|
></TR
|
||
|
></TABLE
|
||
|
><HR
|
||
|
ALIGN="LEFT"
|
||
|
WIDTH="100%"></DIV
|
||
|
><DIV
|
||
|
CLASS="SECT1"
|
||
|
><H1
|
||
|
CLASS="SECT1"
|
||
|
><A
|
||
|
NAME="INTRODUCTION"
|
||
|
>What is kerneld?</A
|
||
|
></H1
|
||
|
><P
|
||
|
>The kerneld feature was introduced during the 1.3
|
||
|
development kernels by Bjorn Ekwall. It allows kernel modules
|
||
|
such as device drivers, network drivers and filesystems to be
|
||
|
loaded automatically when they are needed, rather than having to
|
||
|
do it manually with <B
|
||
|
CLASS="COMMAND"
|
||
|
>modprobe</B
|
||
|
> or
|
||
|
<B
|
||
|
CLASS="COMMAND"
|
||
|
>insmod</B
|
||
|
>. </P
|
||
|
><P
|
||
|
>And for the more amusing aspects, although these are not
|
||
|
(yet ?) integrated with the standard kernel: </P
|
||
|
><P
|
||
|
></P
|
||
|
><UL
|
||
|
><LI
|
||
|
><P
|
||
|
>It can be setup to run a user-program instead
|
||
|
of the default screen blanker, thus letting you use any
|
||
|
program as a screen-saver. </P
|
||
|
></LI
|
||
|
><LI
|
||
|
><P
|
||
|
>Similar to the screen-blanker support, you can
|
||
|
also change the standard console beep into something
|
||
|
completely different. </P
|
||
|
></LI
|
||
|
></UL
|
||
|
><P
|
||
|
>kerneld consists of two components: </P
|
||
|
><P
|
||
|
></P
|
||
|
><UL
|
||
|
><LI
|
||
|
><P
|
||
|
>Support in the Linux kernel for sending
|
||
|
requests to a daemon requesting a module for a certain
|
||
|
task. </P
|
||
|
></LI
|
||
|
><LI
|
||
|
><P
|
||
|
>A user-space daemon that can figure out what
|
||
|
modules must be loaded to fulfill the request from the
|
||
|
kernel. </P
|
||
|
></LI
|
||
|
></UL
|
||
|
><P
|
||
|
>Both components must be working for the kerneld support to
|
||
|
function; it is not enough that only one or the other has been
|
||
|
setup. </P
|
||
|
><DIV
|
||
|
CLASS="SECT2"
|
||
|
><H2
|
||
|
CLASS="SECT2"
|
||
|
><A
|
||
|
NAME="WHY"
|
||
|
>Why do I want to use it ?</A
|
||
|
></H2
|
||
|
><P
|
||
|
>There are some good reasons for using kerneld. The ones I
|
||
|
will mention are mine, others have other reasons. </P
|
||
|
><P
|
||
|
></P
|
||
|
><UL
|
||
|
><LI
|
||
|
><P
|
||
|
>If you have to build kernels for several
|
||
|
systems that only differ slightly - different kind of network
|
||
|
card, for instance - then you can build a single kernel and
|
||
|
some modules, instead of having to build individual kernels
|
||
|
for each system. </P
|
||
|
></LI
|
||
|
><LI
|
||
|
><P
|
||
|
>Modules are easier for developers to test.
|
||
|
You don't need to reboot the system to load and unload the
|
||
|
driver; this applies to all modules, not just kerneld-loaded
|
||
|
ones. </P
|
||
|
></LI
|
||
|
><LI
|
||
|
><P
|
||
|
>It cuts down on the kernel memory usage
|
||
|
leaving more memory available for applications. Memory used by
|
||
|
the kernel is <I
|
||
|
CLASS="EMPHASIS"
|
||
|
>never</I
|
||
|
> swapped out, so if
|
||
|
you have 100Kb worth of unused drivers compiled into your
|
||
|
kernel, they are simply wasting RAM. </P
|
||
|
></LI
|
||
|
><LI
|
||
|
><P
|
||
|
>Some of the things I use, the ftape
|
||
|
floppy-tape driver, for instance, or iBCS, are only available
|
||
|
as modules, but I don't want to bother with loading and
|
||
|
unloading them whenever I need them. </P
|
||
|
></LI
|
||
|
><LI
|
||
|
><P
|
||
|
>People making Linux distributions don't have
|
||
|
to build 284 different boot images: Each user loads the
|
||
|
drivers he needs for just his hardware. Most modern Linux
|
||
|
distributions will detect your hardware and will only load
|
||
|
those modules actually required.</P
|
||
|
></LI
|
||
|
></UL
|
||
|
><P
|
||
|
>Of course, there are also reasons why you may not want to
|
||
|
use it. If you prefer to have just one kernel image file with
|
||
|
all of your drivers built in, you are reading the wrong
|
||
|
document.</P
|
||
|
></DIV
|
||
|
><DIV
|
||
|
CLASS="SECT2"
|
||
|
><H2
|
||
|
CLASS="SECT2"
|
||
|
><A
|
||
|
NAME="WHERE"
|
||
|
>Where can I pick up the necessary pieces
|
||
|
?</A
|
||
|
></H2
|
||
|
><P
|
||
|
>The support in the Linux kernel was introduced with Linux
|
||
|
1.3.57. If you have an earlier kernel version, you will need to
|
||
|
upgrade if you want the kerneld support. The current Linux
|
||
|
kernel sources can be found at most Linux FTP archive sites
|
||
|
including:</P
|
||
|
><P
|
||
|
></P
|
||
|
><UL
|
||
|
><LI
|
||
|
><P
|
||
|
><A
|
||
|
HREF="ftp://ftp.kernel.org/pub/linux/kernel/"
|
||
|
TARGET="_top"
|
||
|
>Kernel.Org
|
||
|
Archive</A
|
||
|
></P
|
||
|
></LI
|
||
|
><LI
|
||
|
><P
|
||
|
><A
|
||
|
HREF="ftp://metalab.unc.edu/pub/Linux/kernel/"
|
||
|
TARGET="_top"
|
||
|
>Metalab Linux
|
||
|
Archive</A
|
||
|
></P
|
||
|
></LI
|
||
|
><LI
|
||
|
><P
|
||
|
><A
|
||
|
HREF="ftp://tsx-11.mit.edu/pub/linux/sources/system/"
|
||
|
TARGET="_top"
|
||
|
>TSX-11
|
||
|
at MIT</A
|
||
|
></P
|
||
|
></LI
|
||
|
></UL
|
||
|
><P
|
||
|
>The user-space daemon is included with the
|
||
|
<SPAN
|
||
|
CLASS="PRODUCTNAME"
|
||
|
>modules</SPAN
|
||
|
> package. These are normally
|
||
|
available from the same place as the kernel sources
|
||
|
</P
|
||
|
><DIV
|
||
|
CLASS="NOTE"
|
||
|
><BLOCKQUOTE
|
||
|
CLASS="NOTE"
|
||
|
><P
|
||
|
><B
|
||
|
>Note: </B
|
||
|
>If you want to try module-loading with the latest
|
||
|
<I
|
||
|
CLASS="EMPHASIS"
|
||
|
>development</I
|
||
|
> kernels, you should use the
|
||
|
newer <SPAN
|
||
|
CLASS="PRODUCTNAME"
|
||
|
>modutils</SPAN
|
||
|
> package and not the
|
||
|
<SPAN
|
||
|
CLASS="PRODUCTNAME"
|
||
|
>modules</SPAN
|
||
|
>. Always check the
|
||
|
<TT
|
||
|
CLASS="FILENAME"
|
||
|
>Documentation/Changes</TT
|
||
|
> file in the kernel
|
||
|
sources for the minimum required version number for your kernel
|
||
|
image. Also see about the problems with modules
|
||
|
and 2.1 kernels.</P
|
||
|
></BLOCKQUOTE
|
||
|
></DIV
|
||
|
></DIV
|
||
|
></DIV
|
||
|
><DIV
|
||
|
CLASS="NAVFOOTER"
|
||
|
><HR
|
||
|
ALIGN="LEFT"
|
||
|
WIDTH="100%"><TABLE
|
||
|
WIDTH="100%"
|
||
|
BORDER="0"
|
||
|
CELLPADDING="0"
|
||
|
CELLSPACING="0"
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="index.html"
|
||
|
>Prev</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="34%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="index.html"
|
||
|
>Home</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="setup.html"
|
||
|
>Next</A
|
||
|
></TD
|
||
|
></TR
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="top"
|
||
|
>Linux kerneld mini-HOWTO</TD
|
||
|
><TD
|
||
|
WIDTH="34%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="top"
|
||
|
> </TD
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="top"
|
||
|
>How do I set it up?</TD
|
||
|
></TR
|
||
|
></TABLE
|
||
|
></DIV
|
||
|
></BODY
|
||
|
></HTML
|
||
|
>
|