The goal of the DebianWRT project is to support running Debian on access points, such as those supported by the [http://www.openwrt.org OpenWRT] project. See the [http://wiki.openwrt.org/TableOfHardware OpenWRT hardware table] for a list.

These access points are an attractive target for Debian because they are increasingly powerful machines sold extremely cheaply as commodity hardware. Everyone needs an access point, so why not run Debian on it and add mipsel to your collection of architectures? OpenWRT is a fine replacement firmware for these devices, but it's not Debian, and for some of us that's reason enough to put Debian on these machines.

What works now

Currently the most common methods used to run Debian on these systems is to install OpenWRT or a similar firmware, add disk space either by USB storage or NFS, create a debian chroot by either running cdebootstrap from inside OpenWRT or debootstrap --foreign on a PC, and running Debian from this chroot. For example, [http://wiki.wl500g.info/index.php/Debian%20Distribution instructions for the WLHDD].

A more sophisticated approach is to use [http://wl500g.dyndns.org/ this firmware] which can be configured to boot Asus routers from USB, so you don't just chroot in, you actually boot Debian.

Full Debian support

We'd like to be able to just boot up the DebianInstaller and install Debian more or less as normal, with some additional step to cram the Debian system down to a usable system that can run from flash with the disk disconnected, perhaps based on a technology like [http://packages.debian.org/flashybrid flashybrid] or the [http://www.applieddata.net/forums/topic.asp?TOPIC_ID=1425 adsrootbuilder]. In this best of all worlds scenario, you have a full Debian system when you want it, and an embedded access point when you need it, and upgrading/maintaining the access point is not a separate process from upgrading the Debian system

Kernel

The first tricky part is that for nearly all the access points in the [http://wiki.openwrt.org/TableOfHardware ?TableOfHardware], the wireless driver is a binary kernel module, which needs a 2.4 kernel. OpenWRT's kernel includes a shim module to allow this binary module, built for an old 2.4.2x kernel, to run with 2.4.31. Plus lots of other patches.

Getting this kernel into Debian would be a lot of work and pretty hard. At least for the first pass, using the OpenWRT kernel seems like the easiest approach.

Installation

There are basically two approaches that could be used for installation using the DebianInstaller.

takeover

Similar to [debtakeover http://www.hadrons.org/~guillem/debian/debtakeover/], replace the running OpenWRT or other firmware with the files we need to boot Debian from disk. Preserve the kernel and kernel modules and use those in the installed Debian system.

It might work like this: Install OpenWRT, then add an ipkg source on a Debian mirror and, "ipkg install debian-installer", which depends on all available kernel module packages for OpenWRT and installs a DebianInstaller chroot, which is then chrooted into and the Debian installation proceeds as usual. At the end the OpenWRT system is modified to boot the installed Debian system.

Advantages of this method:

* The access point keeps on functioning as an access point throughout the whole installation process! You can keep surfing the net while your AP installs Debian. * You can drive the installer from the very beginning as you're already logged into OpenWRT. * Debian would only need to distribute the debian-installer ipkg, which would contain only free software and could be provided as just another DebianInstaller image.

Disadvanatages:

* Changes to OpenWRT can break the installer. * You have to flash OpenWRT or another firmware first, so there's a two step installation process with a new system (OpenWRT) to learn in the middle.

clean install

Put together the OpenWRT kernel and modules and DebianInstaller and create a firmware image which boots the installer. It then has to blindly get the network hardware configured and bring up a dhcp server. Then you connect to the access point and use network-console to complete the installation. At the end an initrd type image is generated and written to flash to boot Debian.

Advantages:

* Quite a lot cleaner. If in the future the kernel issues get sorted out it could be a quite normal Debian target.

Disadvantages:

* Relatively difficult to get the a working firmware image, and this dificulty will need to be repeated for each new access point. * Have to support users flashing the firmware too, which is pretty tricky. * The firmware image would contain non-free and/or non-Debian kernel stuff and so could not be part of Debian. * DebianInstaller has to run blind until network-console comes up, which has plenty of potential for failed installs.