BSD UNIX – Is it for me?
I have spoken about this earlier as well. You can see the following link for an example.
OpenBSD – EEE PC
I was recently asked by a blog visitor about why I use BSD UNIX over Linux and what advice can I give a prospective convert. Nothing special, actually. In my case, it was just a matter of choice. I started from the school of UNIX (HP-UX, Sun Solaris, IBM-AIX and some SGI-IRIX) and then ventured into Linux (Red Hat, Gentoo, Fedora, Ubuntu and its variants, Sorcerer, Lunar Linux, SourceMage, LFS, and back to Sorcerer), before getting to BSD UNIX. Why didn’t I try BSD earlier? Good question. You see, during my Engineering and Physics studies, in addition to the aforementioned Unices, we were forced to use Red Hat or Gentoo. Apart from a HP-UX box at home, I had no other personal computers, so I sort of stayed with Linux. Since, I grew up in India, during those days, computers were really expensive. Then, when I began my Doctorate studies, something happened. BSD UNIX was always on the back of my head. But a chance encounter with another BSD power user over at box-look led me to BSD UNIX finally. And it was also the time I started developing my toolkits for high performance simulations at work. Since, the C compiler and Perl with many ported libraries from netlib, was all I needed, I realized I could have a lean system without all the bells and whistles, including X. So I took an older computer at work and installed FreeBSD. So, you see, it was my efffort to start anew that eventually led me to BSD, FreeBSD to be precise. It was the beginning of a fruitful relationship that persists even to this day. Apart from one rig that runs Sorcerer, all my boxes are powered by BSD’s
It would be illogical for me to go into the merits of using BSD versus using Linux. There is plenty of information available on the internets comparing BSD with Linux. So, I will avoid it. All I can talk about is what can one expect out of a standard installation routine on BSD systems, just briefly. One should not be lazy to read the manuals. BSD documentation will knock the socks off of Linux. Trust me, it is not a joke. OpenBSD manuals, in particular are poetry. Detailed installation methods are explained in the manuals. So, its absolutely necessary to read them. Don’t expect details in this post.
In general, every BSD installation follows through stages. First, you install the base system that installs the kernel and important toolchains needed for further builds. Assuming you are doing an installation with a CD/DVD, on FreeBSD there is the time-tested, pretty old sysinstall that can be used to install the base system. It is pretty intuitive and it must be very easy to follow. Although, I don’t use sysinstall anymore . There are modern methods to install a rock solid base system with ZFS enabled and getting it up to date with security advisories. For a beginner, this might be complex, so on your first trial, just use sysinstall. But that doesn’t mean that the highly motivated should not use the modern method. It is up to you.Once the base install is finished, you can install X that would pull in additional dependencies automatically.
OpenBSD’s installation is pretty easy with a CD. Once you set the filesystem up, you can easily install the base system with X. Remember, Xorg on OpenBSD is called Xenocara, a unique build infrastructure of Xorg. In my opinion, it is more efficient than the standard implementation of Xorg. When you reboot, you can immediately start using a customized fvwm implementation and can start customizing the system according to your needs.
NetBSD and DragonFly BSD are pretty similar in their installation infrastructure. You setup the base system from a CD or minimal boot iso’s and then you can start adding software, like X, window managers etc.
Speaking about filesystems, on BSD’s you have the opportunity to explore different filesystems on different flavors. ZFS, UFS, Hammer, so much variety. For the initiated, you can learn more about them.
Package Management – Binary or Source?
Package management in BSD UNIX is probably the best in my opinion. You have the option of installing binary packages, but for the functionally paranoid, you can use the source (ports, pkgsrc).
On my boxes, I always start out like this. Install base system. Then, important languages that I need, a shell like zsh, vim editor and then X server. You could install the full X server or even choose to get a lite version installed, depending on the BSD flavor. So, you see you have complete control over what you want.
You can install either binary version of the packages or you could install every package from the ports infrastructure. My choice is ports. The reason is, many packages have build options that make it easy to customize them the way you want. For instance, let’s take the rxvt terminal. If you install the binary package, you will just get the default flavor. But if you build from ports, you could choose to install various encodings, scrollbars, 256 colors, etc. So, you see, it is usually helpful to install from ports. But having said that, the developers have gone through the pains of generating binary packages to facilitate easier, faster installation of packages. Hence, sometimes, it would be better to just choose the binary package. It is the most preferred route for me when I use OpenBSD stable branch. I mostly install the binary packages, except for occasional port builds. On FreeBSD and NetBSD, DragonFly BSD boxes, it is ports and pkgsrc, respectively.
Patience is important when using ports to configure your system. Speaking of patience, if you are a bleeding edge fanatic, you would be better off without BSD. That brings us to the topic of updates. Yes, it is possible to keep your packages updated on BSD boxes, but it is cumbersome if one resorts to doing that almost daily. I do that on unstable branches, and have encountered many breaks and most of the times I had to rollback to get the system back up on its wheels. BSD is a complete operating system, unlike Linux, so if you are only bothered about the relative newness of packages, just use a rolling release Linux distribution, like Gentoo or Arch Linux. But if you are bothered about the stability of the system as a whole with emphasis on code correctness and proper vetting of packages, BSD might just be your savior.
The main updates that I do on all my BSD boxes are security and kernel updates (release to stable). They are the ones that matter the most to me, not whether I am using zsh 4.5.X1 or zsh 4.5.X2. I hope, I have made my point clear. The only time I do port upgrades on my stable machines is when there is a new release of BSD. Generally, a complete system upgrade. I have done system upgrades universally across all my BSD boxes, that it is child’s play these days.
It’s not easy to generalize Linux users, due to the various distributions. But all I can say is this – If you want to use BSD over Linux, your thought process has to change as well. What is more important? Stability or constant tinkering even on the kernel level and upgrades that might rock your system? You be the judge. Honestly, of late the whole bleeding edge concept has become some kinda disease, where using fresh off the stove software is more important than stability. It is a philosophy that has become popular these days, thanks to many rolling release distros. You might ask, when Linux does it, why not BSD? Again, at the danger of sounding like a broken record, I am gonna reiterate the fact that BSD UNIX is an operating system, unlike Linux.
In conclusion, what works for me is being up to date with security updates and full system upgrades when a new release is out on stable machines. Snapshot testing rigs are a different story altogether. OpenBSD is the only BSD that adheres to a strict release philosophy, putting out new releases every six months. FreeBSD is famous for prolonging releases. NetBSD and DragonFly BSD do release cycles pretty well too.
Hardware Issues – Do the research!
It pays to know your hardware inside out, if you wanna have a completely enjoyable experience, be it using BSD UNIX or even Linux, for that matter. You see, hardware can sometimes be a stumbling block in using BSD. Newest hardware, be it graphic cards, sound cards, wireless cards and many more might not function well, just because the drivers may not be available. It is likely that one of the BSD’s might have support for a certain piece of hardware that others don’t. So, it is essential to do some research. In my opinion, research has to precede the buying process. Every release information of BSD’s include details about the cards that are supported and by which driver. Even bugs are listed. Lets say, you have settled on OpenBSD. Now, you wanna buy a laptop. You dig into the release information and find laptops that more or less match the support information in the release document. Then, you will never ever have to complain. This holds true for new hardware. For older systems that you might be getting from work, friends or family, if no information is available about the hardware, you can cycle through all BSD’s to find the optimal distribution for your machine (Refer this post about my NetBSD experience on a laptop that I salvaged earlier). On legacy hardware, for instance, NetBSD is a killer. It flies on some of my very old rigs, without any of the hacks.
It takes a while to reverse engineer a driver even on Linux, but the wait would be longer on BSD. But that doesn’t prevent you from trying to reverse engineer yourself! That’s the beauty of OpenSource isn’t it? Still, on matters like graphic cards, you need to do some research before settling on a BSD of your choice. For instance, if you have an NVIDIA card, and you want to use OpenBSD, do not ever expect to find an official NVIDIA driver on the machine. You will not. Theo is very particular about binary blobs. That is the very essence of OpenBSD. People criticize the OpenBSD project as being very rigid in their philosophy and their emphasis on security. Linus Torvalds, once famously called OpenBSD developers a bunch of masturbating monkeys! It’s nothing but hot air. OpenBSD’s focus is on security and cryptography and not having the source code goes against their security emphasis and why should someone criticize them for that. You don’t like it, don’t use OpenBSD, plain and simple. As of this writing, FreeBSD is the only BSD operating system that has an agreement with NVIDIA to develop and use official NVIDIA drivers. FreeBSD’s focus is different. If you don’t like their agreement with NVIDIA, no one cares. You see, it could go both way.
There is plenty of support available on the internets. FreeBSD forums, Daemon forums, mailing lists, etc. In special cases, if anyone needs help, you can always bug me as well. On FreeBSD forums, for example, you should definitely check out the Tips and Tricks section. There is plenty of gold there. Same holds for Daemon Forums. Most users of FreeBSD forums are also active members on Daemon forums. So these two places are great to start with when someone needs help. Otherwise, you always have mailing lists. When you use snapshots and daily builds, it is crucial that you check mailing lists, since anything out of the ordinary will be reported and it might help you in case you run into a bug.
Have fun with BSD UNIX. I promise, you will love it!