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. > > >