Foreword

Since the beginning of time, humanity has strived to record its deeds onto
paper. Then came computers and we needed to record how to work them, build
them, and so on. This has been a laborious process since the programs we write
for them always need to be updated. In a perfect world, we could count on
computers to document themselves, but it's sadly not that way.

Netbsd, FreeBSD, openbsd and dragonflybsd are all systems that are
comparable in some manner. They can all use similar programs despite having a
different codebase. Nevertheless, many problems remain in some areas of the
documentation. In some cases there's no documentation altogether for certain use
cases, as they are left to rot on some website, without ever being updated.

The purpose of this book is to identify and potentially fix those problems. This
book will be continually updated to document any changes in the handbooks,
manuals, wikis and websites for those systems.

Chapter 1

Whenever people cite a BSD system, they usually comment on how much it's
different from Linux. The truth is that while they're indeed different, they're more
same than not. How about when it comes to differences between the
distributions themselves? In that regard, they're radically different. Each system
prides itself on a specific area. Let's examine them.

FreeBSD: What is FreeBSD’s specialty? Simply put, acting as a internet server
for various services. It excels at that. The fact is also that it has more packages
than any other BSD system is a particular point too. This means that it's software
support isn't something to laugh at. It also has several key features that the other
distributions are only now gaining, such as virtual machines. I wouldn't hesitate
to say that FreeBSD is the king of the pack.

NetBSD: This distribution is known for running on everything from archaic
hardware to toasters to satellite equipment. The legacy it has is astounding. The
1main feature of NetBSD is that it can run on anything almost, the small size of
the system and Pkgsrc. Pkgsrc is a package system that allows you to install
thousands of software packages onto your computer. What makes Pkgsrc
different is that supports so many different systems, so it's cross-platform.
NetBSD is your system if say, you're running a SPARC.

OpenBSD: The internet is known for being a hostile place. Spamming,
phishing, brute-forcing and so on. OpenBSD has all the tools to stop and protect
yourself against that. What sets OpenBSD apart from the rest is that it focuses on
security. Besides the security aspect, it's also set its sights on being easy to
operate through its excellent manuals. You should use OpenBSD if you're into
security and simplicity.

DragonflyBSD: Diverging from FreeBSD, Dragonfly strives to be a general
purpose operating system. Its main features are the hammer2 file system, virtual
kernels, light-weight kernel threads and more. It's very cutting edge. If you have
a need for a fast and resilient system, Dragonfly is for you.
Now you're probably wondering if there's anything that makes them alike.
There are several, which I'll go into here.

Firewalls: The PF firewall is shared between a number of BSD systems.
Specifically FreeBSD, OpenBSD and NetBSD. The documentation is neglected in
the case of FreeBSD and NetBSD, but OpenBSD always has good documentation
for their subsystems.

Virtualization: Each of the BSDs have their own virtualization methods, but
they generally work the same. Usually that involves creating a virtual hard drive,
using an iso image to install onto the drive and logging in via a serial connection
or ssh. NetBSD, FreeBSD and OpenBSD all have full system virtualization,
whereas dragonfly only can do kernel virtualization.

File systems: The ZFS file system is quickly becoming the cross platform file
system of choice. NetBSD and FreeBSD both support it well. OpenBSD still relies
on the FFS file system and Dragonfly uses hammerfs, which is an advanced
system similar to ZFS. Additionally, most of the BSDs have support for the Fuse
virtual file system, which allows you to interact with things like ssh
transparently over your file system.

As you can see, the BSDs share quite a bit of their subsystems. However, there
are still significant differences in other areas. Let's go over them.

Security: The systems each BSD employs for security is often radically
different, such as FreeBSD using ACLs, PAM, HardenedBSD integration and more
and OpenBSD using only the traditional model of Unix security. NetBSD also
uses ACLs, MAC and hardening techniques such as PAX.(I don't know Dragonfl-
yBSD's security(0))

Root Shells: For OpenBSD, they use the ksh shell. FreeBSD uses tcsh,
NetBSD uses sh and DragonflyBSD uses(Have to find out(1)).

Main Documentation: For this, FreeBSD users are mostly told to refer to
the Handbook, OpenBSD users the FAQ and Man Pages, NetBSD users the Tutorials/
Handbook and DragonflyBSD users the Wiki.

Custom Kernels: As far compiling your kernel goes, in FreeBSD it's usually not
needed but is easily doable. OpenBSD, it's not recommended in the guide. NetBSD
usually has no qualms with it and DragonflyBSD(I don't know what they recommend(2)).

Third Party Software: Regarding software that doesn't come with the base,
FreeBSD uses the pkg program, which is very similar to apt nowadays. OpenBSD
uses pkg_add, which is very minimalistic but gets the job done faily quickly.
NetBSD uses pkgsrc, which can be used with building source packages or just
fetching binary packages, and also can be used on a wide variety of systems
besides just NetBSD. DragonflyBSD uses DPorts, which is similar to FreeBSD's
pkg.

Unicode Support: FreeBSD has good Unicode support, OpenBSD is still working on
it.(Don't know the status of DragonflyBSD and NetBSD Unicode support(3))