Fix OpenWRT

From MiOS
Revision as of 03:21, 20 January 2010 by Denix (Talk | contribs)

Jump to: navigation, search

Contents

Introduction

Vera uses a slightly outdated Kamikaze version of OpenWRT embedded Linux distribution for Broadcom platform, based on 2.4 Linux kernel.

Flash Partitions

The default hardware Vera runs on is Asus WL-500g router with 16MB or RAM and 8MB of flash. Flash is split into several partitions:

  • 128KB bootloader
  • ~500KB Linux kernel
  • ~5.8MB root squashfs filesystem (r/o)
  • 64KB config storage
  • ~1.8MB data jffs filesystem (r/w)

There is only 1.8MB of compressed space available for installing additional packages into the system. This data filesystem is mounted as /jffs, but is also an overlay of the rootfs in / (uses mini_fo fs, a la union fs, providing "copy on write" access)

Package Manager

The package manager in this version of OpenWRT is ipkg (Itsy Packager). It uses configuration file /etc/ipkg.conf

Issues

Since the release, used in Vera, there were several changes in OpenWRT, which need to be taken into account in order to get extra packages installed successfully:

  • Packages now specify in their metadata how much space they take on the filesystem, thus ipkg first checks if enough space is available. But it doesn't take mini_fo overlay into account and complains that there is 0 bytes available in the root filesystem, since it's read-only.
  • In latest trunk snapshots (besides switching from ipkg to opkg) all the packages now specify "brcm-2.4" architecture instead of the old "mipsel", rendering them incompatible with the release of OpenWRT used in Vera. Although, there are ways to make Vera recognize "brcm-2.4" architecture as compatible, there can be issues with some packages not working properly.

Fixes

So, to solve the first item, we need to instruct ipkg to install packages into /jffs instead of / and add an extra "dest" line to /etc/ipkg.conf (should be the first "dest" to work as a default):

dest jffs /jffs

To address the second issue above, we should use the released Kamikaze versions of the packages, instead of the trunk. The URL of the system repository is http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/packages and the URL of the X-Wrt repository is http://downloads.x-wrt.org/xwrt/kamikaze/8.09.2/brcm-2.4/packages

The first line with the default system OpenWRT repository URL has to be changed like this:

src snapshots http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/packages

The last line with the X-Wrt repository URL should look like this:

src X-Wrt http://downloads.x-wrt.org/xwrt/kamikaze/8.09.2/brcm-2.4/packages

Summary

Here is the final /etc/ipkg.conf file:

src snapshots http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/packages
dest jffs /jffs
dest root /
dest ram /tmp
src X-Wrt http://downloads.x-wrt.org/xwrt/kamikaze/8.09.2/brcm-2.4/packages

Testing

First, we need to download the metadata with the list of installable packages:

# ipkg update
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/packages/Packages
Updated list of available packages in /usr/lib/ipkg/lists/snapshots
Downloading http://downloads.x-wrt.org/xwrt/kamikaze/8.09.2/brcm-2.4/packages/Packages
Updated list of available packages in /usr/lib/ipkg/lists/X-Wrt
Done.

Then we can get the list of available packages with "ipkg list" and install extra packages with "ipkg install <pkgname>":

# ipkg install etherwake
Installing etherwake (1.09-1) to jffs...
Downloading http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/packages/etherwake_1.09-1_mipsel.ipk
Configuring etherwake
Done.

# etherwake
Specify the Ethernet address as 00:11:22:33:44:55.
Personal tools