ZFS on Desktop – Which OS?

I’ve been thinking about this lately, especially after seeing this:

[root@einhart ~]# pkg_version -vIL=>
binutils-2.21 < needs updating (index has 2.21.1)
bitstream-vera-1.10_4 < needs updating (index has 1.10_5)
chromium-12.0.742.112 < needs updating (index has 12.0.742.124)
droid-fonts-ttf-20100214_1 < needs updating (index has 20110324)
exiv2-0.21,1 < needs updating (index has 0.21.1,1)
gawk-3.1.8 < needs updating (index has 4.0.0)
gcc- < needs updating (index has
gnutls-2.12.7_1 < needs updating (index has 2.12.7_2)
libidn-1.19 < needs updating (index has 1.22)
openjdk6-b22_6 < needs updating (index has b23)
p5-Net-DBus-0.33.6 < needs updating (index has 1.0.0)
p5-libwww-5.837 Fetching ‘/usr/ports/www/chromium’

To build Chromium, you should have around 1 GB of memory
and a fair amount of free diskspace (~ 1.5GB).

===> Vulnerability check disabled, database not found
===> License BSD LGPL21 MPL accepted by the user
===> Found saved configuration for chromium-12.0.742.112
=> chromium-courgette-redacted-12.0.742.124.tar.xz doesn’t seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch http://download.goodking.org/downloads/chromium-courgette-redacted-12.0.742.124.tar.xz
chromium-courgette-redacted-12.0.742.124.tar.x 0% of 114 MB 35 kBps^C

And did you notice that “you should have around 1 GB of memory and a fair amount of free diskspace”? Yeah, it does use that much memory to update a web browser. Something that takes few seconds on Windows and Fedora and few minutes on Ubuntu takes almost hours to do on FreeBSD. Downloading source notwithstanding, compiling it also takes long, long time.

If anything, this is why I hate FreeBSD. And you will mention use package except that there’s no H.264 video support and possible chance of conflicting package difference between my system and the buildbot. As much as I want to use binary packages, they come in unwanted forms:

* GNOME 2 pulls Samba4 for God knows why reason
* Some pacakges don’t have optimization enabled
* Mplayer doesn’t have VDPAU
* Some packages must be installed manually (Java, Opera)
* Portupgrade takes minutes to compute what to do (something which is done in seconds in Ubuntu)

As much as I can tolerate this shit, the very fact that VirtualBox under FreeBSD takes much more CPU certainly doesn’t help.

So, I guess I’ll try yet another OS. There are several options so here are overview of current choices.


* Extremely simple
* Up to date packages
* Highly customizable
* Stable ZFS


* Customization comes at cost: compile time
* No good virtualization option
* A package management that is comparable with slowpoke
* No flash (yes there’s linux flashplugin ports but it’s a joke)
* Awesomely slow video playback even optimized on Firefox


* Based on FreeBSD, has some of familiarity
* Binary packages that’s not too slow
* Stable ZFS


* Also no good virtualization
* Epic size of packages (eg. [a hundred megabytes for Firefox](http://www.pbidir.com/bt/pbi/49/firefox))


* Stable, greatest ZFS
* Zones
* Good VirtualBox support
* Flash support


* Complex
* Doesn’t survive trivial hardware change without Live CD/USB
* Outdated packages
* Non-existent packages
* Manual compiling of `mplayer` is a must since the defaults on various repositories are crap
* Still beta
* Doesn’t recognize FreeBSD’s GPT (at least on `oi_148`)
* Ugly freetype2 (no support for subpixel hinting apart of manual compile)

Ubuntu Linux

* Latest, greatest software
* Good software support
* Good virtualization


* Unstable ZFS
* Linux

Note that I only include Ubuntu in Linux category since it’s the only OS having both working nvidia driver and precompiled ZFS module, saving me lots of headaches.

14 thoughts on “ZFS on Desktop – Which OS?

  1. FreeBSD flash should work the same as in Linux once you set it up properly, the only issues I’ve had with it are that sometimes flash sessions persist longer than they should, but I wrote a flash kill script that I put in my crontab which solves the problem.  That said, a Linux user who I talk to also has that problem, so I’m not sure if that issue is even specific to FreeBSD.

    I use mplayer with vdpau and it works, and the flash video is very fast (eg. the same speed as in windows) in both firefox and opera.  If you are referring to “slow video”, maybe you are in the HTML5 youtube trial? I think there is something buggy about their particular implementation of HTML5 video, and even that might be fixed by now.

    FreeBSD’s package system has a very steep learning curve, but as long as you are willing to work with -STABLE packages, (which are updated about every two weeks) and typically use portupgrade, you won’t have very many situations where you will need to compile.  It took me years of not using packages before I realized the most important details of the packages system such that I could use it in practice, (eg. always use -STABLE packages, make sure the portupgrade sees the PACKAGE_SITE variable, use the proper switches on portupgrade to automate package installation, and try to avoid updating to address issues in /usr/ports/UPDATING until the packages are up to date) just not obvious at all unless you really understand portupgrade and the port tools very well. (If you have any specific questions I could help you, btw)

    I’m not sure what you mean by “slowpoke”, do you mean that it is hard to use?

    • FreeBSD flash should work the same as in Linux once you set it up properly, the only issues I’ve had with it are that sometimes flash sessions persist longer than they should, but I wrote a flash kill script that I put in my crontab which solves the problem

      Last time I tried, it crashes every few hours when I’m playing some web flash-based game ( http://tenhou.net ).

      and try to avoid updating to address issues in /usr/ports/UPDATING until the packages are up to date

      Thing is, the UPDATING document never mentions how to do update binary way. Or are you saying a normal portupgrade -aPP after few weeks will always do the job?

      I’m not sure what you mean by “slowpoke”, do you mean that it is hard to use?

      Last time I tried, doing portupgrade on a system with 100+ packages takes more than 10 minutes just to calculate what to be upgraded.

      •  I definitely get what you are saying, since I currently have 2297 packages installed, so it can be a pain.  What I do is I only update ports/packages for security advisories, when I want something, or when something important is noted in /usr/ports/UPDATING.  I agree that it could be a lot better, hopefully the culture of the project will be more open to uses who use packages exclusively.

      •  About the flash crashes: that is really frustrating, I really only use it for web-based video, although it worked well for a mario clone that I played a while ago.

        I wasn’t able to test the game that you noted as my Japanese reading is very limited, (I could only read the man/woman kanji, not much else) but that really is a bummer.

        If you are still using FreeBSD, it might be worth trying flash in firefox+wine, I used to do that until I got flash working to my satisfaction in regular firefox and opera.

      • I’d say that, generally speaking, take the same portupgrade commands that they give, but with P or PP added. (PP probably won’t be able to complete, at least for the dependents switch, since the higher level more obscure ports are less likely to have current packages, although usually not much. (They seem to put the highest priority on the ports with the most dependents)   The only issue is that you should check to see if the package itself has been updated yet, because otherwise portupgrade will default to ports when a current package is not available, which I don’t think you want.

        I have noticed that the build cluster gives notices on ports that I maintain about every two weeks, which indicates to me that they just went through a package building run.  I’m not sure, but at least in the most recent png note in UPDATING, they actually updated the packages within a day, although in the past I’m not sure if they had such a good track record.

        • in the end, binary package users are still considered second-class citizen – in contrast with the binary-only system upgrade (using freebsd-update) which available on (or before) the official release date and got nice explanation in related installation document.

          • Sadly, what you say is about the packages is true… Hopefully, I will get commit privileges in ports at some in the near future, so that I can help to address these issues.

            Anyway, I know it seems like I’ve been playing the devils advocate, but I think your critiques are actually very good, and I’m keeping them in mind.  Admittedly, they don’t affect me much personally because I don’t update my packages very often, but I’m sure that most new users would not have the patience or the knowledge that you have.

            I haven’t used the pkgng yet, so I’m not sure to what extent it addresses many of the package issues that you brought up, but I’m hoping that the project as a whole gives packages first-class status as you noted.  I think a big problem is that the desktop just isn’t a priority yet, (although hopefully the corporate users of FreeBSD will give pressure to make packages a higher priority, or donate more build clusters) and hence building rather than packages is the norm.

  2.  BTW, I agree that it is annoying to compile when you want customization on certain ports, but I would just try to avoid customization unless you really need it (eg. for the most important features to you), and set the USE_PORTS and USE_PORTS_ONLY variables for portupgrade accordingly.  It is really too bad that they don’t provide packages faster for chromium, (at least for security advisories) which takes practically forever to compile, but hopefully as the community gets bigger or there are more build clusters, perhaps then ports with common alternative options can be supported with packages as well. (I think it is a great idea for an alternative build cluster that generates packages for chromium and other popular ports with the most popular alternative options)

    • For starter, portupgrade is slow as hell (as I mentioned on other post). Not customizing port is quite annoying – on desktop side there’s at least WITH_LCD_FILTERING in freetype2 which I need to turn on. And on server side, VNC option in VirtualBox and database support in Pure-FTPd.

  3. I’m also not experiencing slow performance on my FreeBSD Virtualbox host, (although I haven’t compared that specifically against windows recently) I suspect it might have been an issue with the virtualbox port at the time when you last used it.  I’m not really in a good position to judge performance though, since I’m using full disk encryption which should make it very slow.

    I assume that you are using the binary Nvidia driver, I am using that and it works very well.

  4. For uses of portupgrade, I rarely do the whole system at once anymore, it is waaaay too much trouble as you noted, I just update ports gradually over time.  For example, when I wanted to update png based on the recent  note in /usr/ports/UPDATING, I did the command:

    sudo -E portupgrade -Prf graphics/png

    and to resume:

    sudo -E portupgrade -Prf -x ‘>=png’ graphics/png

    For most normal upgrades, for example I want to upgrade a something, instead of “make install”, I do:

    If I want dependencies included:
    sudo -E portupgrade -PR name-of-port

    If I want it to force:
    sudo -E portupgrade -PRf name-of-port

    I actually wrote a series of emacs modes integrated with a file manager that I wrote in Emacs that makes it easy for to administer, and even configure the ports as well, so I don’t memorize the commands very often, just execute them through my ports tree periodically.

    I agree that portupgrade is kind of slow, I suppose for the database reads and writes, hopefully the new package system will address that issue, but I wouldn’t hold my breath.

    • I should mention that those portupgrade commands that I noted are more like “make reinstall”, for “make install” I do the same commands, just with portinstall instead.

Leave a Reply

Your email address will not be published. Required fields are marked *