Gentoo Wiki


This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related



Part 3, Upgrade to Latest Stable Platform

Continued from Dell Precision 690 Part 2.

Part 3 turns the 2006.1 Gentoo Reference Platform into the latest stable platform with audio, X11 with GLX OpenGL extensions, GNOME desktop and K Desktop Environment.

Update the Basic Gentoo System

Bring the basic system up-to-date. At present, the system contains many outdated packages, software dating from the 2006.1 GRP snapshot. At early 2007, such represents software almost a whole year behind their current stable versions.

Start by updating the compiler itself. The compiler will be our instrument for compiling and installing all other packages, so makes sense to start here.

b1ynn2j ~ # emerge gcc -up

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ] sys-devel/m4-1.4.7 [1.4.4]
[ebuild     U ] sys-devel/bison-2.2 [2.1]
[ebuild     U ] sys-apps/texinfo-4.8-r5 [4.8-r2]
[ebuild     U ] sys-devel/gcc-config-1.3.14 [1.3.13-r3]
[ebuild     U ] sys-devel/gcc-4.1.1-r1 [4.1.1] USE="-test%"
[ebuild     U ] sys-libs/timezone-data-2006p [2006a] USE="nls%*"
[ebuild     U ] sys-libs/glibc-2.4-r4 [2.4-r3] USE="-glibc-compat20%"

The list shows which packages need updating. Remove p (for pretend) to update for real. The update command becomes emerge gcc -u. It takes a while to update the compiler. Especially so because gcc does not use MAKEOPTS="-j5". It overrides with -j1 for single non-parallel build jobs.

At the end, it mentions that 3 configuration files need updating. The changes are trivial and merge automatically using etc-update.

b1ynn2j ~ # etc-update
Scanning Configuration files...
Automerging trivial changes in: /etc/host.conf
Automerging trivial changes in: /etc/init.d/nscd
Automerging trivial changes in: /etc/nsswitch.conf
Exiting: Nothing left to do; exiting. :)

When complete, Gentoo has recompiled the compiler (using the old compiler) then recompiled the GNU C library using the new compiler. Note the merging order above. All other packages remain compiled by the old compiler and linked originally against the old C library. This is not a huge hurdle. The system will continue running normally anyway. However, the final step of system upgrade will recompile everything from scratch. Recompiling everything will use the new compiler and new library.

Re-merge any deep or USE flag dependencies of gcc as follows.

b1ynn2j ~ # emerge gcc -uDNp

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ] sys-apps/findutils-4.3.2 [4.1.20-r2]
[ebuild     U ] sys-devel/binutils-config-1.9-r3 [1.8-r7]
[ebuild   R   ] sys-kernel/linux-headers-2.6.11-r2  USE="-gcc64%"

Drop the p to actually perform the merge. After merging linux-headers Gentoo advises re-merging glibc using emerge glibc. Follow the advise!

Reboot afterwards. The base system will now link with the new C library.

Automatically run sshd at default run-level.

b1ynn2j ~ # rc-update add sshd default
 * sshd added to runlevel default

Add a local Portage overlay. Edit /etc/make.conf using nano -w /etc/make.conf and add the following line to the end.


Install enotice. Create a local Portage overlay directory, download the ebuild.

b1ynn2j ~ # mkdir -p /usr/local/portage/app-portage/enotice
b1ynn2j ~ # cd /usr/local/portage/app-portage/enotice
b1ynn2j enotice # wget

Prepare for compiling by downloading then digesting!

b1ynn2j enotice # ebuild enotice- digest

This may take some time because it attempts to download from a mirror first. At the moment (January 2007) the enotice tarball is not present on Gentoo mirrors. Eventually after many timeouts and retries, the ebuild command takes the tarball from the primary distribution site. Download it directly if you run out of patience (like me).

Unmask before merging enotice.

b1ynn2j enotice # nano -w /etc/portage/package.keywords

Add the line:


You can now merge.

b1ynn2j enotice # emerge enotice

Finally add


to /etc/make.conf.

Use nano to add

USE="cjk emacs"

to /etc/make.conf.

Merge ccache package. This will speed up all future compiles. Add


to /etc/make.conf.

Update the base system. First pretend.

b1ynn2j ~ # emerge system -up

These are the packages that would be merged, in order:

Calculating system dependencies... done!
[ebuild     U ] app-arch/gzip-1.3.5-r10 [1.3.5-r8]
[ebuild     U ] sys-apps/hdparm-6.6 [6.3]
[ebuild     U ] sys-devel/make-3.81 [3.80-r4]
[ebuild     U ] sys-devel/autoconf-wrapper-4-r3 [3.2]
[ebuild     U ] sys-devel/autoconf-2.61 [2.59-r7] USE="emacs*"
[ebuild     U ] sys-libs/com_err-1.39 [1.38]
[ebuild     U ] sys-libs/ss-1.39 [1.38]
[ebuild     U ] sys-fs/e2fsprogs-1.39 [1.38-r1]
[ebuild     U ] sys-apps/util-linux-2.12r-r4 [2.12r-r3]
[ebuild     U ] app-arch/tar-1.16-r2 [1.15.1-r1]
[ebuild     U ] sys-apps/groff-1.19.2-r1 [1.19.1-r2] USE="cjk%*"
[ebuild     U ] sys-apps/man-1.6d [1.6-r1]
[ebuild     U ] sys-devel/automake-wrapper-3-r1 [1-r1]
[ebuild  N    ] perl-core/Test-Simple-0.64
[ebuild  N    ] virtual/perl-Test-Simple-0.64
[ebuild  N    ] dev-perl/Locale-gettext-1.05
[ebuild  N    ] sys-apps/help2man-1.36.4  USE="nls"
[ebuild  NS   ] sys-devel/automake-1.10
[ebuild     U ] net-misc/rsync-2.6.9-r1 [2.6.8-r2]
[ebuild     U ] sys-apps/busybox- [1.1.3]
[ebuild     U ] sys-apps/coreutils-6.4 [5.94-r1]
[ebuild     U ] sys-apps/baselayout-1.12.6 [1.12.1]
[ebuild  N    ] dev-util/pkgconfig-0.20  USE="-hardened"
[ebuild     U ] sys-libs/cracklib-2.8.9-r1 [2.8.9]
[ebuild     U ] sys-apps/shadow- [4.0.15-r2] USE="cracklib%*"
[ebuild     U ] net-misc/openssh-4.4_p1-r6 [4.3_p2-r1] USE="-X%"
[ebuild     U ] sys-apps/module-init-tools-3.2.2-r1 [3.2.1] USE="-no-old-linux%"
[ebuild     U ] sys-apps/gawk-3.1.5-r2 [3.1.5-r1]
[ebuild     U ] sys-apps/kbd-1.12-r8 [1.12-r6]
[ebuild     U ] sys-apps/file-4.18 [4.17-r1]
[ebuild     U ] sys-apps/net-tools-1.60-r12 [1.60-r11]
[ebuild     U ] app-editors/nano-2.0.1 [1.3.11-r2]
[ebuild     U ] sys-apps/debianutils-2.15-r1 [2.15]
[ebuild     U ] sys-apps/man-pages-2.42 [2.33]

Then rerun without pretending.

Package comerr gives important warnings. You can use enotice to list the warnings.

b1ynn2j ~ # emerge gentoolkit
b1ynn2j ~ # revdep-rebuild

Successful check. The gettext package also gives a warning.

b1ynn2j ~ # revdep-rebuild --library

Similar for openssl-0.9.8d.

b1ynn2j ~ # revdep-rebuild --library

This recompiles wget.

b1ynn2j ~ # revdep-rebuild --library

This recompiles openssl-0.9.8d. /usr/lib64/ /usr/lib64/

Run etc-update to update the configuration. Accept all updates unconditionally except these:

Reject the clock update; it wants to change back to UTC. Same for hostname; it wants to change host name back to localhost. And same again for keymaps because the update wants to revert to default keyboard layout.

Deep with new USE flags.

b1ynn2j ~ # emerge system -uDNp

These are the packages that would be merged, in order:

Calculating system dependencies... done!
[ebuild   R   ] sys-devel/gettext-0.15  USE="emacs*"
[ebuild   R   ] dev-libs/openssl-0.9.8d  USE="emacs*"
[ebuild   R   ] perl-core/Test-Harness-2.56
[ebuild     U ] app-admin/perl-cleaner-1.04.3 [1.04]
[ebuild     U ] perl-core/PodParser-1.34 [1.32]
[ebuild   R   ] sys-apps/sysvinit-2.86-r5

Rerun without pretend.

Add the Gentoo boot splash. But before doing so, add the png USE flag to your /etc/make.conf. Very important! See Chris Weldon's page about Gentoo Gensplash woes!

b1ynn2j ~ # emerge splash-themes-livecd

It also merges a number of dependencies. Regenerate the initial root disk.

b1ynn2j ~ # genkernel --gensplash=livecd-2006.1 initrd

Add the recommended splash options

splash=silent,theme:livecd-2006.1 CONSOLE=/dev/tty1 quiet

to the end of the kernel boot line in /boot/grub/grub.conf. Use nano editor.

Reboot afterwards because baselayout has changed.

Finally, rebuild the base system again just for the sake of it, 97 packages in total.

b1ynn2j ~ # emerge system -e

This ensures all 97 packages have been compiled by the latest version of the compiler and against the latest C library version. Not normally necessary. Linux systems give a lot of leeway when matching versions and supporting multiple versions in the same system. This rebuild is just paranoia. As a side-effect, it also downloads any missing source archives.

Reboot when done.

Installing Sound

Start by identifying the audio hardware.

b1ynn2j ~ # lspci

The list contains:

00:1b.0 Audio device: Intel Corporation 631xESB/632xESB High Definition Audio Controller (rev 09)

Running lspci -n lists 8086:269a as the PCI vendor and device codes. Linux ALSA drivers support this device in the hda-intel audio driver, sub-device ESB2.



to /etc/make.conf. While there add alsa and oss to the USE flags.

Two ways to install: using kernel sources or alsa-driver package. We choose the latter because it often has more up-to-date software. The kernel updates its built-in ALSA drivers more slowly.

Disable the kernel's built-in ALSA.

b1ynn2j ~ # genkernel --splash=livecd-2006.1 --menuconfig all

Find Advanced Linux Sound Architecture (under Device Drivers, Sound) and disable. Exit the configuration menus. Save your new kernel configuration and wait for compilation complete.

Merge ALSA drivers.

b1ynn2j ~ # emerge alsa-driver

Merge ALSA utilities.

b1ynn2j ~ # emerge alsa-utils

Reboot the system at this point. Make sure the old drivers are not loaded.

Configure ALSA by running alsaconf. Select hda-intel.

Make ALSA run automatically at boot time.

b1ynn2j ~ # rc-update add alsasound boot
 * alsasound added to runlevel boot

Test by merging playing tools.

b1ynn2j ~ # emerge madplay mpg123 vorbis-tools

Then download a sample and play. Change directory to /tmp then enter commands:

b1ynn2j tmp # wget
b1ynn2j tmp # ogg123 41_30secOgg-q0.ogg

USE Flags

Add the following USE flags.

Install X11

b1ynn2j ~ # emerge xorg-x11

Insert the nvidia module.

b1ynn2j ~ # modprobe nvidia

Also, ensure that this module loads automatically every time the system boots. Edit the kernel auto-load list and add nvidia.

b1ynn2j ~ # nano -w /etc/modules.autoload.d/kernel-2.6

Then run

b1ynn2j ~ # update-modules

Automatically generate the X configuration.

b1ynn2j ~ # Xorg -configure

Test using

b1ynn2j ~ # X -config /root/

The test fails, for two reasons: GLX and mouse.


b1ynn2j ~ # eselect opengl list
Available OpenGL implementations:
  [1]   nvidia
  [2]   xorg-x11 *

Switch to nvidia.

b1ynn2j ~ # eselect opengl set nvidia
Switching to nvidia OpenGL interface... done

Retest and the GLX message goes away.


Edit the new X configuration.

b1ynn2j ~ # nano -w

In section InputDevice, change driver and device as follows.

        Driver      "evdev"
        Option      "Device" "/dev/input/event1"

Then rerun the test. This time complete success.

Test mouse buttons by merging xev and running xev from within X.


If necessary, customise keyboard layout.

        Option      "XkbLayout" "gb"


Copy the new configuration to /etc/X11.

b1ynn2j ~ # cp /etc/X11/xorg.conf

Big One!

The very big one!

b1ynn2j ~ # emerge gnome kde-meta

Some of the Java dependencies require that you download packages from the Internet manually! You can conveniently download using links but you need to install it first.

emerge links

A problem occurs when installing net-dns/libidn. This package's dependencies include JDK 1.3 or 1.4, not 1.5. You need to enter

b1ynn2j ~ # emerge =virtual/jdk-1.4*

This merges 1.4-series JDK. By default, it merges the Blackdown JVM.

emerge emacs-cvs
emerge subversion

Configuring GNOME

Already added USE flags gtk, gnome, hal and avahi. Next add the following line to /etc/portage/package.use.

gnome-base/gnome-session branding

It customises GNOME for Gentoo.

At the end run command:

b1ynn2j ~ # emerge gnome -uDN

It pulls in extra deep dependencies.

Update the default run-level.

b1ynn2j ~ # rc-update add hald default
 * hald added to runlevel default
b1ynn2j ~ # rc-update add avahi-dnsconfd default
 * avahi-dnsconfd added to runlevel default

Set up GNOME's Display Manager. Set DISPLAYMANAGER to gdm in /etc/conf.d/xdm.


Add X display management to the default run-level.

b1ynn2j ~ # rc-update add xdm default
 * xdm added to runlevel default


Note that KDE switches off sub-pixel hinting of fonts by default.

Other Useful Packages

Note you cannot merge standard OpenOffice, only the binary version. This automatically downloads and installs a 32-bit emulator.

For Skype, Sound System's Hardware settings has Full duplex checked.

Log Rotation

b1ynn2j ~ # emerge logrotate

Cleaning Temporary Space

b1ynn2j ~ # emerge tmpwatch

Uncomment the first example.

if  [[-d /tmp]] ; then
  ${TMPWATCH} --ctime 168 /tmp

Notice --ctime option. As installed, tmpwatch uses atime, access time.

Simple SMTP

See HOWTO Gmail and sSMTP. First add to /etc/portage/package.use:

mail-mta/ssmtp mailwrapper

Then merge ssmtp.

b1ynn2j ~ # emerge ssmtp

It also merges net-mail/mailwrapper.

Edit the SMTP configuration. Add your local mail relay.

Add your reverse aliases.

b1ynn2j ~ # nano -w /etc/ssmtp/revaliases

Layout Manager

b1ynn2j ~ # emerge layman
b1ynn2j ~ # layman -f

Fetching creates a new directory, /usr/portage/local/layman.

b1ynn2j ~ # layman -L

Add this URL to the list of overlays in /etc/layman/layman.cfg.

b1ynn2j ~ # layman -f
b1ynn2j ~ # layman -a royratcliffe


source /usr/portage/local/layman/make.conf

to /etc/make.conf.

Links and References


Concerns or Compliments? Please use the Discussion section.

Retrieved from ""

Last modified: Mon, 15 Sep 2008 04:11:00 +0000 Hits: 3,214