FreeBSD

After playing with a BSD for an afternoon, I’ve made a few realizations.

  1. Everything is tightly integrated, which is rather nice. All the tools are meant to be used together whereas in Linux tools try not to make assumptions about your system. All tools are built together. It’s developed and released as a whole working system, not as a bunch of tools collected together.
  2. The bootloader is really fat and sets up lots of kernel stuff (modules, namely) instead of just chucking the kernel like a football into memory somewhere and saying sorry junior, not your mama like Linux.
  3. System is very cleanroom, but lacks some easy performance optimizations that Linux has out of the box. Simplicity is favored over some practical benefits unless it’s networking. BSD is really, really good at high-performance networking with an emphasis on enterprise applications.

To be frank, I feel sorry for BSD. It used to be the king of routers. Now, Linux does that too. Even for the super-popular Raspberry Pi 4 platform there are outstanding usability bugs that haven’t been fixed for three years.

Digging deeper into the security side of things, I think FreeBSD’s security reputation is mainly because of the focus on simple design rather than much investment in new security features. PIC binaries seems to be a relatively recent accomplishment there, whereas Linux was doing this to help defend against ROP attacks for ages. FreeBSD got ASLR for 64-bit executables this year. This is unacceptable from an exploitation resilience perspective.

FreeBSD is growing on me but man oh man, as refreshing as it is, it feels rather rusty and outdated at the same time. I can’t imagine using it on the desktop in a serious capacity, and its hold on embedded may be threatened if developers aren’t getting experience with it early in their careers. Linux with the recent integration of RT_PREEMPT even makes a pretty good if overweight RTOS.


Posted

in

,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *