I do get that some people prefer things this way (I used too when I was a student and had plenty of time to spend on tinkering - heck I have installed Slackware from floppies in 1995) and it certainly lets you understand what is going on your machine in minute detail, but a desktop machine is a tool for the most people - they need to get work done, and don't want to have to mess with the OS to get even basic stuff like networking or desktop running.
I think I will stay with my Mageia on my machines ...
I have used FreeBSD on the desktop since 1996. I am not a system guru. I have never used an install guide. I only ever used the guided installer and just let it run. It has always just worked. But there is also nothing to be gained by using FreeBSD...because coloring inside the lines on FreeBSD means using their polished tools to manage your system. I never ended up exploring my system much because I never had to...sysinstall did it for me.
Indeed in the late 90s when Linux distros were immature, I recommended FreeBSD to people who wanted a "just works" approach that let them continue to be as systems-stupid as me.
I see Ubuntu as the best current manifestation of what FreeBSD always was for me...the quickest, friendliest path to get a unix-like OS on your computer with lots of good defaults and hand-holding.
On my other computer I correctly followed the post and had no issues.
I use the gnome offline updates with no fear, just whenever I turn off my computer I check the "Install Updates" options when it is available. It is all beautifully seamless.
Or rather, mimics CRUX, which imitated BSD-style init scripts.
Although Arch uses systemd now by default, which is bad. I've replaced it with OpenRC. http://systemd-free.org has instructions if you want to do it yourself.
I had done some research at the time, and came to the conclusion that it was systemd that allowed Linux to boot up so fast.
What is your experience with OpenRC?
Anyways, you don't need systemd for a fast boot.
After much tweaking and struggle I couldn't get the DBus working, hence couldn't install GNOME.
i3wm as my window manager and manual configuration of everything especially the wireless connection were too spartan for me. So I switched back to Debian 8 + KDE.
OpenBSD is probably the worst when it comes to overall performance of all the BSDs, and Linux.
And I have this superstition that if I leave my laptop plugged-in to any sort of cable at night, it might get hacked while I'm sleeping.
I'll try suspending the next time I install OpenBSD.
Non-LTS releases are really just development snapshots to give you a sneak-peek of features coming in the next LTS.
At my company we used to upgrade our workstations with each and every Ubuntu release. It was a mess. As soon as we started to jump between LTS versions, every problem vanished. And upgrades are almost painless. We have a rock solid stable base and we can upgrade select packages through PPAs.
I do think that from an educational standpoint, arch linux is a good OS to use, as you will probably get a lot more comfortable with the linux environment. This is largely out of necessity as you will spend a great deal of time setting up and fixing your system.
If you have the time to debug the various components of your system, it can be quite fun and educational to use, but if you're interested in getting work done I cannot recommend arch linux at all.
But by far Arch's best asset is the Wiki. The Arch Wiki is a godsend: a large repository of documentation on just about everything you'd want to do, complete with instructions for the most common cases. Want to do a basic install? Go look. Want to configure pulseaudio (why you would, I don't know)? It's right there. Want to encrypt your disk? pick your poison, and get to it. X? Check. 3d cards? AMD or Nvidia, proprietary or open, if there's hangups, we'll tell you how to fix it. Games? From steam to just about anything else, there's documentation for getting then running.
There's a reason many arch users will tell you to RTFM if you have a question. But if you've done that already, the forums are quite helpful.
The only snag is that systemd is installed by default. However, like everything, the wiki has docs on how to switcg to another system, like sysvinit or openrc. Even more luckily, some very kind Arch users have gone above and beyond that, and created a repo with most of the openrc initscripts, and forks of necessary packages that are without systemd. These instructions are better, and can be found at http://systemd-free.org, under 'installation' and 'configuration'.
I'm now writing on a Debian… er… something… system. That version which tried to force systemd down my throat. I switched back to sysv-rc right after the update. What bugs are you referring to?
Hopefully the possibility to switch rc will remain in future (I hear Gnome these days depends on systemd, WTF), otherwise I'll have to look for something else once again. Arch, probably. Or Slack + pkgsrc. Or I'll go back to NetBSD.
I found that simple tastes make for an easy switch to... anything (for values of 'anything' not including lunatic fast-moving all-eating godzilla-sized init monsters obviously). My poison is some tiling wm (xmonad or spectrwm work best) + dmenu. A single config file is all you need (my spectrwm config is 4 lines long).
As for a system to switch to Slack seems to be one of the last Linux strongholds. Arch (like Debian) needs tweaking to switch from systemd. There are also those Devuan guys...
We'll see what future holds.
Have you tried i3wm? It's my wm of choice, it's tiling and it uses dmenu by default. How does it stack up against spectrwm/xmonad?
I learned of spectrwm only recently, it clones xmonad's UI, but is more practical (written in C, ini-style configuration vs Haskell code, doesn't need GHC installed). Painless switch for an xmonad user.
Honestly, I think i3 is probably closer to dwm than any of the others you mentioned, and I kind of like it for that. dwm goes a but too far with its configuratiob system, but i3 hits the sweet spot. I want my WM to work, and get out of my way: I have enough things to tinker with.
Although, if I'm ever convinced to go back from tiled managers, I may try sawfish. I do love lisp...
There was an unofficial motto to that effect at one time.
 https://bugs.archlinux.org/index.php?do=details&task_id=5051... (hit this myself a couple days ago)
Your system might have also broken because you didn't read the RSS feed, which warns of potentially breaking changes.
When in doubt, blame yourself. Or Alan.
I set things up the way I want them many years ago, and because everything's a text file, my configs have followed me across many machines and OS installs by just copying some files.
With more "magical" desktops like Gnome, developers like to change things every 6 months, and then I've got to mess around with the settings to try and not have it disrupt my workflow. And as soon as bring a new machine up I'm spending half a day mousing through menus and trying to remember all the things I set last time.
I like FreeBSD with a minimal desktop precisely because I've got more important things to be doing than messing around with settings. Yeah, the work is front-loaded, but the payoff is that I spend years not even thinking about the desktop or the OS.
Even so I don't think this is 100% proof against things changing then again the same CAN be true of text configuration files.
Setting up FreeBSD is easier than, say, Arch Linux. The OS install is a menu based "next, next, next" process like in Debian. Installing a desktop environment… honestly I can't imagine how it CAN be difficult. `pacman -S xfce`, `pkg install xfce`, same thing everywhere.
Comparing with Arch and saying it is easier - well, gee, sure - not a particularly high bar to clear! The same about installing the desktop using a package manager.
If you have to actually do any of that, you have lost already, at least as far as a productive desktop is concerned. My point is not that it is hard to do but that you shouldn't have to do it in the first place!
Desktop OS should come with a working desktop out of the box - many desktop Linux distros actually give you a choice during the install and preconfigure one of the major ones for you.
BSDs make excellent servers and there this simplicity and Unix-like approach to running things are a large benefit. Modern Linux distros tend to be way too complex and "black-box" like in this regard. However, having to go through all this to run a desktop is an unnecessary masochism for people who have way too much time on their hands, IMO.
You must be that mythical Hacker News commenter who's proud of using default settings everywhere and not customizing anything :D
Anyway, setting up any BSD, or Arch, or even Gentoo doesn't really take "way too much time", come on.
Our receptionist installed it herself on both her work and home computers in 1997. Next, next, next, done.
You are responding to a comment that explicitly mentioned PC-BSD by name. I strongly suggest looking up what PC-BSD is.
I remember installing red hat from a bunch of floppies around 1997. Tinkering, etc. But it certainly didn't let me understand what was going on with the machine. I got a much better grasp of linux many years later when internet came around and well... started doing useful things with the machine instead of configure a VGA Xorg whatever file to display the desktop (and then what? play mp3 ?).
The only way to make it better is to recognize the problem and make a new distribution with a decent well thought out package and configuration manager.
 I'm talking about desktop Ubuntu of course.
Sure, there may be issues. But both the list and mentioned solutions seem extraordinary.
I use MacOS on my laptop, Windows 8.1 on main workstation and Fedora 24 / XFCE on another workstation daily. Each and every OS has some things I wish the other OS would have and i can't decide which one is 'the best'. There's no such thing.
I'd say the closest thing to an ideal situation (for me) would be a Fedora OS with MacOS-like opaqueness to configurations and upgrade, Adobe, Games, and Office applications from Windows (they work better on Windows) and preview (spacebar and app) from MacOS in it. At that point I wouldn't even care if, at its core, it would be Linux or BSD or NT.
Microsoft supports Office apps for Android as a first-class port.
Chrome OS is "opaque"...there are very few knobs to turn.
Games will be covered as long as you mean mobile games.
My main gripe is whats broken varies distro to distro. It's rarely the same. So, I have to have guidelines or scripts on a per-distro basis to deal with their issues. You'd think in 2016 that there'd be reference sheets on properly integrating various components so this doesn't happen. And people would've used them. One or other apparently isn't true.
It's always been a constant battle with ubuntu for me. I lost that battle, automated configuration to satisfy ubuntu and don't bother anymore, mostly by avoiding ubuntu ways as much as possible.
Sadly, following the (un)guidelines set by the redhat/gnome dictatorship (aka, systemd) and their grand quest to please the desktop users, Debian also seems to have become, more or less, the freaking Ubuntu.
I will be happy if I am wrong.
There are a few things that could be improved, however.
I would recommend not blindly copying the sysctl values provided. Many of them were already set higher by default on my test system. By copy/pasting the suggested values, I was actually lowering the values (maxfiles, shared memory settings, etc.).
Another big one was device permissions. For a single-user machine, they're probably okay. If another person will ever have access to your machine, however, you're probably granting them way too many permissions.
In short, if you're just wanting to bring up a FreeBSD desktop to play around with, this will probably get you there. You might also consider PC-BSD , which takes of all the hard work for you.
Once you're up and running, head over to the FreeBSD Forums if you encounter any issues.
Welcome to FreeBSD!
This is best explained with an example. Say you want to install TensorFlow with CUDA 7.5 and cuDNN v4 support, which is necessary for training large neural nets.
Here's how you do it on, say, Ubuntu:
sudo pip3 install --upgrade [Official TensorFlow URL]
In (for example) Debian stable I have a very reliable system but any annoying bugs in end user software will remain for the next several years. But going to a rolling release distro could result in unexpected troubleshooting sessions while I actually had to be productive instead.
So there are drawbacks of going to a full rolling or a full stable distro and imho the FreeBSD model is the best balance between both extremes. Why isn't there a Linux distro like this?
So if you use normal release (not tumbleweed) you are fixed to the package versions when suse was released, but you can go to OBS where you can obtain latest version of software. Their 3sat dependency solver makes sure that dependencies are resolved correctly. Another interesting thing is that they group package upgrades into patches, with description and other details. You can for example issue zypper patch --have <cve> and instead everything that resolved specific vulnerability. I also love zypper ps showing which processes need to be restarted after the upgrade.
 http://software.opensuse.org which is like github for packages (it supports other distros as well) most packages are there in latest versions.
Debian stable is that distro in my case.
I agree that you shouldn't have to put up with an annoying bug or missing functionality until the next stable release; that's what the backports system is meant to address. And when you cannot find what you're looking for in the backports repository, making your own is relatively simple.
The way I see it, the FreeBSD ethos is perfectly applicable in Linux land. It just requires a little bit of extra discipline on our part.
Thank you for putting it all together, and I look forward to your updates!
We know that the likes of Pixar or LANL use NVidia on Linux, for them to take Linux seriously, but is there information who the important FreeBSD and Solaris customers are? Is it The Weather Channel's FreeBSD IntelliStar system that motivates NVidia to support it? And what about Solaris?
I mean, I want to believe NVidia supports FreeBSD and Solaris because they already support X11, but these are three different kernel drivers. With a business like NVidia, which isn't supporting open source graphics stacks like AMD or Intel are, I have to ask myself what the commercial motivators are.
I agree with qwertyulop924 who points out its nice being able to understand the system's configuration. Now though, I'm with johnchristopher, manually configuring Xorg is where I reach my limit and just want it to be magically done for me.
My impression was that Xorg has obviated the need for manual configuration in all but the most extreme cases. Multiple monitors are easy with xrandr, but I'm not sure how multiple graphics cards will work.
When you stop "messing" and need to do actual work, you are going to really appreciate a system with sane defaults (graphic environment working out of the box, drivers pre-installed, plug&play and audio stuff that just work) that can work predictably.
Of course, no system is immune to stupidity: yes, even on Ubuntu you must be aware of what are you doing and what consequences it will have.
For me, avoiding third-parties repository and going from LTS to LTS solves 95% of the problems, and in exchange I have a stable desktop machine that works all the day, everyday.
I have been messing around with Slackware, FreeBSD, Gentoo and NetBSD in the past and I am now a happy Xubuntu (and ubuntu-server) user.
# Handle Unicode on removable media
Every time I try Linux, nothing makes sense to me. Why is there a weird, unfriendly `ip` command instead of `ifconfig`. Why is systemd doing the "* Waiting for some bullshit … [∞ seconds]" thing on shutdown instead of killing everything. Why does the bootloader (which is now part of the systemd project, of course) use EFI variables instead of just putting itself at /EFI/BOOT/BOOTX64.EFI. Why is there so much crap exposed as mounted filesystems. Why is there no separation between the base system and user packages (/usr/local).
Modern GNU/systemd/Linux just doesn't feel right.
Ifconfig had been deprecated for what... over 5 years now? It's a bit different, but if you need it often, you'll either learn in a few days or can just use an ifconfig-compatible wrapper. There are projects that do that already.
The kernel moved to rtnetlink and ifconfig simply doesn't work the same way. Interface labels vs multiple IPs is just one very visible difference.
ip over ifconfig doesn't bother me that much: they were both confusing and ill-documented in their Linux incarnations, IMHO. The mounted crap I think is kinda nice for system introspection, although BSD and Solaris users have been known to disagree.
As for everything in /usr/bin (and my stuff in ~/bin and /usr/local/bin), I think this was a good idea for Linux (but not the BSDs) to do: On Linux, there is no real separation between /usr/bin and /bin in any case (/usr/local/bin is another matter, but it's separate on my system. I think /sbin should have been kept separate as well, but I'm untangling that particular knot: I could do it, but it'd be a mess).
So yeah, systemd is the devil, but the rest I kinda like.
Because that's the right way to do it (for non-removable discs), and the way that you mention is the wrong way to do it.
Systemd is now just killing everything if you log out or try to shut down the system, which caused a lot of people to run amok over that, too.
Now, once all your programs can be immediately killed, why would you ever not want to do that?
Note that kill(1) just sends an arbitrary signal to whatever process(es), it doesn't have to be SIGKILL.
Please say you're joking. This is frightening.
You're late. (-:
Well thats interesting...
Gtk3 may be faster in theory due to GPU acceleration as a possibility, but when Gtk 3.20 for a split second shows a black rectangle for each new dialog while it's opening, I have a hard time taking their gpu acceleration argument seriously.
I tried building Firefox 48 with gtk2, but it crashed in the file dialog, while the gtk3 build is slower and introduces gui regressions (yes, I've reported the gtk3 bugs). Right now I cannot move past Firefox ESR with gtk2, and I hope I can still use Firefox next year.
What I'm saying is that GNOME3's stack (especially Gtk3) doesn't seem to work outside GNOME3 as compatibly as Gtk2 does, and it may be what's intended, if past communication from the GNOME dev team is any indication.
I predict that someone will get fed up enough to revive the Firefox Qt port, since Qt doesn't break as much between releases, and it doesn't conflict with Mozilla's plans to drop GTK2 support. The memory overhead of Qt is absorbed within a modern browser's memory needs.
GTK3 drags in way too much of gnome for comfort, but I don't want to drop all GTK3 apps, so I have to put up with it.
When GTK3 and even Qt5 go user-unfriendly and dev-unfriendly ways, it's no wonder there's many immediate mode ui library projects that are popular or actively developed Haskell FLTK bindings.
https://www.freshports.org/x11-toolkits/gtk30 It's "lean" by default, you can't even make it "not lean".
They're big, but I wouldn't call them "user-unfriendly and dev-unfriendly". QML/QtQuick is the best GUI development thing ever.
P.S. I was building Firefox from ports for a while, just to get GTK3 support earlier than they turned it on by default :-P
For WM, I use i3. If you don't mind tiled, I'd highly reccomend it. It's great, the docs are great, and the config file is easy to understand, so after the base setup, you don't have to worry about it.
XFCE, TWM and sawfish are pretty cool, if you're not into tiled.
Yes, Tk just works for gui and is underappreciated.
wx's default backend is gtk (2 or 3) and they have an experimental Qt5 backend now, which is unsurprising given GTK3's state. So wx doesn't help, unless you can make the Qt backend work (Qt5 is so modular that it's often a pain).
Now I just want a company/org that will in conjunction with a decent machine setup. Basically I want Sun Microsystems back where they have some great hardware engineers put together a desktop system, and great software engineers that can put together a well integrated and desktop environment.
Now a laptop or ARM chip, on the other hand...
heck, just stick process monitoring into the rc.d model. You'll get the Best of systemd. Especially if you don't take the Rest of systemd.
The features of supervisord are very nice, the simple config, the password protected web interface for semi-sysadmin users to access and restart their memory leaking Java processes. Basically what you list as killer features.
On the other hand its not ready for prime time as a /bin/init replacement, I don't NEED the features they're just nice, and the only thing more annoying than having to learn all the peculiarities and bugs and workarounds and syntax of one init system, is having to learn two init systems.
I can imagine a world where freebsd base uses rc and "Everything in ports and pkg-ng uses supervisord". I'm not sure if I like it or dislike it, but it is at least imaginable.
In my infinite spare time I was writing a compiler that translates supervisord.conf files into shell RC files. Most of the time its pretty simple.
Frankly, even SMF would be better. For all its faults, its still got a good idea of its place: It's an init system, no more, no less.
Here is a list of things I would be concerned about my init system doing: anything other than being a good init system. By coincedence, that's exactly what systemd does.
The goal of systemd was to eliminate the differences between Linux distributions. FreeBSD doesn't have that problem, it's not a standalone kernel, it's developed as a whole base system.
Ironically, this means that systemd is the most BSD-like thing that ever happened to Linux userspace. As in, everything developed together. If only it was better quality and not overcomplicated…
As you can see, one doesn't actually need to keep all of the rc.d scripts. I manage well without any of them, in fact, including running desktop GUIs on PC-BSD under service management.
logind is a much misunderstood part of systemd. It is somewhat difficult to state that it is "broken", given that there really isn't a spec for it to be compared against for conformance, and it is largely the only implementation in existence. It's what Ian Sutton reported as being the most difficult part of SystemBSD, as noted in https://news.ycombinator.com/item?id=10176275 and as I said beforehand in http://jdebp.eu./FGA/debian-systemd-packaging-hoo-hah.html#s...
There are a few things about it that can be stated to be wrong, though, inasmuch as they interfere with the operation of the services that service management is supposed to be managing. The limits on the number of threads that database services and suchlike can run are a largely unreported problem, for more on which see https://news.ycombinator.com/item?id=11675129
And as I pointed out in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=825394#221 the problem that did reach the news is something that one fixes properly by correcting the incorrect behaviour of logind.
Personally, for resolving proxy DNS service and content DNS service I use modified versions of Bernstein's dnscache and tinydns. The modification involves my own well-known, and years-old, patches; and making dnscache and tinydns capable of receiving their listening sockets as already-open file descriptors, via the LISTEN_FDS protocol, making it possible to integrate them with UCSPI-style tools that open the sockets for them.
> And as I pointed out in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=825394#221 the problem that did reach the news is something that one fixes properly by correcting the incorrect behaviour of logind.
I was referring to this problem with systemd-logind, as I had forgotten about the earlier one: https://news.ycombinator.com/item?id=12333775
Matt Macy already did a port of both pieces; they're ready and sitting in the NextBSD repository: https://github.com/NextBSD/NextBSD .
It works pretty nicely, except that the battery discharges from 100% down to where the laptop shuts down in just 1 hour (pretty much on the second), and also, suspend doesn't work of course. I also have not found out how to get the Fn-buttons to work for screen brightness and such. Also, audio over Bluetooth does not appear to be supported in FreeBSD 11.0, so I can't use my wireless headphones.
Things that do work include:
- The fingerprint reader, thanks to security/fprintd and the security/fprint_demo tool.
- Webcam using cuse4bsd compiled from upstream source and multimedia/pwcview. The cuse4bsd in the ports collection does not work with my camera. pwcview supports up to vga (640x480) resolution and 30 fps, and this works using my camera. Not sure what the real max resolution and frame rate of the webcam is supposed to be but this is good enough for me.
- Hardware accelerated 3d graphics using the proprietary binary driver by Nvidia.
- The most important GUI applications I need all work, including but not limited to; rxvt-unicode, Mozilla Firefox, Chromium, LibreOffice Writer, Blender, Inkscape and VirtualBox.
- External monitors connected to the DisplayPort.
- Built-in WiFi.
- The SD-card reader.
- Speakers, as well as the audio jack. Using audio/pavucontrol, I can play from multiple sources to different destinations at the same time.
There are some parts of the hardware that I have not yet tested, including the built-in 3G modem, because I do not currently have a subscription with a data plan. (My cell phone is not a smart phone, I use an iPod touch on WiFi instead and get almost the same experience I would with an iPhone.) I have also not yet tested audio over DisplayPort as far as I can remember.
Currently, Blender can not be found in the binary packages provided by FreeBSD, even though it is in the ports tree, but that's no biggie since I'm building all the packages myself using Poudriere anyway, because I have some options which I want set differently from what they are set to for the packages in the official repositories.
I intend to figure out how to get suspend working and how to get acceptable battery life eventually. I think most of the bits of what is needed have already been written, and it's mostly a matter of finding out where these things are and how to enable them.
In order to have an environment that I can easily modify and recreate, I forked the FreeBSD source tree and ports tree on GitHub, and I made an additional repository detailing my configuration.
Here is a screenshot I took of my laptop yesterday: https://raw.githubusercontent.com/eriknstr/ThinkPad-FreeBSD-...
Here's my post about the laptop: https://unrelenting.technology/articles/freebsd-on-the-think... — not fully up to date though: I'm using ZFS only now, with boot environments (no GRUB required, it's fully integrated into the FreeBSD EFI loader), and powerd++ https://github.com/lonkamikaze/powerdxx
Brightness works great with Intel graphics. I haven't been able to adjust brightness using the nvidia driver (on an iMac)
I too use root on ZFS. Boot environments and using powerd++ are things I've been meaning to but have not yet got around to.
I installed OpenBSD because someone said it supports think pads better and they were absolutely right, my machine is cool, quiet and the battery lasts ages. OpenBSD also requires X11 to be installed for ports to work, so maybe it is designed more for desktop use?
For reference I'm using a Lenovo Thinkpad x201s
They make their driver for Solaris though :D
The time I have spent doing things like
apt-get remove unity* libqt5*
Notice, by the way, how easy and intuitive plain text configs done right are.
Each time I see systemd processes in some ps output I feel nothing but despair and disgust.
Not saying I'd want to walk my grandma through a freebsd setup, but it's hardly without merit. There's a lot to be said for controlling your own computer.
No machine works perfectly after booting, as the machine is just an instrument to do some WORK. It is the nature of the work that means I have to change the instrument from time to time. FreeBSD, being an open system with a detailed manual allows me to change the machine easily and in a determined manner.
I still haven't figured out how to change many fundamental things on Windows, as it is designed to keep these options hidden from the user.
There are trade-offs for each system. For users who want the power of doing the things how they want to [within limits], FreeBSD is great. If you just want to play Counter-Strike after installing it, well, you can buy another machine for doing that.
I wouldn't say everything worked.