So I was thinking. Why use FreeBSD? Why not use Linux or Windows. Well, I looked around the net to see what others thought, and found that they were all pretty far off.
Why use FreeBSD? Is it better? Is it more stable? Is it more secure? Is it more geek? Does it have a better license (BSD)?
I think that it is all of these, and it is none of these. I have seen people say that FreeBSD is no good for the desktop. See my post about post install configuration, there is a screenshot that I think will prove otherwise.
FreeBSD is about doing it yourself, and putting in the pieces that you want, and leaving out the ones that you don't. I was looking at an Ubuntu forum, and people were discussing the various merits of Ubuntu, and such. There is one thing that you absolutely must understand about FreeBSD. It DOES NOT protect you from doing something stupid, because to do so, would also prevent you from doing something clever.
The underlying levels are not abstracted away by all of these very helpful tools that automagically configure everything for you. At this point in the game, Ubuntu is basically the Linux equivalent of Windows. When I started using Linux, I did so to learn how to hack. I wanted access to the underlying system. This was something that I did not feel (at the time) was obtainable on Windows. I had no idea what the word hack really meant until I used FreeBSD for the first time. It is much more than seg faulting programs in an attempt to hijack memory space. It is a true love of discovery. Why did they put this in there? What does it do? Why do it that way? Could it be done better this way? A great current example would (and this is a tangent here...)be, XFCE4. I love XFCE, but they removed HAL support in favor of switching to udev. Here is the problem, udev is Linux only. No more auto-mounting in XFCE4 for FreeBSD. Wrong! There are several people that have hacked at it to find a viable solution using other underlying technologies in the base system, and have found some really ingenious ways to do this. I will be writing a post about this over the weekend.
The point is, there is no glossy veneer unless you paint it on yourself. This is a double edged sword, FreeBSD is very trim, and relatively bloat free, however, this comes at the cost of YOU having to know what YOU are doing, or at the very least you have to be willing to learn. FreeBSD has taught me more about how computers work and behave than I have learned from any other source aside from the C programming language. All of the tools are there, you have to be able to use them correctly, and sometimes in ways other than intended. FreeBSD is a great Desktop operating system. I am writing this post on a FreeBSD machine right now. If you find that it is not a great Desktop Operating system, perhaps you are just not very good at configuring it to be a great Desktop Operating system.
FreeBSD is STABLE, I mean like you read about son! Why? Simple, packages don't get included until they are intensively tested to be reliable. The base system is DESIGNED around the kernel, and is part of FreeBSD. With FreeBSD you don't get the kernel and then pick the base system to go with it. They are distributed together, as a complete package. It is not a potpourri of GNU packages distributed with a standard Linux kernel.
Use the ports tree and you will scratch your head and say, "I thought this was at version 5.1, why is it only at 4.9 here?" Perhaps you don't get all of the relatively untested bells and whistles that have been included in Whizbang5.1, but you can be comfortable knowing that the 4.9 version in the ports tree is rock solid, because it has been tested for all kinds of issues, including unhappy interactions with other programs. This is why the ports tree is not packed with the most up to date software you can find. If this is functionality you just have to have, then perhaps you need a rolling release like Arch Linux. This is the distro that I was using when I started this blog. Things were going great until that bleeding edge currency turned around and bit me in the butt, and I lost a lot of data. I immediately downloaded FreeBSD, and said "never again."
The thing to take away from this is not that FreeBSD is better, and Linux is worse. That viewpoint is too narrow. It is not about which is best. It is about which is best for YOU. For me it is FreeBSD, and if you keep reading this blog I will be doing quite a bit of posting on how to get it to do what you want it to do. That does not mean that Linux will not be included. There may even be some posts about Windows. Which brings me to another point. Windows is a great product, if you can afford it. I cannot. I love when I see some newbie Linux user bad mouthing Microsoft, and making all of these statements about how crappy it is, and how you can't get to the guts, and blah blah blah. It is just different. FreeBSD is as different from Linux under the hood, as Linux is from Windows. This is the viewpoint that I am trying to get across here. It is not about better, it is about different. What works for one person may not work for another. Some of my work demands stability. Another person may be able to make a trade off for being current vs. being stable. I like configuring my systems down to the smallest screw. Some people don't. I like the journey to getting something to work the way I want it to, some people just want it to work.
Many different roads, but they all lead to the same place. I'll see you when you get there, and remember, "The operating system that works best for you, is the best operating system in the world."
Thursday, March 22, 2012
Wednesday, March 21, 2012
Update Post Install Config
Update, Cairo-Dock does work with the XFCE4 compositing manager, it has to be run with the -c flag:
% cairo-dock -c
% cairo-dock -c
FreeBSD Post install config
So here it is, the promised post about
FreeBSD post install configuration. This guide assumes that you are
already familiar with Unix like operating systems in general. If you
are completely new to FreeBSD, and find yourself getting lost through
this guide, see The FreeBSD Handbook
to get started. This was a base install, meaning that I did not
install any other applications aside from base, doc, and the system
sources. I did this to have more options when it came to installing
software later. I also did it this way because it is easier to get
DRM/DRI configured correctly if you don't install Xorg first. Which
brings us to our first point:
- DRM/DRI configuration for ATI with the goal of 3D acceleration:
Okay,
this works, but it doesn't work perfectly. I have still not been able
to get compiz-fusion to work, and I have compositing only with XFCE4,
but as that is all I wanted in the first place, this solution works
great for me. Cairo-Dock still does not work correctly, and I don't
know why. For some reason, it is not picking up on the fact that the
compositor for XFCE is running. Also some of the features for the ATI
cards will not work because of KMS, and the fact that FreeBSD does not
have KMS yet. There is a project under way to get KMS and GEM, but I
have a feeling that inclusion into the kernel is still a long way off.
So what is KMS?
Mode-setting can be done in kernel space (Kernel Mode Setting, KMS) or in user space (User-space Mode Setting, UMS). Doing mode-setting in kernel-space is more flexible and allows displaying of an error in the case of a fatal error in the kernel,
even when using a user-space display server. User-space mode-setting
would have needed superuser privileges for direct hardware access, so
kernel-based mode-setting increases security because the user-space
graphics server does not need superuser privileges.
All
of the newer cards have dropped support for mode setting in user space,
and have switched to KMS. There is nothing that can be done about
this, and if you have to be able to access this functionality, I would
highly recommend using Arch Linux as your distribution of choice. So,
moving along.
The first thing that needs to be done before you install anything is a quick edit to /etc/make.conf
Add the following:
WITHOUT_NOUVEAU=yes
Now, save the file, and navigate to /usr/ports/graphics/dri
# make && make install clean
Once this command completes, you can then navigate to /usr/ports/graphics/mesa-demos
# make && make install clean
This
should have installed the 7.6.1 mesa libraries on your machine. This
is crucial to having compositing and 3D acceleration. You can now navigate to /usr/ports/x11/xorg
# make && make install clean
All
of this is going to take quite some time to complete, so have a snack
and watch some TV, or catch up on your reading. You will have to
interact with the process selecting build options, so don't wander too
far off.
And the final item, navigate to /usr/ports/x11-drivers/xf86-video-ati.
# make && make install clean
Once this completes, run the command
# Xorg -configure
and copy the resulting config to /etc/X11/xorg.conf. Once
this process is complete, proceed with installing your WM of choice,
XFCE4 for me, and basic software like browsers, etc. I chose to use
pre-compiled packages for most of these, and compiled most of them later
once I got the Graphical environment up and running. After completion
run
% glxinfo | grep render
if all went well you should see:
direct rendering: Yes
OpenGL renderer string: Mesa DRI R600 (RS880 9712) 20090101 TCL
Or
some similar variation. If you see any information about a software
rasterizer, then there are some issues with the install of dri or mesa.
I have run into this error and just re-built mesa and dri.
Suspend/Resume:
And
this brings us to our next issue. Suspend/Resume. I had a devil of a
time getting this to work correctly, and after a large amount of
reading, I was able to come to a solution. FreeBSD uses sysctl to
manage various aspects of ACPI management, and these settings can be
configured at boot time by adding them to /etc/sysctl.conf, so the first thing to do is see what settings are available. Run the command
# sysctl hw.acpi | grep state
if
you see S3 listed in hw.acpi.supported_sleep_state, then you are in
luck, you can suspend. I chose to suspend on lid close, because that is
the most useful to me so edit the file /etc/sysctl.conf and add:
hw.acpi.lid_switch_state=s3
hw.acpi.reset_video=1
hw.acpi.reset_video=1
Resetting
the video fixes a nasty issue that arises when resuming, wherein the
monitor does not seem to want to work correctly, or sometimes at all.
Resetting the video via sysctl fixes this, at least for me, as with all
things mileage may vary.
The final step is editing /boot/device.hints and adding:
hint.psm.0.flags="0x2000"
This flag sets the bit that triggers HOOKRESUME which sends data to the mouse to wake it up. Other values are "0x6000" which triggers both HOOKRESUME and INITAFTERSUSPEND,(this will wake up the mouse and re-initialize it), and "0x4000" which triggers INITAFTERSUSPEND, which will re-initialize the mouse.
Getting Flash Player and Linux Compatibility up and running
Getting Flash Player to work is mostly painless. The first thing to do is load the linux compatibility module into the kernel.
# kldload linux
Once you have done this navigate to /usr/ports/emulators/linux_base-f10/
# make && make install clean
Next navigate to /usr/ports/www/nsplugin-wrapper/
# make && make install clean
Then navigate to /usr/ports/www/linux-f10-flashplugin11
# make && make install clean
Set up a symbolic link to libflashplayer.so in /usr/local/lib/browser_plugins:
# ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so /usr/local/lib/browser_plugins
You may have to create the browser_plugins directory.
Finally you have to install the plugin for every user INDIVIDUALLY as that user by running:
% nspluginwrapper -v -a -i
Once you have completed this step, restart your browser, and you should be in business.
Controlling Wireless:
This
is the easy one. If you are using wpa_supplicant, and you set up your
wireless adapter during the install, all you have to do is add your
networks to /etc/wpa_supplicant.conf and it will switch for you when you are in range.
I
hope that this helps someone to avoid some of the issues that I ran
into during my most recent post install. Here is a screen shot of the
finished system.
Monday, March 19, 2012
Coming Soon, post installation configuration of FreeBSD.
Topics will include:
DRM/DRI configuration for ATI with the goal of 3D acceleration
Suspend/Resume and correction of various issues that arise
Getting Flash Player and Linux Compatibility up and running
Controlling Wireless
I hope to have this finished in the next day or so. Most of this information is readily available on the internet now, but it is not consolidated anywhere, and has taken quite a bit of time to locate. Hopefully this will help someone else that finds themselves in my situation.
Topics will include:
DRM/DRI configuration for ATI with the goal of 3D acceleration
Suspend/Resume and correction of various issues that arise
Getting Flash Player and Linux Compatibility up and running
Controlling Wireless
I hope to have this finished in the next day or so. Most of this information is readily available on the internet now, but it is not consolidated anywhere, and has taken quite a bit of time to locate. Hopefully this will help someone else that finds themselves in my situation.
Wednesday, March 14, 2012
Tablet Computing
So this is completely unrelated, to fixing anything with Linux, as I am having an almost impossible time even figuring out how to create images for the thing, but I recently introduced myself to tablet computing. An interesting beast to say the least. I purchased an ASUS Eee Pad Transformer TFT101 from Tiger Direct, and it has been interesting to say the least, I have bricked the thing at least twice, and am now leaving it alone, unrooted, unfooled with, after having recieved the newest update from Android moving it to v4.0 ICS. If you have bricked your device, or you just want it back the way it was, head here. A few things that I did not know:
a) Android is a flavor of Linux
b) Due to this fact you can install Linux (arm architecture only) onto a phone or tablet in a chrooted environment, and piggy back off of the kernel running on your phone. If you want to install it on your Transformer if works a little differently, for information on that topic see: this page If there is a call for it I will post a tutorial on how to install Debian on a phone. I had issues with it, small screen, needed a stylus, soft keyboard was a pain in the keister, etc.
So, what do I need a tablet for? I have no idea really. I was thinking that it might be an interesting and paperless way to take notes in class, but so far I have not found a stylus with a point small enough to make that a feasible option. Right now this thing is a coffee table amusement for playing angry birds, and letting my kids draw on. After rooting it and installing ssh it did make a nice way to control my servers from any room in the house, mounting NFS shares and using it to watch video would be kind of cool too, but VLC for Android is still in development. It also does work pretty well as a reading application, I have a number of books on PDF, living on another home server, and using the tablet to download them and read while following along on my laptop is sometimes easier than displaying the pdf on my main machine, or laptop... However, all of this Android bandwagon nonsense did get me thinking, and researching, and I found out that Google has included a scripting layer for perl and python. As such, I thought that a tutorial on controlling one's phone with perl might make an interesting post, so look for it soon. Hopefully it will be more coherent than this one.
a) Android is a flavor of Linux
b) Due to this fact you can install Linux (arm architecture only) onto a phone or tablet in a chrooted environment, and piggy back off of the kernel running on your phone. If you want to install it on your Transformer if works a little differently, for information on that topic see: this page If there is a call for it I will post a tutorial on how to install Debian on a phone. I had issues with it, small screen, needed a stylus, soft keyboard was a pain in the keister, etc.
So, what do I need a tablet for? I have no idea really. I was thinking that it might be an interesting and paperless way to take notes in class, but so far I have not found a stylus with a point small enough to make that a feasible option. Right now this thing is a coffee table amusement for playing angry birds, and letting my kids draw on. After rooting it and installing ssh it did make a nice way to control my servers from any room in the house, mounting NFS shares and using it to watch video would be kind of cool too, but VLC for Android is still in development. It also does work pretty well as a reading application, I have a number of books on PDF, living on another home server, and using the tablet to download them and read while following along on my laptop is sometimes easier than displaying the pdf on my main machine, or laptop... However, all of this Android bandwagon nonsense did get me thinking, and researching, and I found out that Google has included a scripting layer for perl and python. As such, I thought that a tutorial on controlling one's phone with perl might make an interesting post, so look for it soon. Hopefully it will be more coherent than this one.
Subscribe to:
Comments (Atom)
