Commit f0189770 authored by Alessandro Rubini's avatar Alessandro Rubini

README: information on how to use this package

parent abf79225
This directory hosts the minic and nic drivers for the WR switch. The
minic, together with the underlying vhdl implementation, is work by
Tomasz Wlostowski. The rest and any bug is by Alessandro Rubini,
but Tom helped integrating with the new vhdl and testing stuff.
Structure of this package
This file.
GNU GPL Version 2. This package is copyrighted by CERN and
released as free software.
Used to compile the various drivers. You should set LINUX
in your environment or in the command line of "make".
The directories host original work by Tomasz, copied here from svn.
The directory hosts the kernel patches, split by kernel versions.
I have a git tree for that, and the patches here have been
spit out by "git format-patch". See a later section about git.
This is the new driver, for the new logic design.
Compiling the kernel
To compile the kernel, you need to retrieve the pristine sources for
2.6.35 and apply the patches for the switch. You can do that using git
or with old-style tar+patch. See the subsection about how to get
the sources.
Once you have the wrswitch kernel, you should cd to its main directory
and compile in this way. Note that the CROSS_COMPILE prefix may be the
one you built using buildroot or more or less any other cross-gcc. The
CROSS_COMPILE variable must end with the hyphen tha appears before "gcc"
in the name of the actual compiler.
export ARCH=arm
export CROSS_COMPILE=/path/to/cross/arm-linux-
make wrswitchv2_defconfig
make uImage
Finally, copy the uImage to your tftp server directory, as the
boot-loader in the switch is preconfigured to get a file called
"uImage" from your tftp server.
cp arch/arm/boot/uImage /tftpboot
Using git
If you use git, you are expected to already have some copy of Linus'
official tree. Let's say it's in /usr/src/linux-vanilla.git . In that
case, you should first check out 2.6.35 and then fetch the wrswitch
branch. The git tree where I have the stuff is
What follows is one possible way, adding branches to the vanilla
tree. (I use different names for the various items to help the
non-expert git user in differentiatine them, a cleaner approach would
be using "wrswtichv2" for all items in the different ocntexts).
cd /usr/src/linux-vanilla.git
git remote add gnudd git://
git fetch gnudd
git checkout -b wr-kernel gnudd/wrswitch2-dev
Af this point, you checkout is a new branch that corresponds to the
"wrswitch2-dev" branch on my gnudd server.
Another option is creating a different checkout that uses data from
the Linus tree you already have on your system. (Strictly speaking,
you can avoid creating the "linus" remote to fetch it, but I feel this
is clearer).
export GIT_ALTERNATE_OBJECT_DIRECTORIES=/usr/src/linux-vanilla.git/objects
mkdir /usr/src/linux-wr
cd /usr/src/linux-wr
git init
git remote add linus /usr/src/linux-vanilla.git/objects
git remote add gnudd git://
git fetch linus
git fetch gnudd
git checkout -b wr-kernel gnudd/wrswitch2-dev
Please note that if you don't have a local "Linus" tree first, your
fetch from gnudd will take several hours. You should first fetch from
a mainstream server the official kernel to make this operation fast.
To make the "GIT_ALTERNATE_OBJECT_DIRECTORIES" setting persistent, you
can save it to local repository:
echo /usr/src/linux-vanilla/objects > .git/objects/info/alternates
Using tar and patch
If you are not a git user, you might apply the patches, with this
procedure, using your national mirror instead of
Let's assume your starting current directory is the one where this
README lives.
cd /usr/src/linux-wr
tar xjf linux-2.6.35.tar.bz2
mv linux-2.6.35/* linux-2.6.35/.??* .
rmdir linux-2.6.35
for n in in $DOCDIR/patches/2.6.35/*; do cat $n | patch -p1; done
Compiling the modules
To compile the drivers please run "make", after setting up
the proper environment variables:
should point to the kernel directory. For example,
export LINUX=/usr/src/linux-wr
should be the same prefix you used to cross-compile the
kernel. If CROSS_COMPILE_ARM is set, it is used as a
default (the name CROSS_COMPILE_ARM is used in wrdev2 scripts)
should be "arm", but the Makefile set it if not defined.
With the variables in place, after "make" you'll have a few kernel
modules, with extension ".ko", that should be copied to the target
system and loaded. Let's assume the target is T=
scp $(find . -name '*.ko') root@$T:/wr/lib/modules
The previous command assumes you either know the root password of your
private key is authorized in the target system. The latter happens if
you build the filesystem using wrdev2, which copies your public key to
the target.
Integration with wrdev2
Tomasz released some scripts, as a standalong "wrdev2.tar.gz" package
and available in the White Rabbit svn under "build_scripts". The svn
version is better as the ramdisk is made using initramfs rather then
This code is replacing part of that material with different
procedures, and integration is currently non-existent.
You are expected to build the switch system using the other script-set
and then replace the kernel and modules with what is available here.
Over time I plan to integrate better, and possibly replace wrdev2 by
bringing in here all the good material that is found there.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment