Episode: 4388 Title: HPR4388: BSD Overview Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4388/hpr4388.mp3 Transcribed: 2025-10-26 00:05:46 --- This is Hacker Public Radio Episode 4388 for Wednesday the 28th of May 2025. Today's show is entitled BSD Overview. It is hosted by Norrist and is about 43 minutes long. It carries a clean flag. The summary is Norrist describes how you can be a real hacker and run BSD. So I wanted to give kind of an intro or an overview of the BSDs and maybe a little bit about how I know BSDs. Personally I use free BSD and open BSD around the house quite a bit. I've never had a job where I'm used either one but I use them at home a lot. There's also net BSD, I don't use that very much. I've installed it a few times just to kind of mess around with it but it never really stuck around. That doesn't have anything to do with the capabilities of net BSD. It's just not something that stuck around for me. And then there's another kind of a big BSD called Dragonfly BSD. I'm going to kind of intentionally leave that one out of the discussion mostly because the development on that project has really slowed down in the last few years. It had some momentum for several years and had some really cool technologies kind of coming out of it, especially the file system. There's a hammer file system. But like I said, that's slowed down and I don't really know the feature of the Dragonfly BSD. So other than what we just talked about, I'll probably leave that one out. So there's been a handful of HPR episodes already on BSDs. Probably the quickest way to find some is to look at the tags page on HPR. There's several BSD related tags. And there's been a few hosts that have done several BSD related podcasts. Claudio Miranda's got a few. I've got a few where in episode 3, 7, 9, 9, I talked about my home routers and I mentioned that I used Open BSD there. In 3, 1, 8, 7, I talked about using Ansible to manage my home routers that run Open BSD. That was like Swakad ad host to the DHCP configs and to the local DNS. What else? 3, 1, 6, 8. I did an episode on using 3 BSD Jails. 3 BSD Jails or it's like Jails are like a container technology. If you're familiar with Docker, it's not exactly like Docker, but it's the same kind of virtualization. But it's a good way to run applications in isolation. So that was, I talked about that in 3, 1, 6, 8, and then lay back in 21-81, I talked about launching the Open BSD installer from Grub, I don't. The point of that episode was if you had a Linux, that you wanted to install Open BSD on, this was kind of a shortcut to loading up the installer, I don't think it works anymore though, the Grub supports loading BSD kernels, but I think for a few years now that hasn't been turned on by default in the Linux distributions, I don't know specifically if you look at like the Red Hat, Enterprise Linux, and its derivatives, it worked in Rail 7 and it's into S7, but it hasn't worked in like 8 or non, so that episode probably deserves an update, but anyway that's sort of a quick overview of my experience, and we'll talk a little bit more about how I use BSD, so just kind of a really quick, I'm going to touch just briefly on, very briefly on the history of BSD and what it is and kind of where it comes from, I've got a couple of Wikipedia links in the show notes, the first one is a history of BSD, and it's pretty long, kind of the key takeaway and I'll read a quote, it's the history of the Berkeley software distribution, began in the 70s when at UC Berkeley received a copy of Unix, the professors and students at the university began adding software to the OS and released it as BSD to select universities, so what that means is that the original Unix was given to these universities and they started adding things to it, little bits here and there, and the little bits here and there turned into BSD, so BSD is a direct descendent of the original Unix, then the other Wikipedia article I have listed in the show notes is a comparison of the BSDs, and it's a good place to start if you want to know more or learn more about the BSDs because one gives kind of a quick intro to each of the BSDs and then it's like the page says it gives comparisons between the BSDs and also it lists some of the derivatives, so for the free BSD project it will list some other projects that have been based on free BSD, it's an interesting read, even if you don't intend to install or use BSD, so because I'm pretty sure for the most part, HPR listeners are familiar with Linux, I'll kind of start with Linux and make some comparisons of the BSDs to Linux and just this kind of a jumping off point to talk about what BSD is, so when I make some comparisons I want to be sure and emphasize that me personally, I'm not saying one is better than the other, so when I talk about licensing I'm trying really hard not to say that one type of license is better than another type of license or one type of way to manage network cars is better than another type of way, I'm just pointing out the differences if it sounds like expressing a preference that one is better over the other, I'm not, so the first thing that's kind of different between BSD and Linux is, like I already mentioned, BSD is a direct descendant of the original Unix, where Linux and sort of the typical pieces of software we think about in a Linux distribution, like the kernel, the Linux kernel and the GNU utilities and other bits that make up that operating system, you know those things were written to be compatible with and to emulate the original Unix, but the BSDs are direct descendants of the original Unix, the next thing we'll talk about with the BSDs is the, when we talk about free BSD or open BSD, these aren't distributions like you would think about a Linux distribution, it's not the free BSD versus open BSD, it's very different than comparing Fedora to Ubuntu, so the BSDs longed, they started as a singular project coming out of Berkeley and long, long time ago they split and split a couple more times and we have kind of the three main projects today and they're all sort of direct descendants from the same place, but they're very different projects now and they're not, you know free BSD is not a BSD distribution, open BSD is not a BSD distribution, they're just, they're different projects with similar names similar but the same origin, kind of the next compare some of the Linux we'll talk about is the license, you've probably heard the term BSD style license before, if you haven't, the BSD software license, there's not, well first there's not like a singular BSD license, there's several licenses under different names, they're all a little bit different, but sort of the key to a BSD licenses, one they're really simple, they're usually will fit on a page, you know if you're looking at it, you can kind of see the whole thing at once and then sort of just to kind of quickly summarize what a BSD license is, it basically says you can take this code and do anything you want as long as you don't say that you wrote it, that's really, most of the time that's really the only restrictions with a BSD license and I'm going to compare that to a copy left license, something like the GPL, which Linux and most of the kind of Linux related software is released under the copy left license, typically the GPL version two or three, and with that you know it's similar to the BSD license where you can take the code, you can do anything you want with it, as long as sort of the real key with these licenses is if you make any additions or derivative works, those have to be under the same license, under the same copy left license, so just to kind of put a fun point on it, if you have a, if you take a BSD license project and you make some changes to it, those changes are yours and they belong to you and you don't necessarily have to license them in a certain way or make them public or anything like that, whereas with a copy left license, any additions or derivative works have to come under the copy left license, so all right that's enough about license, another kind of key difference between the BSD projects and what we typically think of as a Linux project is the BSD projects are, everything is developed together under a single project and what I mean by that is the same project and the same team will be doing work on the kernel, but they'll also be doing you know the same team and the same project might be working on the C libraries or the kind of a core utility like Grapor said, all these things, the kernel and all the things we typically think of as part of an operating system, all these things are developed together in a single project, so the free BSD, open BSD, net BSD, they're all doing all of the operating system work together and kind of compare that to something like Fedora or Ubuntu, you know you've got a team doing the kernel and you've got another team doing Grapor and another team doing said and it's the job of the distribution is to take all these different parts and put them together into something we we think of as like a Linux distribution. Most of the software that you typically think about has been able to run on Linux is going to be available on most of the BSDs, there's going to be exceptions just like there are to everything, but you know things like LibreOffice and Firefox and GNOME, KDE, BLC, FFMPEG, all these things are that you're used to working with are available and can be built on a BSD. Speaking of software, I'll mention ports and packages real quick, all of the BSDs have something called ports or you may hear to it refer to as a port tree, what that is is ports or a port tree is a collection of instructions to build software and if you're familiar with Gentoo or some other Linux distribution that's source-based it's kind of like that where if you want to install some software using a ports package you would find the specific instructions for that and the ports are in a big giant directory it's kind of divided up by purpose so let's say you wanted to install something like VLC you could find the VLC directory CD into the VLC directory and type of command something like make install or something like that and then that would download the software and build it and install it for you and any dependency would check for dependencies and if there's some dependencies that it needs it would download and install those too so that is ports I'll compare that to something called packages and this is more typical of what a Linux system would have where the development team would do the compilation step for you and just give you the output or make the output available for you to install so if you're on Fedora or Ubuntu or something like that you want to install VLC you can just type DNF install VLC or apt install VLC so that is ports versus packages all of the BSDs have ports and all of the BSDs also have packages so if you're on pre BSD and you want to install VLC you got two ways to do it you can download the ports CD into the ports directory for VLC and type make install and it'll do all the work for you or you can do it the easy way into type package install VLC so that's ports versus packages or ports as instructions for installing software packages are like pre-built software like we used to with AfterYum something like that kind of the final comparison I'll make to Linux is how some devices are named it might catch you by surprise specifically with network adapters and disks so in the BSDs typically the network adapters are named after the driver that that network adapter is using for example a very common driver is called the EM echo mic EM driver that's the driver for Intel network cards so if you have two Intel network cards the first one is going to be called EM0 and the second one is going to be called EM1 and if you got another one named that uses the RAD driver I'm just making stuff up RAD if you got two of those it'll be RAD0 and RAD1 and if you've got one EM and one RAD there'll be RAD0 and EM0 and that's different you know used to be with Linux everything was ETH0 now I don't know I can't really keep up with I don't know where the NENS 160 I don't know where they come from anymore but the network card the names will be different between BSD and Linux so that's just something to look out for the other thing to look out for is disks and partitions and file systems just to give you a warning they are under the hood it's the same but they frequently refer to them differently and it's very easy to get yourself in trouble if you have some Linux knowledge and you're trying to apply that to a BSD system so it's not impossible to learn the BSD disk management commands but I'll just say if you're going to work with disks and BSD be careful do it somewhere where it doesn't matter do it on a spare disk or somewhere that you don't have to back up you can destroy the disk so now I'll dig into each of the BSDs a little bit maybe talk about like what what kind of separates them a little bit maybe what's what's unique or distinctive about open versus free versus net BSD what are some standouts so first is free BSD it is generally accepted to be the most popular and most widely used you know there's really no real way to know that but most people assume probably correctly that most BSD usage is free BSD free BSD has a lot of commercial projects that are based on free BSD and I won't name them because I'll probably if I tried to I'll probably get it wrong but there's a lot of commercial projects that are if it's based on BSD it's probably based on free BSD and most of that is due to the you know we were talking about earlier with the license the premise of license one thing that's really really stands out about free BSD a big feature is it's tightly integrated with ZFS the kind of next generation file system it is it natively supports free BSD natively supports ZFS or the ZFS supports built into the kernel with you know Linux projects there's some debate about whether or not you can include the ZFS code because of the license if you can include it with the kernel some people again not it's not for me to know or decide but there does seem to be some incompatibilities between them ZFS license and the DPL that's not an issue with free BSD because it's not under the DPL so the ZFS code is right in free BSD so you don't there's no extra work or anything you have to do to get ZFS work in and then a lot of the tools will have ZFS integration for example whenever you if you do if you stick to the defaults when you do the installation you'll be using ZFS partitions and then whenever you do something like updates it will automatically ZFS will automatically take a snapshot and there will be something called a boot environment so when you reboot you'll be given the option to delete into an old an old snapshot if you need to another feature that really stands out with free BSD or jails I mentioned jails a little bit already but it's a virtualization it's a way to virtualize and separate processes so it's like you get if you're running if you have free BSD and use jails it's like you can have a second copy of free BSD running inside of free BSD and that's what a jail is it's just like another free BSD system that runs in charge or main free BSD system and it's really useful for experimenting or running applications and there's a few tools I use IO cage that's a good tool you don't you don't necessarily need an extra tool to manage free BSD jails but it can help and then the other notable thing about free BSD is it's the base for a lot of open source sort of appliance like distributions so primarily I'm thinking about firewall appliances like pfSense and openSense and then previously it's changing now but free NAS and true NAS NAS obviously NAS based operating systems with built-in features for like making it really easy to set up file shares or things like that now they're newer versions are not based on free BSD anymore but that's sort of the heritage of that project is free BSD based next on the list is open BSD it is probably most well-known for us it's focus on security that is almost a little backwards because it is a very secure OS but and the developers do focus on security but their kind of main focus is on writing a correct operating system so you know just it's a downstream effect of writing correct code and doing things the right way downstream effect of that is that it's also a very secure operating system so the open BSD project is a lot of times they're the first OS to introduce new features specifically around security so things like ASLR or address space layout randomization it's something that all the operating systems do now but open BSD is the one that's sort of developed and paved the way sort of proved out that that technology can be implemented operating system wide and they'll do other things like kernel relinking every time you reboot it sort of rearranges the kernel so the next time you reboot it'll be the same kernel but everything's in a slightly different place in memory so it makes it basically impossible to do to take advantage of security vulnerabilities that depend on specific pieces of code being in specific places in memory open BSD does a lot of things to sort of mitigate those types of vulnerabilities open BSD is the home of several projects that have sort of made their way out into the wider ecosystem most notable is open SSH I know everybody that's listening to me right now has used SSH or open SSH and that the open SSH you are using is comes from the open BSD project they develop it for themselves and then make it available to everyone else something else that's kind of distinctive about open BSD is it in the base installation it includes Xorg and a very minimal window manager so with the other BSDs and with a lot of Linuxes when you do kind of the base install you just get a console and a bunch of utilities but with open BSD it comes with like I said Xorg and a display log-in manager and I think it's FVWM is the one it ships with but it's not it's not pretty to look at but sort of the default install like I said includes if you choose if you choose to enable it or and boot it sort of comes with a log-in manager and a window manager and then finally for open BSD the last thing I'll say about it is that its documentation is extraordinarily good and specifically the man pages if you're someone who struggles reading man pages or has a hard time bonding information in man pages that's just because a lot of man pages aren't easy to read they're not easy for users to read open BSD man pages are an exception of that they're very straightforward very easy to use very easy to understand and the key is they always have examples at the bottom so if you're looking for some new software you want to try out and you're not quite sure how to do it or how to use it you open the man page and you read through it and you still you're not any closer to actually being able to use it than you were before if you can look at an open BSD man page it's just so refreshing to see an example that's probably what you want to do probably the reason you open the man page is to learn how to do something and that something is probably going to be spelled out at the end of the man page exactly what you want so that's the last thing I'll say about open BSD the document all of the BSD projects have good documentation the open BSD documentation is phenomenal the last one on the list is net BSD and unfortunately I don't have a lot to say about it because like I said earlier very minimal exposure to it it's not something of a brand with any for any real purpose other than just when installing that BSD you just kind of see what it is that's really all I've ever done with it the two things I know they really stand out about it one is that it's one of the project goals is to support the widest amount of hardware available so net BSD will run on things that no other operating system will run on if it's a computer with a CPU and RAM regardless of the architecture when it was built who built it how unique it is there's a pretty good chance that net BSD won't run on it the other thing it's kind of a standout for net BSD is the packaging system it's called package src package src it is built to be portable so what that means is even though it's it's intended for net BSD it's the default on net BSD you can also install it on other unixes so if for some reason you're not happy with the package manager on your flavor of unix you can go to the the net BSD site has instructions for using their packages and their package manager on your flavor of unix including Linux or sleras or several others but they build their packages with the intent of making it available to not just their project but to other projects so next I'll talk about how me personally how I use BSD where I use it sometimes the wires sometimes the wires are just arbitrary but maybe it'll help help you kind of figure out if you want to use BSD and how and where you might want to use it so the first thing I'll mention is my home router I go in a little more detail in the hpr episode I mentioned earlier but my network is sort of the entry into my home network is bounded by a router historically it's ran open BSD and I have to recently migrate from open BSD to free BSD and really the only reason I've had to updone that is because the I needed to upgrade the hardware from a home router wanted to get some like 2.5 gigabit networking and open BSD supports 2.5 gigabit networking but I kept buying these cheap firewall appliances I'll AliExpress and I bought a couple different ones and they both have the same problem where the on paper open BSD supports them but in reality I ran to a lot of problems doing the installation and getting the keeping the network adapters working through through the installation process and then after but with free BSD they worked just on so I was able to port all of my configs and everything from open BSD to free BSD haven't had any trouble that was about a year ago so for years and years I ran open BSD as sort of my home gateway firewall appliance and recently switched to free BSD. So the next place I use BSD at home is like workstation so I've got a laptop and a desktop the laptop dual boots arch Linux and open BSD I've given you some warnings about dual booting and I'll probably mention it one more time it's definitely possible to dual boot BSD and Linux or BSD and Windows but you just need to be really careful if you do it so having given having given you that warning one of the ways I use open BSD is on a laptop like I said I'll dual boot just kind of go back and forth between the two one downside using open BSD is that because they focus on code correctness they weren't happy with their implementation of the Bluetooth stack and they didn't really they didn't have the developer to work on it and it was the code was getting kind of old and they weren't happy with it anyway so instead of leaving something there that they didn't like they just took it out so open BSD doesn't have any Bluetooth support which on a laptop is a little limiting especially if you're using like Bluetooth headphones and stuff but otherwise open BSD runs just on a it's on a think pad it's well supported on open BSD as well supported on think pads the other way I use open BSD is I'm going to as a workstation is I've got a look at a kind of old desktop form factor PC that I use to do my banking and financial kind of stuff on and I do that mostly because I like having a separate system for doing sensitive work I just don't want to risk accidentally leaking some banking credentials or something like that and since I'm going to have something separate it may as well be something that I feel good about the security so I have an open BSD system I turn it on just you know maybe once a week log in do whatever financial or baking work I need to do and then turn it off and you know like I said earlier all of the kind of all of the software that you're used to on Linux is probably going to be available on BSD so I'm able to use Firefox and LibreOffice and all these all these things work just fine on open BSD so I don't have any trouble using open BSD to take care of my kind of everyday everyday sort of normal work and then last place I use BSD at home is with like my home NAS runs free BSD sort of a quick history many many years ago I bought like an old HP micro server it's a roast kind of a small form factor server it's got four disk bays in the front when I bought it I put originally put a true NAS on it and then decided to just bite the bullet and go just like straight plain old free BSD and so I would use it like I said for a NAS so lots of storage and network shares and then out of jails on it for running like self hosted apps run those things inside BSD jails and I'm going to use the ZFS pools for the storage at some point a couple of years ago I wanted to upgrade my home server hardware and when I when I did that I decided to use Proxmox instead of as sort of on the bare metal that way I could do you know I have some other virtual machines and stuff so what I did was installed free BSD you know Proxmox VM and then just took the disks out of the HP micro server put them in the Proxmox server and just did like a disk pass through so the VM sees it as just just sees the raw disks and it's the same disk that I was using before and I was able to copy the configs over so my free BSD NAS even though it's a virtual machine it's just running free BSD directly connected to drives and I use it the same way just NAS storage CFS NFS Samba as well as having some self hosted home lab kind of applications running in free BSD jails so a few recommendations if you want to try out BSD what what these are some I'd recommend you try one if you want to try out a building your own home router I would go two different ways if you really want to dig in and learn and write some configs and do a bunch of DIY stuff I'd personally I'd start with open BSD just because the documentation is so good if you don't want to do that any of the BSDs will work just fine and then if you want something a little easier to manage a little more familiar to manage if you started with something like open sense or PF sense these are appliances that are based on free BSD that have like a web management UI and it would be really similar to like man if you have a home router with DDW RT or something like that you could basically get the same experience just getting some old computer hardware put a couple of network adapters in it and install open sense and then they would give you sort of some easy exposure to BSD as a home router next recommendation is if you have a think pad that you're not really doing anything else with try open BSD on it open BSD is very well supported on think pads because the open BSD project is the developers make that project for themselves and then they just kind of share it with everyone else so because of that they do a lot of dog fooding they all work on open BSD to develop open BSD so and a lot of the developers have think pads so think pads good laptops everything is going to work just fine on them but they're particularly open BSD is particularly well suited for think pads because that's what a lot of the developers have if you have some other hardware or you don't want to use open BSD as a workstation or desktop or laptop the next thing I'd recommend is one of there's two derivatives of free BSD that are sort of desktop focused ghost BSD or midnight BSD or the two that I'm thinking about I've never used either one but I haven't heard anything about them and they are just sort of um they're free BSD based they're really the free BSD true free BSD under the hood they just come with some little some extras and some uh it help you get desktops going so if you want to try um free BSD or any of the BSDs on a desktop either ghost or midnight BSD or you know free BSD isn't by itself isn't all that hard to get going on a desktop or workstation but might be a little easier to start with something like ghost BSD or midnight BSD then if you've got a server or something like that you want to set up um free BSD is a great server OS I've talked about how I use it with zfs and jails um if you've got a kind of a little weird piece of hardware maybe like a raspberry power or something all the BSDs that will support it but um it'll be a good chance to try net BSD because they'll have really good support for all kinds of warehouse hardware um and then the last thing I'll leave you with is I think this is the third time I've given you the warning um disc management on BSD um is it's not harder to do is just different so um if you're used to managing disk with Linux or using the Linux commands um that might not help you um managing disk and partitions and dual booting and things like that might not help you do those things on BSD so just keep that in mind um if you want to try BSD I encourage you to use real hardware um but at the same time I'll say uh when you do the installation if you can uh install it on a disk uh just maybe you have a spare disk or a spare laptop or something like that or if you uh make a mistake and override a partition or override a disk you you want to do that on some hardware where it doesn't matter um it's not impossible to dual boot uh BSD and Linux I do it uh but like I said it's it can be tricky uh so avoid it if you can use real hardware if you can but avoid dual booting again uh and with that warning I think that's all uh had to talk about so try BSD it's um it's a little different than Linux it's a little um uh like an uncanny valley kind of situation where it's familiar but just a little different but um it's worth trying out it's worth using um then you can always claim to be a real hacker uh if you can run open BSD or free BSD all right that's it I'll see you on the next one you have been listening to Hacker Public Radio at Hacker Public Radio does work today's show was contributed by a HBR listener like yourself if you ever thought of recording and click on our contribute link to find out how easy it really is hosting for HBR has been kindly provided by an onsthost.com the internet archive and our synch.net on the Sadois status today's show is released on our creative commons attribution 4.0 international license