Enabling FreeBSD on AArch64

FreeBSD is an advanced UNIX-based operating system used to power modern servers, desktops and embedded platforms; it has a long history in the Networking and Storage worlds used by companies like Juniper Networks and NetApp as well as many many others. Linux has been more popular in recent years and has seen a broad adoption in not only servers and the datacentre but also with mobile and embedded platforms. However, BSD is built on solid foundations and offers a good alternative and have an active developer community.

The FreeBSD community has had support for 32bit ARM for some time (specifically ARMv6 & ARMv7) and supported various platforms as documented on their wiki, thanks to a valiant few within the community. ARM and Cavium started working with the The FreeBSD Foundation in October 2014 to enable a port of the FreeBSD operating system to ARMv8, specifically AArch64, to help bootstrap this effort

Andrew Turner, has been a long time FreeBSD developer and committer. He started working on porting to AArch64 in his spare time in the summer of 2014 and was an ideal choice for the FreeBSD Foundation to work full time on the ARM port. In addition to Andrew, the Foundation worked with SemiHalf who have a wealth of experience both with ARM and our partners, both in Linux and FreeBSD. AArch64 upstream contributions to the main FreeBSD repository (HEAD) started in April 2014. The porting effort has been carried out on a variety of platforms - ARM Foundation Model, ARM Juno development board, QEMU emulator, Cavium Thunder Simulator and Cavium ThunderX Reference Board. As of April 2015, the University of Cambridge to port Dtrace and Hardware Perfomance Counters, enablling these on AArch64.

bsdcan2015.pngThe FreeBSD community held their annual North American conference, BSDCan, in Ottawa in June 2015. This is the largest gathering of not only FreeBSD developers and users, but also members of the wider BSD community including NetBSD and OpenBSD. With over 280 attendees, it was the perfect place for all involved to show the toils of their labour. There was a working group round-table discussion around the porting effort and where SemiHalf demonstrated FreeBSD running on a 48core Cavium ThunderX platform, Andrew Turner presented the status and efforts of porting FreeBSD to AArch64 and Citrix's Julien Grail presented on Running FreeBSD under the Xen Hypervisor.

There were several platforms available to see at the conference, Cavium brought out an example of their single socket 48core ThunderX platform  and a dual socket 96core platform, and Andrew Turner showed off his diminutive by comparison HiKey board from 96Boards. With platforms like those from 96Boards becoming more broadly accessible, the developer community will be able to more easily use and test FreeBSD and contribute to the upstream developments.

AllBSDhw.png

The FreeBSD community is looking at including AArch64 support as a Tier1 architecture in the FreeBSD 11 release. More information on FreeBSD on ARMv8 can be found on the FreeBSD wiki, alternatively if you have questions or you wish to participate in the efforts please reach out to the developers either on IRC #freebsd-arm64 on Efnet or on the mailinglist, where developers will be more than happy to respond.