BRN:Software:Build and Distribution: Difference between revisions

From
Jump to navigation Jump to search
 
(27 intermediate revisions by 2 users not shown)
Line 2: Line 2:
For desired new platforms the following critical items are required:
For desired new platforms the following critical items are required:


* UNIX-like '''development machine''' (Linux recommended) with common tools installed (make, gcc, subversion, patch, wget, ...)
* GCC (cross) '''compiler''' to create binary code for the target platform
* GCC (cross) '''compiler''' to create binary code for the target platform
* '''Linux kernel''' (version 2.6) with support for target platform
* '''Linux kernel''' (version 2.6) with support for target platform
Line 13: Line 14:


#<div style='margin-bottom:2em;'> The basic software you will need is a '''[[BRN:Software:Build and Distribution:Compiler|Compiler]]''' for the new target platform. If you do not have a running UNIX system on the target platform you will need a cross-compiler, which runs on your development machine (e.g. a x86 Linux system) and creates binary code for the target platform. Read the linked page to get details for the WGT634U.</div>
#<div style='margin-bottom:2em;'> The basic software you will need is a '''[[BRN:Software:Build and Distribution:Compiler|Compiler]]''' for the new target platform. If you do not have a running UNIX system on the target platform you will need a cross-compiler, which runs on your development machine (e.g. a x86 Linux system) and creates binary code for the target platform. Read the linked page to get details for the WGT634U.</div>
#<div style='margin-bottom:2em;'> (optional) Build a '''[[BRN:Software:Build and Distribution:Linux|Standarized Development Environment]]'''.</div>
#<div style='margin-bottom:2em;'> (optional) Build a '''[[BRN:Software:Build and Distribution:SDE|Standarized Development Environment]]'''.</div>
#<div style='margin-bottom:2em;'> The '''[[BRN:Software:Build and Distribution:Linux|Linux operating system]]''' controls the execution of all BRN software and provides different device drivers for the hardware components of the target platform. You will need a (cross) compiler to build a Linux kernel. Notice: For some platform you will need extra kernel-patches to get full target platform support!</div>
#<div style='margin-bottom:2em;'> The '''[[BRN:Software:Build and Distribution:Linux|Linux operating system]]''' controls the execution of all BRN software and provides different device drivers for the hardware components of the target platform. You will need a (cross) compiler to build a Linux kernel. Notice: For some platform you will need extra kernel-patches to get full target platform support!</div>
#<div style='margin-bottom:2em;'> The most functionality of BRN is implemented with the help of the '''[[BRN:Software:Build and Distribution:click|click modular router framework]]'''. Read how to build the click software for userspace and/or as linuxmodule. /////// brn-patches???</div>
#<div style='margin-bottom:2em;'> (optional) Very useful would be a '''[[BRN:Software:Build and Distribution:Serial Console|Serial Console]]''' to interact directly with your target platform node.</div>
#<div style='margin-bottom:2em;'> The most of BRN's functionality is implemented with the help of the '''[[BRN:Software:Build and Distribution:click|click modular router framework]]'''. Read how to build the click software for userspace and/or as linuxmodule. /////// brn-patches???</div>
#<div style='margin-bottom:2em;'> Wireless network device driver / Madwifi</div>
#<div style='margin-bottom:2em;'> '''[[BRN:Software:Build and Distribution:Madwifi|Madwifi]]''' is the project name for the Atheros open source network device driver. The build depends on the linux kernel source tree.</div>
#<div style='margin-bottom:2em;'> SDP</div>
#<div style='margin-bottom:2em;'> OpenWGT-scripts</div>
#<div style='margin-bottom:2em;'> For updates via mesh network you will need '''[[BRN:Software:Build and Distribution:BRN-SDP|BRN-SDP]]'''.</div>
#<div style='margin-bottom:2em;'> Build an image</div>
#<div style='margin-bottom:2em;'> Like every UNIX system the BRN meshnodes need a '''[[BRN:Software:Build and Distribution:RootFS|Root filesystem]]''' at boot time.</div>
#<div style='margin-bottom:2em;'> (optional) Before writing an image to flash, you can try to boot your target platform from '''[[BRN:Software:Build and Distribution:Network boot|network via TFTP and NFS]]'''.
#<div style='margin-bottom:2em;'> Installing/Flashing image</div>
#<div style='margin-bottom:2em;'> Every target platfrom uses it's own way to install/update the base image. '''[[BRN:Software:Build and Distribution:Build and install an image|Build and install an image]]''' could be interesting for deployment of BRN images.</div>

<div style="padding-left:1em">
----
<span style="padding-left:0.5em">'''[[BRN:Software:Build_and_Distribution:Compiler|Next]]'''</span>
</div>

----
----

== New approach - OpenWrt ==
# Build OpenWrt toolchain and image
# Build click with OpenWrt toolchain
# Install ipkg packages for /openwrtroot:<pre><nowiki>
nfs-student2:~ # /wgtroot/bin/ipkg -o /openwrtroot/ install ~kurth/macchanger_1.5.0-1_mipsel.ipk</nowiki></pre>
# [[BRN:OpenWrt:BRN-ipkg|BerlinRoofNet ipkg]]
# [[BRN:OpenWrt:Files|Files]]
# TODO
## Image: fix /usr/lib/cgi-bin/webupgrade.cgi (1.4.1.10 only?, diff to original and openwgt release?)
# [[BRN:Software:HTTP-Redirect|HTTP-Redirect for access points]]
# [[BRN:Software:OpenWrt Installation|OpenWrt Installation]]
# [[BRN:Software:OpenWrt USB-Boot|OpenWrt USB-Boot]]
# [[BRN:Software:OpenWrt NFS-Boot@x86|OpenWrt NFS-Boot@x86]]

= Troubleshooting / FAQ =
* [[BRN:Software:Build and Distribution:OpenWGT-FAQ|OpenWGT and RootFS FAQ]]
* [[BRN:Software:Build and Distribution:Kernel-FAQ|Linux Kernel FAQ]]
* [[BRN:Software:Build and Distribution:Click-FAQ|Click FAQ]]

= Debugging =
* Debugging [[BRN:Software:Build_and_Distribution:Userland Debugging|userland applications]] on the mipsel using a remote gdb
* Kernel debugging with GDB ???

= Weblinks =
Other web sites providing information about the Netgear WGT634U and other embedded linux routers:
* http://pdos.csail.mit.edu/roofnet/doku.php?id=wgt634u
* http://forum.openwrt.org/viewtopic.php?pid=31794#p31794
* http://wiki.ip-phone-forum.de/software:ds-mod:development:flash
* ? http://wiki.openwrt.org/OpenWrtDocs (Some detailed subpages)
* ? http://openwrt.pbwiki.com/
* ? https://dev.openwrt.org/browser/trunk/openwrt/docs/buildroot-documentation.html?format=raw#binary

Latest revision as of 07:08, 13 March 2007

Requirements

For desired new platforms the following critical items are required:

  • UNIX-like development machine (Linux recommended) with common tools installed (make, gcc, subversion, patch, wget, ...)
  • GCC (cross) compiler to create binary code for the target platform
  • Linux kernel (version 2.6) with support for target platform
  • click (modular router) patch (hopefully working on target platform? x86 and mips tested)
  • Wireless network device supporting to send raw frames (e.g. Atheros cards)


Build software

The build process to get a ready-to-run BRN software package is described in general and examples are made for the Netgear's WGT634U mips platform.


  1. The basic software you will need is a Compiler for the new target platform. If you do not have a running UNIX system on the target platform you will need a cross-compiler, which runs on your development machine (e.g. a x86 Linux system) and creates binary code for the target platform. Read the linked page to get details for the WGT634U.
  2. The Linux operating system controls the execution of all BRN software and provides different device drivers for the hardware components of the target platform. You will need a (cross) compiler to build a Linux kernel. Notice: For some platform you will need extra kernel-patches to get full target platform support!
  3. (optional) Very useful would be a Serial Console to interact directly with your target platform node.
  4. The most of BRN's functionality is implemented with the help of the click modular router framework. Read how to build the click software for userspace and/or as linuxmodule. /////// brn-patches???
  5. Madwifi is the project name for the Atheros open source network device driver. The build depends on the linux kernel source tree.
  6. For updates via mesh network you will need BRN-SDP.
  7. Like every UNIX system the BRN meshnodes need a Root filesystem at boot time.
  8. (optional) Before writing an image to flash, you can try to boot your target platform from network via TFTP and NFS.
  9. Every target platfrom uses it's own way to install/update the base image. Build and install an image could be interesting for deployment of BRN images.

Next



New approach - OpenWrt

  1. Build OpenWrt toolchain and image
  2. Build click with OpenWrt toolchain
  3. Install ipkg packages for /openwrtroot:

nfs-student2:~ # /wgtroot/bin/ipkg -o /openwrtroot/ install ~kurth/macchanger_1.5.0-1_mipsel.ipk

  1. BerlinRoofNet ipkg
  2. Files
  3. TODO
    1. Image: fix /usr/lib/cgi-bin/webupgrade.cgi (1.4.1.10 only?, diff to original and openwgt release?)
  4. HTTP-Redirect for access points
  5. OpenWrt Installation
  6. OpenWrt USB-Boot
  7. OpenWrt NFS-Boot@x86

Troubleshooting / FAQ

Debugging

Weblinks

Other web sites providing information about the Netgear WGT634U and other embedded linux routers: