Welcome to the Slackware Documentation Project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
slackbook:linux_kernel [2012/09/17 03:34 (UTC)]
mfillpot Moved text to the proper section
slackbook:linux_kernel [2012/09/17 03:35 (UTC)]
mfillpot [Working with Modules] Aded original text and formatting
Line 21: Line 21:
 ===== Working with Modules ===== ===== Working with Modules =====
  
 +The complexity of a modern linux kernel is staggering. The source code
 +for the kernel weighs in at nearly 400MB uncompressed. There are
 +thousands of developers, hundreds of options, and if everything were
 +built together, the kernel would soon pass 100MB in size itself. In
 +order to keep the size of the kernel down (as well as the amount of RAM
 +needed for the kernel), most of the kernel options are built as
 +modules. You can think of these modules as device drivers which can be
 +inserted or removed from a running kernel at will. In truth, many of
 +them aren't device drivers at all, but contain support for things such
 +as network protocols, security measures, and even filesystems. In
 +short, nearly any piece of the linux kernel can be built as a loadable
 +module.
 +
 +It's important to realize that Slackware will automatically handle
 +loading most modules for you. When your system boots,
 +**//​udevd//​**(8) is started and begins to probe your
 +system'​s hardware. For each device it finds, it loads the proper module
 +and created a device node in ''/​dev''​. This usually
 +means that you will not need to load any modules in order to use your
 +computer, but occasionally this is necessary.
 +
 +So what modules are currently loaded on your computer and how do we
 +load and unload them? Fortunately we have a full suite of tools for
 +handling this. As you might have guessed, the tool for listing modules
 +is **//​lsmod//​**(8).
 +
 +
 +<​code>​
 +darkstar:~# lsmod
 +Module ​                 Size  Used by
 +nls_utf8 ​               1952  1 
 +cifs                  240600 ​ 2 
 +i915                  168584 ​ 2 
 +drm                   ​168128 ​ 3 i915
 +i2c_algo_bit ​           6468  1 i915
 +tun                    12740  1 
 +... many more lines ommitted ...
 +</​code>​
 +
 +
 +In addition to showing you what modules are loaded, it displays the
 +size of each module and tells you what other modules are using it.
 +
 +There are two applications for loading modules:
 +**//​insmod//​**(8) and
 +**//​modprobe//​**(8). Both will load modules and
 +report any errors (such as loading a module for a device that isn't
 +present in your system), but **//​modprobe//​** is
 +preferred because it can load any module dependencies. Using either is
 +straight-forward.
 +
 +
 +<​code>​
 +darkstar:~# insmod ext3
 +darkstar:~# modprobe ext4
 +darkstar:~# lsmod | grep ext
 +ext4                  239928 ​ 1 
 +jbd2                   ​59088 ​ 1 ext4
 +crc16                   ​1984 ​ 1 ext4
 +ext3                  139408 ​ 0 
 +jbd                    48520  1 ext3
 +mbcache ​                ​8068 ​ 2 ext4,ext3
 +</​code>​
 +
 +Removing modules can be a tricky process, and once again we have two
 +programs for removing them: **//​rmmod//​**(8) and
 +**//​modprobe//​**. ​ In order to remove a module with
 +modprobe, you'll need to use the //-r// argument.
 +
 +
 +<​code>​
 +darkstar:~# rmmod ext3
 +darkstar:~# modprobe -r ext4
 +darkstar:~# lsmod | grep ext
 +</​code>​
 ===== Compiling A Kernel and Why to do So ===== ===== Compiling A Kernel and Why to do So =====
  

In Other Languages
QR Code
QR Code slackbook:linux_kernel (generated for current page)