Build for Debian MIPS

Clemens Schrimpe clemens.schrimpe at gmail.com
Thu Apr 2 13:47:32 CEST 2020


Hallo all -

I built BIRD (1.x and 2.x) for the EdgeRouter platforms(!) myself for many years now and I still do. At first I used a "proot" environment with QEMU on a Ubuntu environment, but I have moved on to compiling it directly on the machines in question a while ago. EdgeRouters (especially the "XG" or "Infinity" types) have more than enough CPU and RAM to do it there, it's just the "local storage" and the way their firmware is updated, which prevents you from "just doing it".

The solution is simple, though: Current EdgeOS versions support the USB-Port on those routers and you can just plug in a cheap thumb drive or even a real SSD/HD with a USB-Interface. Format it with ext3/ext4, mount it to /mnt for example, clone the current OS onto it, like so:

	rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/root.dev/*"} / /mnt/

create shadow-mounts for the special kernel filesystems:

	mount --rbind /dev  /mnt/dev
	mount --rbind /proc /mnt/proc
	mount --rbind /sys  /mnt/sys

and now you can chroot into your development environment:

	chroot /mnt /bin/bash --login

and (bonus track) even start an sshd within this environment for easier access later:

	mkdir /var/run/sshd /run/sshd	# may fail on either

	/usr/sbin/sshd -p 222 -o Protocol=2

which runs on port 222 now (vs. the "normal" sshd, running on port 22).

Depending on the EdgeOS Version (1.x or 2.x) you install additional packages need for development. Here are some suggestions (non-comprehensive):

Packages for 2.x:

wget
git
build-essential
autoconf
locales-all
cscope
ncurses-dev
libssl-dev
libev-dev
liblzo2-dev
libpam-dev
minizip
flex
bison
libperl-dev
libreadline-dev
libpcre3-dev
libpcap-dev
libldap-dev
libtalloc-dev
libcap2-dev
libmemcached-dev
libjson-c-dev
libgdbm-dev
libsqlite3-dev
libssh-dev
libssh2-1-dev

binutils manuell nachinstallieren! (dpkg -i ...)


------

Packages for 1.x:


autoconf
locales-all
cscope
ncurses-dev
libssl-dev
libev-dev
liblzo2-dev
libpam-dev
flex
bison
libperl-dev
libreadline-dev
libpcre3-dev
libpcap-dev
libldap-dev
libtalloc-dev
libcap2-dev
libmemcached-dev
libgdbm-dev
libsqlite3-dev
libssh-dev
libssh2-1-dev

Why am I doing this on this "shadow root" again? Because every EdgeOS update wipes everything, except for /config (which is why I place my compiled "modules" (binaries), like BIRD, into /config/opt/bird/... for example → ./configure -prefix=/config/opt/bird .

This has been working very well for me in a while and I am compiling all sorts of tools all the time within this "Build jail". 

Tools needed to start this off (mkfs, rsync, etc.) are either already on the platform or can be installed through the officially supported "apt-get" mechanism.

The above was quickly copy&pasted together from what I have on my terminal windows right now and and is surely lacking a step or two along the way, sorry. Please feel free to ask for more detailed instructions if you get stuck somewhere.

Greeting,

	Clemens

PS: If you want to cover the whole EdgeRouter platform you'll need to do this twice - once on an ER-Pro/ER-Infinity and once on an ER-10X (the only X-router with an open USB port), as the former is MIPS-BE and the latter is MIPS-LE ... yes, all of these can somehow be "emulated", but I just found it much easier to create/operate/maintain those build environments on their respective native platforms - besides: They are incredibly cheap - even the Infinity router (8 x SFP+, 116 CPUs - 16G RAM - bored beyond belief) is comparatively cheap.

> We've not been able to build ourselves on MIPS yet, we went into some strange problems last time (don't remember exactly). Were you so kind please and could you please help us setting up Debian for MIPS in QEMU if I fail to manage it once more?
> The main issue was, what hardware to choose and how to boot it. But I'll try once more before asking any detailed question. Then we can replicate your issue and probably even build and test for MIPS.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20200402/fec6568b/attachment.htm>


More information about the Bird-users mailing list