Compiling Extreme Networks XOS kernel and busybox
Kernel, busybox and firmware image construction - under progress...
Extreme Networks is a well-known networking company that sells network equipment and services. The operating system of their Core and Edge switches is ExtremeWare or ExtremeXOS (exos). ExtremeXOS is built upon a modified Linux kernel, busybox and a number of other similar openly licensed software. These are all licensed either under the GNU GPL, LGPL, MIT or other open source software OSS license. In accordance to the licenses Extreme has offered to deliver a copy of the source code to all interested parties upon request. In the past Extreme did not reply to these requests nor take any other action, for example they ignored our numerous e-mails and request letter during 2006-2008 and failed to return phone calls. Following a GPL violation lawsuit that the SFLC filed against Extreme, Extreme has become active and started to comply to the conditions in the OSS license(s).
After the SFLC began discussing the licensing issues with Extreme Networks, Extreme created a software licensing page. It lists Extreme products and the OSS software that they use, what particular license these are distributed under, and gives instructions on how you can request a copy of the source code from Extreme. Currently 11/2008 to get the source you should send a request to software-at-extremenetworks.com.
In August 2008 we received, at no cost, the requested 'exos' source code that T. Lindfors had requested from Extreme in late 2006. The code for the OSS softwares was delivered on a - of course purple - USB memory stick. The GPL, LGPL and similar licensing of these software allows the software to be redistributed freely. Below is a copy of the August 2008 source code package that was on the memory stick. You may get a newer copy by requesting it from Extreme.
- ExtremeNetworks-linux-busybox.tgz (modified kernel 2.4.18 and busybox 1.00, build scripts, 35 MB)
The same in form of diffs created by diffing the ExtremeNetworks-linux-busybox.tgz package to the official vanilla kernel and busybox:
- or stock vanilla linux-2.4.18.tar.gz and a diff/patch (./linux/, 13 MB)
- or stock busybox-1.00.tar.gz and diff/patch (./tools/busybox/, 22 kB)
- and extras exos-extras.tar.gz (./code/, ./cougar/, ./fs/, ./tools/, 1.3 MB)
Note: SFLC thought it is possible the above code we received is not yet the full code, but possibly a diminished or slightly different version of what they ultimately settled upon with Extreme. Though it is equally possible it actually is the full source code.
The standard compile relies on the MontaVista 3.0 toolchain, unfortunately no longer available. The exos kernel is '2.4.18 mvl30'. The Summit X450 and some of the other switches use SiByte or SiByte-derived boards with a BCM1250 Dual-Core 64-bit MIPS processor and buses to two FPGAs that handle MSM switch fabric and some internal physical monitoring.
Code for unpacking and repacking a firmware image can be found in xos_tools_v10.tar.gz which is provided by Anonymous and not by Extreme Networks. The tools may be useful for integrating your own kernel into an official firmware image.
The .tar.gz also contains a tool for unpacking (dexos) and generating (rexos) an image and replacing the debug-mode password (xoshash_tamper) with your own password hash so you can 'enable debug-mode' and get 'sh' shell access on the switch. The individual steps to modify the password in a firmware image are below:
#!/bin/bash if [ ! -f "$1" ] || [ "$2" == "" ]; then echo "Usage: edit_xos.sh <filename> <password>" exit fi NEWHASH=`mkpasswd -H md5 "$2" "i/HC2W6."` echo "New hash is: $NEWHASH" FSDIR=./$1_root mkdir $FSDIR ./dexos $1 tar -C $FSDIR/ -xzf dexos-out.001 ./xoshash_tamper $FSDIR/bin/cliMaster $NEWHASH tar czf dexos-out.001.new $FSDIR/* ./rexos headerfile.bin dexos-out.000 dexos-out.001.new > newimage.xos echo "New image with modified debug mode password ($2) is in file 'newimage.xos'!"
In the GPL switch firmware source code provided by Extreme Networks, some parts are missing, for example Broadcom BDE, last seen in SDK-5.1.4.4.rar from Broadcom (google linux-user-bde.h etc). The BDE module creates /dev/linux-kernel-bde and /dev/linux-user-bde devices on the switch.
Interesting reading:
- Extreme Networks, Core switches
- Extreme Networks, Insite SDK for SOAP/XML based communication with the switch and your own programs
- BCM1250 : Dual-Core 64-bit MIPS Processor with GbE, PCI, HT
- BCM91250A : Evaluation Board for BCM1250
- SiByte downloads bcm1250/mips firmware source, sample code, toolchain
- Debian on the BCM91250A evaluation board
Compiling: ...