Archive for October, 2009

Arch Winix

Linux has always piqued my interest. Unfortunately, I was never willing to give up Windows because of my fondness for gaming. When I quit playing World of Warcraft over this past summer, my first instinct was to ditch Windows as well. Kick two bad habits once, right? I started with Ubuntu‘s Jaunty Jackelope, which whetted my Linux appetite. However, in the following months, I found myself getting bored and frustrated with the lack of control present in system. It’s great for some people, but for similar underlying reasons I ditched Windows, I felt it was time to move on to something bigger and better. Enter Arch Linux.


I’ll admit that installation was slightly daunting the first time around. Unlike Ubuntu, the “Live CD” drops you into a command prompt. You’re given 2 helpful hints: The users ‘root’ and ‘arch’ have no password and run ‘/arch/setup’ to install. Welcome to flavor country. Really though, the installer is fairly simple, and as long as you complete every task on the list, the install will go well. After I got my packages downloaded and installed, I got excited about the next step: Configure the system. I figured I’d get some sort of list of options to mull over and confirm. Wrong. You get a list of system config files and your choice of Vi or Nano. It’s also mentioned that you’re allowed to dump out to another tty (using alt+f-#) to edit “other” system files. What system files? Where am I? If you make it past the spiked pit, err config, you set your root password, install GRUB, and you’re done. Hurray! Back to the command prompt where you’re told to reboot. Wait, what? I don’t have a desktop yet? Oh god, where’s my X Server? You’re left feeling like you’ve just been violated.


I jest, though. The documentation in Arch’s Wiki, in this case the Beginner’s Guide, is amazingly detailed and helps you through every step of the way. It guides you through the base install and helps you to build the X-Server, install video drivers and find a suitable desktop environment. The wiki continues to amaze me with the amount of useful info it provides. Want to install Samba? No problem. Not happy with your network management and you’d prefer Wicd or netcfg? Easy. Need a detailed tutorial on the ins and outs of NFS? Done. Want to build a mail server with Postfix backed up onto MySQL and with SquirrelMail for web access? It’s all there.

I just discovered recently that ManDB is more complete, with more info pertaining to a programmar’s view of Unix. For example, section 2 of the read and write functions don’t exist in Ubuntu. This may not seem immediately useful to everyone, but I’ve been dying to see those pages for quite a while now given their pertinence to writing assembly in Linux.

Architecture and “The Arch Way”

The first thing I noticed as a difference as far as system functionality was that Arch uses a BSD style init. WTF does that mean? Run levels still exist, of course, but you’ll find that everything that you once found in Ubuntu’s /etc/init.d/ is in Arch’s /etc/rc.d/. Instead of having shell scripts to install and uninstall services to various runlevels, you have /etc/rc.sysinit, /etc/rc.conf, /etc/inittab, and /etc/rc.local for your startup scripts. rc.conf is the real workhorse, controlling your extra hardware modules, network setup if you use the ‘network’ daemon, and your daemons.

Above all else, an element of control is ubiquitous in system management. Example: your daemons are kept in an array in rc.conf — the order of the daemons determines the order that they startup and shutdown. Pacman, when doing updates and installs, will never touch your config files. Instead, it leaves a config file with a .pacnew on the end. Its up to the user to run a diff and figure out what’s changed. Of course, given the element of control comes more responsibility. You have a full fledged root account on this distro, and you’ll definitely put it to use. Double check your spelling, and make glorious backups.

Another minor point: Something I noticed early on is that Arch is fairly aggressive in their kernel building. By default you’re given a low latency RCU implementation, which on a high level, means that more things are crammed into the CPU, and faster. That’s one of the items that compelled me to recompile Ubuntu kernels. A 2 hour process every few weeks is now less “necessary”. I’m sure that can only mean that someday soon I’ll be wading through my module list and recompiling to strip out the unnecessaries.

Package Management

Pacman has a slightly steeper learning curve than apt-get, but in practice, it’s far a more logical system. Execution is specified as an operation followed by options, all of them being a single letter. The command ‘pacman -Syu’ will do a full system upgrade — the equivalent of ‘apt-get update;apt-get dist-upgrade’. Upgrade didn’t go so well? Just run ‘pacman -Suu’ and you’ll be downgraded. The Q option prints your locally installed packages. Qs searches it. Ss is similar to Qs, but searches the repos. Check out the Pacman Rosetta of package management.

More points in favor of pacman. There are over a dozen wrappers for pacman that make it even more powerful. I use two of them, and really, I only need to use one. Powerpill implements pipelined downloads. Yaourt (Yet AnOther User Repository Tool) does everything pacman does, but adds improved search features as well as seamless access to the AUR (see below). I still use powerpill on a daily basis, but yaourt should do be doing everything. Yaourt’s config allows you to modify what it acts as a wrapper for. Better yet, so does powerpill. I have pacman-color (just adds color to pacman), powerpill, and yaourt all installed right now. Yaourt wraps powerpill, powerpill wraps pacman color. Swanky.

Repositories themselves are FAR simpler than Ubuntu. No need to go out and find a PPA every time you want to install a new program because you fear the uncleanliness of compiling and installing from some noodle noggin’s make file. Arch, by default, includes 4: Core, Extra, Community, and Testing (not enabled by default). The AUR (ArchLinux User Community Repository) also exists, which is a community maintained repo of unsupported (by Arch devs) programs. You do have the ability to add further repos, but they’re extremely rare, and I can’t see a point because of ABS.

Makepkg is what I consider to be one of the most excellent parts of Arch. Armed with a properly formatted PKGBUILD and .install file, makepkg will create a pacman munchable package out of any source code you want. Run ‘pacman -U myprogram.pkg.tar.gz’ and pacman will install and maintain it. The makepkg system ties in heavily with the ABS.

ABS is the Arch Build System. The command ‘sudo abs’ builds and/or syncs the ABS tree. The “tree” is a whole bunch of directories named by packages under /var/abs/, all separated out by repository. The list bears a striking resemblance to the contents of the actual repositories. Each directory holds a PKGBUILD file and some other basic information describing the package. Want to rebuild a package with some extra options? Maybe you need to patch a source file? Or maybe, you belong with the Gentoo crowd because you just want to recompile everything under your own architecture to squeeze out those last few IPS.

Real example: GNOME 2.28 changed some functionality in gnome-screensaver that VLC used to inhibit the screensaver while watching a movie (GNOME says its VLC’s fault for using an outdated poke function). After much searching, I found a patch through Launchpad and extracted the necessary bits (reworking it slightly for my line numbers). Navigate over to /var/abs/extra/ to grab the gnome-screensaver-2.28 branch, and then alter the built script in the PKGBUILD to include the patch file. Run makepkg. Not 5 minutes later, I have a patched and installed gnome-screensaver-2.28. Add it to the IgnorePkg array in /etc/pacman.conf and VLC inhibts dat shit like a pro.


Despite having a smaller community than Ubuntu, the members of said community are far more useful than your average Ubuntu user who’s just coming over from Windows looking for a Virus free environment. Arch relies on the dedication of this small community to keep the OS alive. The forums are solid, but make sure to do your homework before posting. Don’t be a help vampire. The admins know a ridiculous amount, and developers can be found there on a somewhat routine basis. Others frequenters have been dubbed ‘Trusted Users’, which means they’ve contributed to development and the AUR.

Jerry’s Final Thought

I spent a buttload of time paring down Ubuntu to a point where I was almost happy with it. I teetered on a point where removing anything else would basically destroy the system. I hated that I couldn’t remove Firefox because the ‘ubuntu-desktop’ package needed it. Pro-tip: don’t remove that package. Arch is the polar opposite. Over a weekend, I built Arch up to the point where I’m only running what I need. By design, it looks an awful lot like my Ubuntu install did, but runs a lot faster and more smoothly. To top it all off, I have a better understanding of how my system operates, increasing my ability to fix breakages.

I thought I might manage to get a section in here about things that I missed from Ubuntu. I have no regrets.