Wednesday, May 13, 2009

Book Review: The Best of FreeBSD Basics

Having read Lucas' Absolute FreeBSD any other BSD book I read ends up being measured against it.

The Best of FreeBSD Basics (TBFB) is essentially a compilation of Dru Lavigne's articles at O'Reilly Media and this is exactly the books weakness: there is no backbone, no underlying purpose or scope. When one picks up Absolute FreeBSD BSD that person will know that network/system administration is the book's focus, when one pick Builing a Server with FreeBSD 7 service installation and configuration is the core, with BSD Unix Toolbox the reader will acquire knowledge on tons of system configuration commands.

However with TBFB its purpose isn't discernible; sometimes it's a tip, on occasion a tutorial, at times advices, all in a very disconnected way between each other. Also, sometimes during the book you'll come across stuff that is just duplicated from a previous section/chapter which is just wrong.

The book does have its shinning stops. It brinks with Dru's love for the operating system by presenting small details that you won't find in any other BSD book. In this perspective the book is an adventure through the wonderful world of FreeBSD much like a blog dealing with one's notes of his adventure in exploring a new OS (like my own blog for instances).

Noticeable is the fact that some of the articles were "updated from FreeBSD 4 and 5 to reflect the usage on FreeBSD 6 and 7" as the book's back states. And that just comes back to haunt you, namely when csup and supfile usage is discussed in a way that's just outdated for FreeBSD 7.

Now... do I recommend it? First get Absolute FreeBSD. Next if you are into system administration get BSD Unix Toolbox and get yourself Building a Server with FreeBSD 7 if you are planning on building a personal server. After you've gone through these dive ahead and get The Best of FreeBSD Basics.

As an end note, I'd really like to see a BSD book by Dru written from scratch maybe even focusing on the BSD certification initiative. Now that would be pure gold ;)

Monday, May 4, 2009

HowTo: Enemy Territory on FreeBSD

Update 26/03/2012:
With the introduction of Fedora 10 Linux compatibility environment, step 3 isn't required.
Update 10/05/2012:
Ever since EvenBalance stopped supporting Enemy Territory step 5 should be ignored. Please refer to HowTo: Get etkey and Punbuster files on Enemy Territory. If time permits I'll create a new post on how to install Enemy Territory for FreeBSD 9, until then ignore steps 3 and 5.

Wolfenstein: Enemy Territory is a free multiplayer FPS that takes place in the World World II pitting two teams (Allies and Axis) against each other for victory.

The game was originally going to be a retail expansion pack for Return To Castle Wolfenstein but the project was cancelled, Activision however decided to release it during 2003 for free.

In this post I'll detail the steps required to install and update Enemy Territory, the ET Pro mod, PunkBuster and XQF on FreeBSD.

1) Install and update Enemy Territory

Become the superuser:
% su
And install the required port:
# cd /usr/ports/games/linux-enemyterritory
# make install clean
This will pull Enemy Territory's installer from the web. If any port options pop up stick with the defaults and choose OK to continue.

If you don't have the Linux Compatibility Environment proceed to step 2, otherwise jump to step 3.

2) Enable the Linux Compatibility Environment

Enemy Territory needs both FreeBSD's Linux kernel module and near-minimal installation of a Linux distribution. By default, FreeBSD 7.x uses Fedora Core Linux 4.

The linux-enemyterritory port pulls in linux_base-fc4 so we just need to load the Linux kernel module at boot time. To do so run:
# echo 'linux_enable="YES"' >> /etc/rc.conf
3) Install Linux X.Org libraries

Wolfentein: Enemy Territory requires Linux X.Org libraries to load properly. To install them run the following command:
# cd /usr/ports/x11/linux-xorg-libs
# make install clean
4) Install the ET Pro mod

Next let's install Enemy Territory's best mod: ET Pro.
# cd /usr/ports/games/linux-enemyterritory-etpro
# make install clean
Now ET Pro will show under the Mods options in the games' main menu.

5) Update PunkBuster

Now start the game, create a player profile and quit. By doing so a .etwolf directory will be created in your home directory which includes a folder containing PunkBuster.

Point to http://www.evenbalance.com/index.php?page=pbsetup.php scroll down and follow the Linux download to download PunkBuster update application.

Change directory to where you've downloaded the pbsetup.run and:
# su
# chmod +x pbsetup.run
# exit
% cp pbsetup.run ~/.etwolf/pb
% ./pbsetup.run
PunkBuster will ask to fetch updates and prompt for a License Agreement. Afterwards point to "Add a Game option", choose Enemy Territory and its installation path.

On the main PunkBuster window click on Enemy Territory to select it and press "Check for Updates". Quit PunkBuster after updating it.

6) Install XQF

One can use the in game browser to search for server. However I recommend installing and using the XQF Game Server Browser as it a lot more flexible and complete:
# cd /usr/ports/games/xqf
# make install clean
XQF should identify the installed Enemy Territory so select the game and press "Update" to have XQF pull an updated server list.

I tend to play on www.Enemy-Territory.com by www.4netplayers.de server ;)

7) Fix sound issues

ET uses Linux's OSS sound infrastructure so you might come across issues. Here's how to enable sound on Enemy Territory under FreeBSD 7.x:
% su
# sysctl hw.snd.compat_linux_mmap=1
# echo "hw.snd.compat_linux_mmap=1" >> /etc/sysctl.conf
# exit
With the above commands sound will be enabled immediately and also at boot time.

8) Setup widescreen resolution

If you have a widescreen monitor follow the instructions on my previous blog post HowTo: Widescreen resolutions on Enemy Territory.

And we're done!

See you on the battlefield I'll be the one with the tangram"FreeBSD~ name :D

HowTo: Upgrade FreeBSD 7.1 to 7.2

Disclaimer: this post is for those that instead of using FreeBSD's excellent documentation maintain the bad habit of googling for things already covered in the project's official documentation. This is more or less a copy-paste of the FreeBSD 7.2-RELEASE Announcement instructions for upgrading 7.1 to 7.2.

These are needed steps to upgrade, through the binary upgrade method, the kernel and userland utilities to 7.2-RELEASE:
  1. % su
  2. # freebsd-update upgrade -r 7.2-RELEASE
  3. # freebsd-update install
  4. # shutdown -r now
  5. % su
  6. # freebsd-update install
  7. # shutdown -r now
On step 1 we've started of by becoming the superuser. Step 2 initiates the freebsd-update utility pointing the upgrade to 7.2-RELEASE, after that we proceed with the installation of the kernel on step 3.

Upon rebooting the new kernel is enabled and we move into step 6. Here we end the upgrade process by updating the userland utilities.

That's it!

If you found this post useful that's actually a bad news: you aren't reading the project's official documentation! So please point to http://www.freebsd.org and educate yourself on FreeBSD ;)