mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 23:42:43 +00:00
add some docs from Markus Becker about adding custom kernel modules to our fine buildroot
SVN-Revision: 1739
This commit is contained in:
parent
c3625bfc7f
commit
ad3746d147
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
<p>Usage and documentation by Felix Fietkau and Waldemar Brodkorb, based on uClibc Buildroot
|
<p>Usage and documentation by Felix Fietkau and Waldemar Brodkorb, based on uClibc Buildroot
|
||||||
documentation by Thomas Petazzoni. Contributions from Karsten Kruse,
|
documentation by Thomas Petazzoni. Contributions from Karsten Kruse,
|
||||||
Ned Ludd, Martin Herren.</p>
|
Ned Ludd, Martin Herren. OpenWrt Kernel Module Creation Howto by Markus Becker.</p>
|
||||||
|
|
||||||
<p><small>Last modification : $Id$</small></p>
|
<p><small>Last modification : $Id$</small></p>
|
||||||
|
|
||||||
@ -37,6 +37,14 @@
|
|||||||
<li><a href="#downloaded_packages">Location of downloaded packages</a></li>
|
<li><a href="#downloaded_packages">Location of downloaded packages</a></li>
|
||||||
<li><a href="#add_software">Extending OpenWrt with more Software</a></li>
|
<li><a href="#add_software">Extending OpenWrt with more Software</a></li>
|
||||||
<li><a href="#links">Ressources</a></li>
|
<li><a href="#links">Ressources</a></li>
|
||||||
|
<br>
|
||||||
|
<li><a href="#about_module">About OpenWrt Kernel Module Compilation</a></li>
|
||||||
|
<li><a href="#kernel">Enable the kernel options</a></li>
|
||||||
|
<li><a href="#buildroot_option">Create a buildroot option</a></li>
|
||||||
|
<li><a href="#binary">Define the binary files for the kernel module</a></li>
|
||||||
|
<li><a href="#control">Specify the ipkg control file</a></li>
|
||||||
|
<li><a href="#compile">Compile the kernel module</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2><a name="about" id="about"></a>About OpenWrt Buildroot</h2>
|
<h2><a name="about" id="about"></a>About OpenWrt Buildroot</h2>
|
||||||
@ -602,5 +610,94 @@ foo-compile: bar-compile
|
|||||||
<a href="http://openwrt.org/">http://openwrt.org/</a></p>
|
<a href="http://openwrt.org/">http://openwrt.org/</a></p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="titre">
|
||||||
|
<h1>OpenWrt Kernel Module Creation Howto</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2><a name="about_module" id="about_module"></a>About OpenWrt Kernel Module Compilation</h2>
|
||||||
|
|
||||||
|
<p>You are planning to compile a kernel module? This howto will
|
||||||
|
explain what you have to do, to have your kernel module installable as
|
||||||
|
an ipkg.</p>
|
||||||
|
|
||||||
|
<h2><a name="kernel" id="kernel"></a>Enable the kernel options</h2>
|
||||||
|
|
||||||
|
<p>Enable the kernel options you want by modifying
|
||||||
|
build_mipsel/linux/.config. We are assuming, that you already had your
|
||||||
|
kernel compiled once here. You can do the modification by hand or by
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
$ cd build_mipsel/linux
|
||||||
|
$ make menuconfig
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
And copy it, so your changes are not getting lost, when doing a 'make
|
||||||
|
dirclean'. Here we assume that you are compiling for Broadcom chipset
|
||||||
|
based devices:
|
||||||
|
|
||||||
|
<pre> $ cp .config ../../../target/linux/linux-2.4/config/brcm </pre>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<h2><a name="buildroot_option" id="buildroot_option"></a>Create a buildroot option</h2>
|
||||||
|
|
||||||
|
<p>Create a buildroot option by modifying/inserting into
|
||||||
|
target/linux/Config.in, e.g.
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
config BR2_PACKAGE_KMOD_USB_KEYBOARD
|
||||||
|
tristate "Support for USB keyboards"
|
||||||
|
default m
|
||||||
|
depends BR2_PACKAGE_KMOD_USB_CONTROLLER
|
||||||
|
</pre>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2><a name="binary" id="binary"></a>Define the binary files for the kernel module</h2>
|
||||||
|
|
||||||
|
<p>Define the binary files for the kernel module by modifying/inserting into
|
||||||
|
target/linux/linux-2.4/Makefile, e.g.
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
$(eval $(call KMOD_template,USB_KEYBOARD,usb-kbd,\
|
||||||
|
$(MODULES_DIR)/kernel/drivers/input/input.o \
|
||||||
|
$(MODULES_DIR)/kernel/drivers/input/keybdev.o \
|
||||||
|
$(MODULES_DIR)/kernel/drivers/usb/usbkbd.o \
|
||||||
|
,CONFIG_USB_KEYB,kmod-usb-core,60,input keybdev usbkbd))
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Where CONFIG_USB_KEYB is the kernel option, USB_KEYBOARD is the last
|
||||||
|
part of BR2_PACKAGE_KMOD_USB_KEYBOARD and usb-kbd is part of the
|
||||||
|
filename of the created ipkg.</p>
|
||||||
|
|
||||||
|
<h2><a name="control" id="control"></a>Specify the ipkg control file</h2>
|
||||||
|
|
||||||
|
<p>Create e.g. target/linux/control/kmod-usb-kbd.control with content similar to this:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
Package: kmod-usb-kbd
|
||||||
|
Priority: optional
|
||||||
|
Section: sys
|
||||||
|
Maintainer: Markus Becker <mab@comnets.uni-bremen.de>
|
||||||
|
Source: buildroot internal
|
||||||
|
Description: Kernel Support for USB Keyboards
|
||||||
|
</pre>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2><a name="compile" id="compile"></a>Compile the kernel module</h2>
|
||||||
|
|
||||||
|
<p>Enable the kernel module with
|
||||||
|
<pre>
|
||||||
|
$ make menuconfig
|
||||||
|
</pre>
|
||||||
|
in TOPDIR and selecting it.<br>
|
||||||
|
|
||||||
|
Compile with
|
||||||
|
<pre>
|
||||||
|
$ make dirclean && make
|
||||||
|
</pre>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user