X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/d0844d0d5b971931190ef464afe291f1d3ac1ad9..49bbf085bb6c7712a2b8ed8f62b066f4f8040697:/openwrt/docs/buildroot-documentation.html diff --git a/openwrt/docs/buildroot-documentation.html b/openwrt/docs/buildroot-documentation.html index 85cce4780..ede3796a6 100644 --- a/openwrt/docs/buildroot-documentation.html +++ b/openwrt/docs/buildroot-documentation.html @@ -17,7 +17,7 @@

Usage and documentation by Felix Fietkau and Waldemar Brodkorb, based on uClibc Buildroot documentation by Thomas Petazzoni. Contributions from Karsten Kruse, - Ned Ludd, Martin Herren.

+ Ned Ludd, Martin Herren. OpenWrt Kernel Module Creation Howto by Markus Becker.

Last modification : $Id$

@@ -37,6 +37,14 @@
  • Location of downloaded packages
  • Extending OpenWrt with more Software
  • Ressources
  • +
    +
  • About OpenWrt Kernel Module Compilation
  • +
  • Enable the kernel options
  • +
  • Create a buildroot option
  • +
  • Define the binary files for the kernel module
  • +
  • Specify the ipkg control file
  • +
  • Compile the kernel module
  • +

    About OpenWrt Buildroot

    @@ -88,10 +96,17 @@

    Obtaining OpenWrt Buildroot

    OpenWrt Buildroot is available via CVS - Concurrent Version System. - For any kind of development you should get the latest version from cvs via:

    + For any kind of OpenWrt development you should get the latest version from cvs via:

      $ cvs -d:pserver:anonymous@openwrt.org:/openwrt co openwrt
     
    +

    If you only like to create your own custom firmware images and pakages we + strongely suggest to use the CVS branch of the stable version (whiterussian): +

    +
    + $ cvs -d:pserver:anonymous@openwrt.org:/openwrt co -rwhiterussian openwrt
    +
    +

    Using OpenWrt Buildroot

    @@ -141,25 +156,13 @@

    Customizing the target filesystem

    -

    There are two ways to customize the resulting target filesystem:

    - - +
  • You can customize the target filesystem skeleton, available under + package/base-files/default/. You can change + configuration files or other stuff here. However, the full file hierarchy + is not yet present, because it's created during the compilation process. + So you can't do everything on this target filesystem skeleton, but + changes to it remains even when you completely rebuild the cross-compilation + toolchain and the tools.

    Customizing the Busybox configuration

    @@ -475,7 +478,7 @@ foo-compile: bar-compile 18 19 $(eval $(call PKG_template,FOO,foo,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH))) 20 - 21 $(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared + 21 $(PKG_BUILD_DIR)/.configured: 22 (cd $(PKG_BUILD_DIR); \ 23 $(TARGET_CONFIGURE_OPTS) \ 24 CFLAGS="$(TARGET_CFLAGS)" \ @@ -584,6 +587,16 @@ foo-compile: bar-compile recursevily strip all binaries and libraries. Finally IPKG_BUILD is called to create the package.

    +

    If you want other targets to be executed at compile, + install or clean time (e.g. for installing + a library into the staging dir), just create the targets (usually + install-dev and uninstall-dev) and enable + them like this: +

    +compile-targets: install-dev
    +clean-targets: uninstall-dev
    +
    +

    Conclusion

    As you can see, adding a software to buildroot is simply a @@ -593,14 +606,103 @@ foo-compile: bar-compile

    If you package software that might be useful for other persons, don't forget to send a patch to OpenWrt developers! - Use the mail address: patches@openwrt.org + Use the mail address: openwrt-devel@openwrt.org

    Resources

    -

    To learn more about OpenWrt you can visit this website: +

    To learn more about OpenWrt, you can visit this website: http://openwrt.org/

    + +
    +
    +

    OpenWrt Kernel Module Creation Howto

    +
    + +

    About OpenWrt Kernel Module Compilation

    + +

    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.

    + +

    Enable the kernel options

    + +

    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 + +

    +$ cd build_mipsel/linux
    +$ make menuconfig
    +
    + +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: + +
     $ cp .config ../../../target/linux/linux-2.4/config/brcm 
    + +

    +

    Create a buildroot option

    + +

    Create a buildroot option by modifying/inserting into +target/linux/Config.in, e.g. + +

    +config BR2_PACKAGE_KMOD_USB_KEYBOARD
    +        tristate "Support for USB keyboards"
    +        default m
    +        depends BR2_PACKAGE_KMOD_USB_CONTROLLER
    +
    +

    + +

    Define the binary files for the kernel module

    + +

    Define the binary files for the kernel module by modifying/inserting into +target/linux/linux-2.4/Makefile, e.g. + +

    +$(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))
    +
    + +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.

    + +

    Specify the ipkg control file

    + +

    Create e.g. target/linux/control/kmod-usb-kbd.control with content similar to this: + +

    +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
    +
    +

    + +

    Compile the kernel module

    + +

    Enable the kernel module with +

    +$ make menuconfig
    +
    + in TOPDIR and selecting it.
    + + Compile with +
    +$ make dirclean && make
    +
    +

    +
    +