Hi I built a bird for edgerouter using these debian images: https://people.debian.org/~aurel32/qemu/ sometimes you can specify cpu type but for edgerouter is quite slow... So I used emdebian.org but it looks down. I think you can find docker images for each platform. You can try use: https://wiki.debian.org/CrossToolchains
Regards, Martin On Fri, 3 Apr 2020 at 17:58, Ross Tajvar <r...@tajvar.io> wrote: > Thank you Clemens, this is very useful information. Unfortunately I don't > have an Edgerouter with a USB port that's not currently in production. > Perhaps I will buy a spare so I can try the process you describe. > > On Thu, Apr 2, 2020 at 7:47 AM Clemens Schrimpe < > clemens.schri...@gmail.com> wrote: > >> 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. >> >> >>