Main gotchas:
* No SSL CA certificates out of the box. FreeBSD security team has taken the
curious posture of claiming that shipping no CAs is better than just
shipping e.g. Mozilla's CA bundle.[0]
* rc.d is like Linux init from 5 years ago. Dynamic network configuration is
not handled well.
* Intel GPU driver support for anything above Haswell is still waiting to be
merged. But work is ongoing.[1]
* No Xorg or session management out of the box. You get dropped to a terminal
console. Good luck starting a session.
* Some packages conflict with each other needlessly. For example, you cannot
install gitk and git-svn at the same time.
* Finally, the installer has some limited choices. You can't enable full disk
encryption for UFS with the installer (last time I checked, anyway).
Other than all that, it works well.[0]: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=189811
[1]: https://github.com/FreeBSDDesktop/freebsd-base-graphics/wiki
I sure miss being able to understand and control my machine...
FreeBSD can be pretty spartan, but I do feel like I'm more in control.
$ mount | wc -l
32
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 698.7G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 690.3G 0 part /
└─sda3 8:3 0 7.9G 0 part [SWAP] # this was a mistake...
sr0 11:0 1 1024M 0 romThat's not an unfixable mistake: sda3 is at the end of the partition table, so if it's deleted, sda2 can be safely resized offline. For example,
parted /dev/sda rm 3
parted /dev/sda "resizepart 2 -0"
resize2fs /dev/sda2 # for ext2/3/4
And then you can create a swap file or volume on sda2, so long as it isn't on btrfs.Slackware feels like one of the last holdouts, along with the likes of CRUX and Gentoo, but I fear that soon I will be forced to switch to some BSD -- which I wouldn't mind if my laptop hardware were better supported (I've been running various BSDs on servers for years, but Linux just seems to work better on my laptop; that said, I downloaded the 11.0-RELEASE ISOs a few days ago and I'll give it a shot on the lappy).
Also small note on FreeBSDs rc vs Linux old init is that it for example always had support for dependencies.
I'm saying that because BSD's especially FreeBSD's simple, pretty and working rc system have always been a thing that I missed when using Linux. Or in other words I disliked that run level system that makes managing dependencies really hard.
I always hoped OpenRC would become the most common init system on Linux and actually still do, because I think it is the best option, when compared with sysv init and systemd.
Also about the CAs: Everything that wants it has a dependency.
About package conflicts: Choose between official packages or your own with Poudriere
Out of the box the system is like Arch Linux, Debian or Ubuntu Server. It's the FreeBSD base system. You can install packages to make it into a router, a server, a thing hosting your private cloud using jails, a jail itself, etc.
And the plus side. You don't have to get rid of all the stuff when you want your nice little i3 environment. And if you want KDE, just install it and kdm using pkg install and do sysrc kdm_enable=yes.
Or go for TueOS (former pc-bsd).
Or if you just want some FreeBSD tools go on MacOS and enter grep --version.
With the other things I agree. FreeBSD isn't really your multimedia desktop environment. It is maybe for people that like it liked Gentoo or Arch Linux, but you should really check on your laptop's hardware before.
Most driver development really happens in the server or usual suspects (Lenovo, Raspberry, ...) area.
Sorry, didn't mean to even strongly disagree, but wanting to share my own experiences. Not everyone comes with the same views and I'm personally someone who is switching back from Arch Linux, because of the developments in the last few years in the Linux world.
It just in my personal experience felt so much more easy to do stuff and have the system I want. Having used Arch for around a decade with only a relatively short break doesn't make that easy, but I liked it's initial idea about keeping things simple and that's what I miss on many ends.
The main reason for not using FreeBSD on laptops really was the lack of some drivers for me. So that's maybe the biggest gotcha. Oh and for new people maybe that it is not just another Linux distribution so many things work differently.
Biggest is probably the separation between base system and ports/packages.
Intel GPU driver just works on a 4K screen.
I run ZFS on a pair or mirrored M.2 (NGFF) SSDs. Disk encryption is straight-forward here. pfSense 2.4 will have ZFS as well.
I have a mostly retired x230 as well. 'Only' 16GB ram.
TrueOS Desktop is your friend. PC-BSD, now called TrueOS, has for years now been the place to go if one cannot hack getting X up and running onesself, as one has to do with FreeBSD. PC-BSD/TrueOS Desktop has X and GUI login pre-configured out of the box.
> rc.d is like Linux init from 5 years ago.
Linux init from 5 years ago was upstart in quite a few places. (Debian is not the entire world.) init is not rc. upstart is nothing at all like Mewburn rc. And Mewburn rc has significant differences to van Smoorenburg rc, from not having any notion of runlevels (which the BSD world never adopted from the AT&T System 5 world) to a different division of work between the individual scripts and the common script libraries.
Dynamic network configuration is handled through devd rules.
> You can't enable full disk encryption for UFS with the installer
... although the FreeBSD/PC-BSD/TrueOS world is rapidly heading to all-ZFS as the norm. The PC-BSD 10.2 installer creates an all-ZFS system.
For development, it's excellent! (Favorite things: non-GPL not-breaking-compatibility-every-day libc that doesn't cause any problems ever. Simple init system. Simple configuration files, moving towards using libucl everywhere. And libxo for output. Good documentation. Jails. ZFS. DTrace. Capsicum.)
I do get annoyed at people who use linuxisms like "/bin/bash" in their code though >_<
ln -sf /usr/local/bin/bash /bin/bash
Infinitely more entertaining is running unzip at the command prompt results in /usr/bin/unzip which is extremely limited compared to (installed via pkg) infozip at /usr/local/bin/unzip. At least one specific example I ran into was Play/Activate Scala framework can be convinced via "dist" target to make a zip file of all the jars necessary to run a project, and you guessed it, /usr/bin/unzip doesn't understand that zipfile format and /usr/local/bin/unzip works perfectly. So you can't have a script that automatically runs unzip because you need to run /usr/local/bin/unzip specifically.
Lack of a Debian-like alternatives system is really the only systemic problem I run into on a regular basis. Then again it creates an inconsistency across multiple servers and I would not enjoy playing "update-alternatives whack a mole" to figure out which of my frontends have infozip provide unzip, and which fail.
We'll, there's always Debian/kFreeBSD for that...
if bash is installed; if not, at least it's a fairly clear indication that you should install bash
I'd still be using it, but I got the laptop used and it has had frequent reboot problems (even on Linux) and I get an error when I try to update the bios. I looked up the beep code and it just says the motherboard is bad and to send it in for warranty. :(
The BSD land is better than any linux distro with its docs and community, and the OSes are really clean and well put-together from the bottom up. Only Arch can come close to them, but then it has no stable releases and breaking changes are often.
BSDs run nearly all the software that GNU/Linux runs, and ports tree is exhaustive. I only have Emacs and Xombrero that I build and install seperately because I'm patching them.
I recently got my hands on a Acer Aspire E-571 (Haswell i3-4030U) and suspend/resume in X with i915kms literally just worked installing FreeBSD 11.0-RC3 from installer and xorg/xdm/openbox from packages, no config file touched (apart from adjusting the keyboard layout and setting the lid_close_state sysctl to S3).
What does not work on it yet is the Elan trackpad, since it is the version that is connected via i2c.
PyCharm/RubyMine/etc. aren't officially supported, you might be able to get them to work by manually doing the same things the intellij port does. But pure IntelliJ IDEA works perfectly.
Update: also almost all closed source products are not available for FreeBSD, e. g. I'd like to try Jetbrains CLion - it has version for Linux, but not for FreeBSD.
My understanding was that various android emulator features that are better at supporting on Linux or Windows, and do not work on FreeBSD. Happy to be corrected though.
Also if your development depends (or benefits from) ATI device drivers, freeBSD (or any BSD for that matter) is not the best choice.