May 2, 2023

In this post, we give an update on the work that has gone on over the past few months towards meeting the objectives set out in the FreeBSD Foundation Technology Roadmap

While FreeBSD developers have accomplished a lot in the past few years to improve the desktop experience, much work remains. A significant development for this focus area is a new Userland Software development position with the Foundation. We began our search in late January for a developer who could “develop, fix, and enhance any part of the operating system outside of the kernel”. Since then, we received over 40 applications and to give an indication of the strength of those applicants, we spent about a month conducting multiple interviews per week. With such a fantastic field, it was very challenging to select just one person to fill the role, but we are excited to introduce Pierre Pronchery as the newest member of the FreeBSD Foundation team. If you attend conferences such as BSDCan, EuroBSDCon, or Fosdem you may have met Pierre or you may recognize his name from his work with our BSD sibling, the NetBSD project where Pierre is both a developer and a board director. Look out for new FreeBSD contributions from Pierre. 

As you may know from past newsletters, Bjoern Zeeb has been contracted by the Foundation to improve wireless networking on FreeBSD. After a pause in work, Bjoern has been ramping back up on this contract. In his latest update, he reports that work continues on the linuxkpi, net80211, and wpa_supplicant.

The Foundation has also extended En-Wei Wu’s wireless internship contract until Autumn. Recent developments from En-Wei include fixing issues with wtap, the wlan simulator, so that it can work with hostapd/wpa_supplicant in hostap/sta modes. Look for more updates from En-Wei at BSDCan 2023 where he will be presenting his work

Started in 2022, the OpenStack on FreeBSD project aims to port key upstream components so that FreeBSD can function as an OpenStack host. Starting in the first quarter of 2023, a significant milestone was achieved. FreeBSD Openstack instances can now be spawned with bhyve. The step-by-step instructions for constructing a proof-of-concept site can be found in the docs repository of the project’s Github page.

Chih-Hsin Chang, the contractor doing the work, attended AsiaBSDCon 2023 at the end of March and gave a short talk at the developer summit about his work. Based on the valuable feedback received, Chih-Hsin will next focus on resolving an Open vSwitch networking issue and creating a FreeBSD port for each OpenStack component. Other future work includes adding: 

  • self-service networks (currently only flat networks are supported) 
  • network connectivity inside instances 
  • support for images other than FreeBSD raw images (`FreeBSD-13.1-RELEASE-amd64.raw` tested) 
  • disk resize functionality 
  • console integration (as of now, manual cu invocation is required) 
  • a FreeBSD-specific implementation for the oslo.privsep library 

Christos Margiolis, a former FreeBSD GSoC contributor, began a contract with the FreeBSD Foundation in early 2023. The goal of the contract is to continue work on a new DTrace provider created by Christos and Mark Johnston called kinst. kinst, added to the based system in FreeBSD 14.0, allows for arbitrary instruction tracing in a kernel function. The 2022Q3 status report gives a brief introduction to kinst. The latest completed work involves implementing inline function tracing in libdtrace and adding the -d flag to dtrace(1) to dump D script post-dt_sugar. Christos is currently working on inline function tracing, a much-requested DTrace feature. 

Further goals include: 

  • Implementing a locals structure in D which stores the local variables of the traced function. For example with kinst::foo:<x>, we could print the local variable bar by doing print(locals->bar) inside a D script. 
  • Porting kinst to riscv and/or arm64. 

We continue to invest in improving FreeBSD support on RISC-V hardware through a contract with FreeBSD developer Mitchell Horne.  Some of the work that Mitchell has begun or completed under this contract in the past few months includes:

  • Improvements and fixes to dtrace modules and tools on riscv
  • A reworked of CPU identification code with multiple objectives:
    •    1. Better reporting
    •    2. Add parsing for new ISA features
    •    3. CPU errata identification
  • Support for several recently-accepted SBI extensions: PMU
  •  (hwpmc(4)), Debug Console, and System Suspend
  • A handful of minor bug fixes

Mitchell has also dedicated time to updating kernel documentation as well, focusing mainly on man pages in section 9.  Examples of some of that work includes:

  • Rewriting long-outdated pages such as mi_switch(9) and intro(9)
  • Writing new man pages such as kern_yield(9)
  • Updating and expandin existing key pages such as panic(9), KASSERT(9), critical(9), and kern_reboot(9)
  • Codifying restrictions of shutdown handlers (in kern_reboot(9)), and auditing the existing handlers to ensure they behave nicely in panic/debugger/normal shutdown contexts
  • Removing obsolete pages such as: vcount(9), rtalloc(9), and PCBGROUP(9)
  • Improving hier(7), including removing outdated subdirectories and adding an entry for /usr/home
  • Dozens of small tweaks and fixes to content details, formatting, etc
  • Updating outdated or inaccurate source code comments

Foundation team member Li-Wen Hsu continues to dedicate time to maintaining and improving our self-hosted continuous integration infrastructure. For example, during the last quarter, Li-Wen added KASAN testing to our Jenkins instance for amd64-stable13 and armv8(aarch64)-main and gcc12 builds on amd64-main now send failure reports to relevant committers.  Li-Wen also presented a CI status update at the AsiaBSDCon 2023 Developer Summit. 

Other recent Foundation-sponsored work includes: 

  • OpenSSH fixes and updates to versions 9.2p1 and 9.3p1 
  • a vendor import and update of libpcap to version 1.10.3 
  • improvements to tmpfs, msdosfs, and makefs 
  • the addition of a new kqueue1 syscall 
  • dtrace and bhyve fixes