September 19, 2006

My Gentoo odyssey

Author: Joe Barr

Gentoo is a Linux distribution unlike any other I have used, not just in terms of how it does things, but in the philosophy which drives its design. Gentoo doesn't ask what it can do to make things easier, it asks you exactly what it is that you want it to do, and then does precisely and only that. I gave Gentoo a good try, but I won't be sticking with it. Why not? I'm glad you asked.

When I began my Gentoo adventure, I believed that the main difference between Gentoo and the other distributions I've used (Caldera, Red Hat, Mandrake, Xandros, Storm, SUSE, Debian, Slackware, and Ubuntu) was that it was a roll-your-own distro, requiring you to compile everything you use. But after struggling with Gentoo for 10 days, I realized I was wrong.

I began on a Friday and spent the weekend doing Gentoo installs -- ranging from the ultra-fast minimal install (live CD) to a partially pre-compiled Gentoo Reference Platform install from the live CD. On Monday I decided I was Gentoo-savvy enough to use it on my production desktop platform. I even joked with my co-workers about it, saying that back in the day, Gentoo users first had to rip the source code from the bone with their teeth before compiling and installing it, but now the live CD had sissified the process to the point that anyone could do it.

I exaggerated the ease of installing Gentoo. For a proper Gentoo install, you'll need to read the fine manual. Read it a couple of times. Cover to cover. Pay particular attention to the sections on USE flags and Portage.

You will hear, see, and read "RTFM" dozens of times before you're done. But don't make the mistake of thinking that simply means having a copy handy as a reference during the installation, because by the time a question appears, it may already be too late. You need to RTFM before you begin.

When you finish, you can start looking for answers to questions not covered in the manual. Learn everything there is to know about your hardware and the drivers the various components use. Study GCC and the options that govern the behavior of GCC version 4.1.1. You can find a short list here. You'll also want to have more than a nodding acquaintance with Xorg if you want to use a GUI display.

I did the first install by mistake. I thought I was installing the live CD. The minimal install is a live CD, too, but it's different. When it finished, less than 15 minutes later, I assumed it would then continue the install from the hard disk after I rebooted. But it just sat there. That was the first in a series of bad assumptions. On the plus side, it led me to the #gentoo IRC channel on

The IRC resource

Click to enlarge

The #gentoo channel -- one of about 120 channels devoted to Gentoo on Freenode -- is an active, heavily populated, extremely valuable IRC resource for help with Gentoo installation and usage. Typically, more than 900 people are present on the channel. Among them are a corps of friendly, helpful, extremely knowledgeable folk who take the time to help newbies find their way around Gentoo.

When I asked how to continue after doing the (minimal) live CD install, they pointed me to the Gentoo 2006.1 live CD manual. After reading a few pages of the manual, I realized that the minimal live CD did not equal the Gentoo 2006.1 live CD. So I stopped and got the real thing.

After I had downloaded, burned, and booted from the live CD, I found myself with a network-connected GNOME desktop system with a cute but cool Gentoo background. The desktop included icons for Computer, Gentoo's home (Gentoo being the default user name), the CD-ROM drive, a CLI version of the Gentoo installer, a GTK version of the Gentoo installer, and an installer FAQ.

I selected the GTK installer and was presented with page 1 of a 17-page installation and configuration script. I chose the settings I felt most appropriate and kicked off the install. In no time at all, GCC began compiling everything that didn't move. That was Friday afternoon. At 10:30 on Saturday morning, it was still cooking, so I decided to take a different approach to the install.

For the next attempt, I followed the Gentoo Reference Platform (GRP) path, using pre-compiled packages anywhere I could. That worked out pretty well, and I played with and kicked the tires on Gentoo on my test box for the next day or so, learning how to use Portage and emerge to install applications. Then I thought I was ready for the big time, so I decided to migrate my production desktop machine from Ubuntu to Gentoo.

I didn't do this out of any unhappiness with Ubuntu. I try to move to a new distro every six to 12 months, so I don't get locked into a set of distro-blinders. I've happily used Ubuntu for over a year, and I'm sure I will run it again. But it was time to change, and what better way to check out Gentoo than a real-world scenario.

The migration begins

I began about noon on Monday. I decided to try an install more in keeping with Gentoo tradition and philosophy, by compiling almost everything except Besides, it was the Labor Day holiday, so I had almost 24 hours before the workday began.

The live CD didn't like the video card in my machine. I noticed as I booted that the text began about three-quarters of the way across the screen, then wrapped around to continue on the left side. When the GUI display appeared, it was similarly offset. Using the monitor's auto-image adjust feature, I was able to set the display properly.

I selected the Stage 3 install, with GRP extras. When I tried to proceed, I couldn't, because I hadn't told the installer where I wanted to get the Stage 3 tarball. I didn't know where to get it, so I visited the #gentoo channel (and remained there until the install was done). Luckily, during an install from the live CD, you can surf, chat, and play games, so I didn't have to abort the install, and a kind soul on the channel gave me the URI for the tarball.

I chose the snapshot version of the Portage tree. When faced with the settings for make config, I accepted the defaults and moved on. I started to choose the live CD kernel, because the installer suggested that this would get the system up and running quickly. Then I noticed that I wouldn't be able to install any packages that required kernel sources if I did that, so I opted to fetch and build the kernel from source code.

I left the kernel-config option blank, selected GRUB as the boot loader, and specified that it live in the master boot record on /dev/hda. After selecting eth0 as my network interface device, and specifying DHCP for the network configuration, I accepted the default suggestions for cron duty and logging. From a menu of Extras offered, I chose GNOME, Xorg, and a few others.

Then the install began in earnest, and I became very good at playing Mah Jongg. When I got bored with that, I skimmed through the Gentoo FAQ. One of its questions read: "Gentoo is too hard to install and I feel like whining." The answer? "Please see /dev/null."

At 5:30 p.m. I checked Gentoo's progress. 120 of the 474 packages had been emerged. Some packages take longer than others, of course. Xlib seems to have been a biggie, for example, and since it had finished an hour before, 20 others had been compiled and installed. By 9:00 p.m., 175 packages were done. My hopes for the install finishing on the same day evaporated.

Install failure

By 7:30 a.m. Tuesday morning, Gentoo was up to package 326, and still cooking. A few hours later, after almost 24 hours of continuous compiling, the install failed when emerge said it could not emerge media-libs/zlib1.1.3.r2. At first I thought all was lost, but the FAQ and the IRC channel assured me that I could resume the emerge by specifying the --resume and --skip-first options. Emerge, however, had other ideas, and it told me there was nothing to resume.

I crossed my fingers and tried booting from the hard disk for the first time. It worked, and I logged in as root, since my attempt to add a user during the install had failed. I used the GNOME User and Group manager to add a user, signed off as root, and signed back in as an ordinary user.

The first order of business was to emerge Xchat so I could communicate with my colleagues on IRC. For the rest of the afternoon, I was happily Gentooing, emerging this and that, getting sound to work, tweaking my X config. I think it was something that I did trying to get the Nvidia driver installed that was my downfall. Whatever it was, it broke X beyond my ability to repair it. And while the IRC channel was sympathetic, it was really impossible for them to be helpful since I wasn't sure what I had done to break it. Sometime after 5 p.m., I decided I would have to bite the bullet and reinstall.

Post-mortem, I believe that I caused the problem by setting a keyword in /etc/make.conf to ~X86. That told Portage that using unstable code was fine with me. I made that change because one of the packages I wanted to emerge required it, and I didn't know the correct way to allow test/unstable code in a single package. I paid the price for not knowing that.

Gentoo install: take two

The second time around was a lot different than the first. Before starting the install, I moved my entire home directory from the first drive to the second so I could save it, since one of the things I had managed to do before crashing the system was to recover my email, chat, and browser settings and data from the second drive.

In the interest of speed, I chose GRP binary packages wherever possible. A little more than an hour later, I had a working system again, with no loss of data. The resolution wasn't right on my monitor, but I was afraid to try to fix it, given what had just happened with my last X experimentation.

I lived with the bad resolution for the next few days while trying to catch up at work and continuing to emerge and tweak the system to get it back to the same functionality it had while running Ubuntu. Finally, I decided to try to resolve the resolution issue.

Right away, X started crashing again, complaining that the frequency was "out of range," even though it was not. Even worse, I couldn't figure out how to get it to boot into single-user mode, and the GRUB menu contained nothing but a single boot option, which started GDM and crashed before I could do anything.

I experimented with various edits to the GRUB boot commands, but never found the right magic. I decided to simply copy the working Xorg.conf from the live CD to my disk and use it. After booting the live CD, I mounted the drive and copied the file, then rebooted from the hard drive. Success!

Then I noticed that I had lost my sound again.

That was the final straw. I was spending all of my time tending to Gentoo and none of my time being productive. I called a halt to the great migration and admitted to myself that I was simply not good Gentoo material.

Is Gentoo for you?

About an hour later, Gentoo was gone, replaced by Debian Etch. It took me five minutes to get the sound working, another five for the printer, and the resolution problem never happened. And though I still have a little bit of tweaking to do, the system is very nearly as functional now in all respects that it was when I was running Ubuntu.

Why are Gentoo and I not meant for each other? I'm sure there will be a few Gentoo users who will blame me for all the problems. Let me cut them off early. I agree. If I knew everything there was to know in order to be a competent Gentoo geek, I'm sure I never would have run into all those problems. It's my own fault.

Gentoo is a popular, powerful, well-crafted distribution that panders to your geek side to the nth degree. You want control? Gentoo hands you the reins and wishes you good luck. How much luck you need depends on how much you know. But it's simply not for me. Like a good programmer, I'm lazy. While it was once fun to compile the kernel and mention it the next morning while grabbing a cup of coffee, these days I want to use my machine for things other the care and feeding of the operating system.


  • Linux
  • Gentoo
Click Here!