Building IPFire 2 can be painful. The build system requires that large parts of the distribution are built from scratch each time we run a build. Usually that takes a couple of hours, but for one architecture, it has been taking days. What we call a Nightly Build has actually been taking more than a whole weekend; we needed to get it back down to something that could finish overnight.
If you have been following the IPFire development team for some time, you know that we are quite keen to make IPFire run on any kind of suitable hardware. We have been early adopters for ARM - back in the day when 32 bit ARM was very painful - and we ported IPFire to RISC-V a couple of years ago, too. However, we didn't have any suitable hardware to build it as it wasn't available at all at the time, so we had to fall back on an emulated build inside our infrastructure. Every command that is being called will have to be interpreted just-in-time from the riscv64 instruction set and converted into runnable x86 code. This is a process that is extremely slow; so slow that day-to-day development is virtually impossible for RISC-V.
Ending The Emulation Bottleneck
This didn't bother us too much at first - RISC-V is still a second-class citizen in IPFire and we are early to the party. But to move it forward, we needed to get rid of the emulation bottleneck.
Some months ago, we pre-ordered a Milk-V Jupiter 2 which has finally arrived.
Previous experiences with early-bird ARM hardware have not been great. Lack of support in the Linux kernel, stability issues and a small community have resulted in lots of products being shelved. With RISC-V and Jupiter 2 it seems to be the exact opposite. We chose from a couple of distributions, used a custom kernel from SpacemiT, and had the whole thing set up very quickly.
The Rough Edges
Some caveats had to be sorted though: There are some outstanding issues with the power management of the device and support for the NVMe SSD that we added is not too stable yet. The biggest issue however is that the device generates a lot of heat - even when it is idle. Idling at 74°C, the board climbed past 85°C within minutes of starting a build, which required us to improve the cooling a little. Hopefully the power management will improve soon so that we can operate the system at a more sustainable temperature soon.
The Result
Despite these smaller issues, our Milk-V Jupiter 2 has now been added to our build system for IPFire 2 and it has started to compile the nightly builds. The build time is down from a whopping 54-56 hours in the emulated setup to only seven hours.
This is a huge step forward for us to actually work on the RISC-V ecosystem and only the start. As more RISC-V hardware is becoming available and as it matures, we intend to put more resources behind it. We want more choice, a real alternative from x86, and we are hoping to see very small, yet very powerful IPFire systems on RISC-V over the next couple of years.
Where We Go From Here
We see vast potential in RISC-V as a target architecture and we believe that now is the time to invest in it. Let's iron out the gaps in hardware support, build out the IPFire to take advantage of the features of the hardware, and get it to a viable, production-ready alternative to ARM and x86.
When will it be ready? We don't know, yet. But the only way to find out is to start now. So join us and contribute. Help us test and send us feedback.
More...


