NSLU2-Linux
view · edit · print · history

This toolchain builds Optware packages for Broadcom routers with OpenWrt Kamikaze firmware using OpenWrt buildroot SDK 7.06. Since stock firmware lacks uClibc functionality, this feed is bond to stock uClibc and this means that many packages will fail to build.

But still there are many Optware packages available that could use uClibc provided by firmware. This somehow conserves memory as it uses native uClibc. Optware-uClibcBuild overcomes this limitation by providing its own full featured uClibc located in /opt/lib.

Caveats:

  • GCC 3.4.6 fails to build some packages.
  • LOCALE_SUPPORT is not available
  • some math functions (eg. C99) are missing but are replaced with uclibcnotimpl library.

USB disk

For enabling USB support the following modules should be installed with OpenWrt ipkg system:

  • kmod-usb2
  • kmod-fs-ext3
  • kmod-fs-ext2
  • kmod-usb-storage
  • e2fsprogs
  • fdisk
  • swap-utils
  • libpthread and libstdcpp for some Optware packages.

I recommend creating three partitions

  • /opt 1GB
  • swap 512MB
  • /home the rest for user files

Besides this packages it is recommended that installation of other OpenWrt packages is kept to minimum to prevent package duplication or possible libraries clash.

Installation

Although stock ipkg could handle packaging, it is recommended that first ipkg-opt package should be installed and then using only ipkg-opt for installing other Optware packages. Instalation of ipkg-opt should be with the following steps:

  1. cd /tmp; wget http://ipkg.nslu2-linux.org/feeds/optware/openwrt-brcm24/cross/unstable//ipkg-opt_0.99.163-9_mipsel.ipk
  2. install ipkg-opt
root@oleo:~# ipkg install ipkg-opt_0.99.163-9_mipsel.ipk
Installing ipkg-opt (0.99.163-9) to root...
Configuring ipkg-opt
Done.
  1. edit /opt/etc/ipkg.conf

You can also use webif to install. Add repo http://ipkg.nslu2-linux.org/feeds/optware/openwrt-brcm24/cross/unstable/ Run update. Install.

Configuration

OpenWrt now uses /etc/config for configuration and /etc/rc.d for startup. File /etc/init.d/custom-user-startup should look like:

#!/bin/sh /etc/rc.common
START=90
start () {
  if [ -e /dev/discs/disc0/part1 ]; then
   (
        swapon /dev/discs/disc0/part2
        e2fsck -y /dev/discs/disc0/part1
        mount -t ext3 -o noatime /dev/discs/disc0/part1 /opt
        e2fsck -y /dev/discs/disc0/part3
        mount -t ext2 -o noatime /dev/discs/disc0/part3 /home
        if [ -d /opt/etc/init.d ]; then
          for f in /opt/etc/init.d/S* ; do
              [ -x $f ] && $f start
          done
        fi
   ) > /tmp/optware-boot.log 2>&1
  fi
}

To let execute on startup, can be necessary to run this command:

/etc/init.d/custom-user-startup enable
view · edit · print · history · Last edited by cal.
Based on work by cal, oleo, Federico, and fcarolo.
Originally by oleo.
Page last modified on January 22, 2008, at 02:20 AM