Gentoo solved many problems for me. Some distros install everything, whether you really need
it or not. Not Gentoo; other than the base packages required for Linux to run, the only software
installed on the system is the software you put there. Gentoo resolves dependancies
automatically, eliminating RPM prerequisite hell. As an added bonus I got something I wasn't
even expecting. Speed. Blinding, blazing, incredible speed.
The main advantage to the Gentoo distribution is Portage, a python based ports system
similar to BSD ports. For those of you unfamiliar with BSD ports, Portage is a package
management tool that downloads and installs source instead of precompiled packages. When I need
a program I download, install and compile it with one command:
The above will download the nmap source code, compile and install it. Of course this method
is slow, but it has it's rewards. You can also opt to use prebuilt binaries if you are not
extremely patient. It took me five hours to get the base Gentoo installed on my PIII with 128
meg of ram. It wasn't a big deal as I had other things to do, but I would like to see the
installation process optimized so that it doesn't require any babysitting.
Gentoo is running two of my mission critical servers right now, I consider it to be stable and
mature. A warning though, this is not a distribution for dummies. This is bare metal Linux,
powerful and dangerous. If you do something without thinking you may fall into a bucket of
Let's begin my story.
I download the iso from http://www.ibiblio.org/gentoo/releases/build
/. There is a choice of install images here. My favorite way of installing Gentoo is to
compile everything, a time consuming process. This method requires a slim 16 meg iso. You may
want to grab an iso with pre-built binaries to speed things up, however. This fat iso weighs in
at 103 meg. I download the big one with the prebuilt binaries even though I won't use them -
just in case.
I boot my laptop with my shiny new Gentoo CD. The Gentoo install uses isolinux by Peter Anvin. I like the fact that they
don't obscure it, giving credit where it is due. It boots quickly and there is a PCI
autodetection process, it shouldn't find much on my laptop. Interesting, it loads a scsi module.
Perhaps it has detected my IDE cd burner. Usually this will detect any PCI nic cards that are
installed, but it does not detect my PCMCIA device (of course). After the PCI detection I get a
command prompt. I use nano (a small text editor) to open up install.txt, the excellent install
doc. Usually these docs are sufficient but the latest ones can be found here:
Keeping the install doc open in this virtual terminal, I hit alt-f2 to open a new one. I
begin by loading the pcmcia drivers and installing networking. This is all done at the command
line ( insmod, ifconfig, route, dhcpcd, etc.). I use nano to add my DNS servers to
/etc/resolv.conf. A word of caution; get in the habit of always using the -w switch with
nano. If you do not use the -w switch nano's word wrap feature will jack up your config
files. I ping a reliable site, networking is up!
Next I partition my system using fdisk. I choose a simple layout with a swap partition, a
root partition and a small boot partition. The boot partition remains unmounted during use, a
nice precaution. For filesystems you have a choice of ext2, ext3, ReiserFS and XFS. In my
personal experience I've noticed that Reiser performance really rocks when combined with SCSI
drives, but as this is an IDE system I think I'll go with XFS. Besides the XFS tools seem to be
a lot more mature than the offerings from Reiser. I format and mount the partitions from the
command line creating a /mnt/gentoo directory. I then untar the root filesystem, here I have the
choice of the small tarball that requires you to compile everything or a larger tarball that
contains pre-built binaries. If you untar the big guy you are almost finished with your install
at this point. Using chroot and some scripts you chroot the /mnt/gentoo directory. From this
point on you are operating under your new gentoo system.
The first thing I do under my chrooted system is issue this command:
This downloads the latest version of the portage tree. The portage tree is found under
/usr/portage and contains the ebuild scripts used to compile/install programs. Currently there
are over 1000 up to date emerge sripts. Next I edit /etc/make.conf, here I can choose compiler
settings. I optimize everything for i686. Now it's time to build the GNU compiler and
libraries. I run the bootstrap script and leave for lunch. On my PIII 500 the boostrap process
takes 2 hours and 2 minutes.
The second emerge command I issue is:
Now emerge downloads, compiles and installs my base system packages. I sit back, relax and
take the time to fax my legislators a rant about the DCMA. 1 hour
and 30 minutes later it is finished.
Now it is time to download and install the kernel. First I make a link updating my timezone,
and then I issue another emerge command:
This grabs the latest kernel, 2.4.19, and drops the source in /usr/src/linux. Ten minutes
have elapsed. Now comes the fun, compiling your kernel. That's right, everyone who installs
Gentoo compiles they're own kernel as a matter of process. I like this. There are some
distributions out there that actually say you should never compile your own kernel. Shame on
them. I use make menuconfig and the standard commands to compile my kernel. Since Gentoo
uses devfs I select /dev file system support and I am also careful to compile in support
for XFS. I don't have the kernel mount devfs automatically at boot as the Gentoo startup scripts
take care of this for me. Virtual Memory file system support is also enabled.
At this point in time I get to choose a logger. My choices are sysklogd, syslog-ng or
metalog. I choose metalog, because it's got the coolest name. I download, compile and install
it using a single command:
XFS has some nice utilities, I better install those. I have some other essential
programs to install, and I'm feeling a bit lazy so I chain them all in one big command.
emerge xfsprogs;emerge bitchx;emerge vim;emerge links
At this point I'm feeling pretty 7 up. I edit my /etc/fstab file, my /etc/hostname
file and /etc/hosts. The passwd command is run to set the root passwd. I add my nic card
module to the file /etc/modules.autoload and edit /etc/conf.d/net.
conf.d/net allows me to configure my ip address and settings, default gateway and alias.
I take a look at /etc/init.d/net.eth0, even though I don't need to edit it. I can then
add it to the startup script using this command:
rc-update add net.eth0 default
This adds the script to the default runlevel to be executed at startup. Startup scripts are
another place Gentoo really shines. The startup scripts have a system of dependancies. For
example net.eth0 can depend on pcmcia. The pcmcia drivers get loaded before net.eth0 - this is
Next I install grub. If you haven't used grub before it's nice. You can boot to a kernel
directly from the grub shell, without having to edit a config file. lilo is still available, for
those of you that prefer it. Gentoo likes to let you make the decisions.
I exit my chrooted shell and unmount all directories. Reboot! Gentoo comes up and the
install process is complete.
The Gentoo install process has taught me a lot about Linux, and I like the fact that the
command line is embraced, instead of hidden behind gui or scripts. I also like the speed (which
is debatable since all I can supply is anecdotal evidence). I wasn't too happy about waiting 5
hours for everything to compile, but I think it was worth it. I can tell you it compiles and
greps noticeably faster than other distros I have run on the exact same machines. I really enjoy
using portage, and the packages seem to stay up to date - if not bleeding edge. This is not a
conservative distribution like Debian, however I like the aggressive and intelligent direction
gentoo is taking.
If you are considering trying out Gentoo I highly suggest #gentoo on irc.openprojects.net. Also subscribe to the mailing
lists found at www.gentoo.org. The Gentoo community has
helped me out of several jams in the past, I think they will treat you good too.
While writing this, I recieved help from a lot of people. However I would like to
personally thank the people I ripped off word for word. Thanks notafurry of www.kuro5hin.org for your pointed help with the stilted second
paragraph and thank you Ween from #gentoo on openprojects.net for your clean description of