Linux on an eMachines eTower 600is
      [eMachines eTower 600is]

eTower 600is Specs
Anaheim-2A (ICH+CS4281)
Intel Celeron 600 FCPGA 370
Audio Card: (Built-In)
CS4281 3D PCI
Video Card: (Built-In)
Intel Direct AGP 3D (i810)
(Shared Memory)
SD-32M PC100 RAM
Conexant Chipset
Samsung 2.5Wx2 SP-12
Hard Drive:
10.2GB EIDE, 3.5" HDD
CD Drive:
Samsung SC-140 (40x) CDD
Floppy Drive:
Samsung SFD-321B FDD
KB BTC 5190 (w/eKeys)
Logitech M-SAS51
Power Supply:
CPU Fan:
PGA 370

A step-by-step guide to successfully configuring Slackware Linux and XFree86 so the eMachines eTower 600is can be used as a full-fledged GUI-enabled Linux workstation*.
by Jay D. Dyson   <>

This paper is divided into six sections:

  1. Disclaimer        (For the bottom-feeding lawyer types)
  2. Preface             (Opening remarks on eMachines)
  3. Prerequisites    (What you need before you get started)
  4. Installation       (Overview of what software to load)
  5. Configuration   (The down & dirty nitty-gritty stuff)
    1. Configuring & Compiling the Kernel
    2. Configuring XFree86
    3. Tweaking the XF86Config File
  6. Afterword         (Post-configuration security notes)


This information is provided without warranty of any kind. By use of this information, you agree to hold both myself and Treachery Unlimited harmless from any consequence that may arise from use thereof. (I have to include this disclaimer since there are always bottom-feeding lawyer types who are more than willing to champion someone else's ill-advised actions so they can make a fast buck.)


I'll be candid: I love eMachines. I think they are superior systems for good-power, low-budget home and business computing. For the price of one Compaq, Dell or IBM system, one can easily get two or three comparably-equipped eMachines. That means a lot in my book. Best of all, eMachines are a breeze to upgrade. Any time I wanted to increase my eMachines' storage or RAM, install a network card, or switch up to a higher-end graphics card, I scarcely had to spend more than a few minutes doing the job. (And before anyone asks: No, I do not work for, sell, or otherwise benefit financially from eMachines, Inc. I just believe in supporting good computers.)

Sure, eMachines aren't the Rolls Royce of desktop systems. There is a very limited number of AGP and PCI slots on the Anaheim-2A motherboard; the stock system speakers ain't no great shakes [eMachines 600is Motherboard] [eMachines 600is speakers] (this has changed with the latest eMachines); and some folks prefer a the more hefty L2 cache of the typical Pentium III CPU to the Celeron 600's 128K L2 cache*. In spite of all that, I find none of these perceived shortcomings to be even a speedbump to having the kind of computer I want: a readily-affordable system that serves as a fast and reliable workstation on which I can telecommute, write code, enjoy multimedia, navigate the 'net and play the occasional game.

It seems there are a lot of folks across the Web have had unsatisfactory experiences with eMachines. I honestly don't know if the disgruntled owners are simply more vocal than satisfied eMachines customers or whether I and every other eMachines user I personally know is just luckier than the average buyer. I've read a number of online war stories about eMachines' customer support (or, according to some, the lack thereof), but I've never had any need to contact customer support since each of the five eMachines systems I've purchased have operated flawlessly.

For all intents and purposes, my eMachines system is stock configuration. All that has been added is a second EIDE hard drive (Maxtor DiamondMax, 30 GB) slaved to the original 10 GB EIDE drive, a couple of 256 MB sticks of SDRAM PC100 RAM, and a network adapter (Linksys LNE100TX Etherfast 10/100 LAN Card). (Current eMachines come with their own 10/100 NIC built-in and have 40 GB drives at minimum.)


PLEASE NOTE: If you just want to run Linux as a server on your eMachines system (without the GUI apps and all that jazz), then you really don't need to consult this document. The core Slackware OS required for server use installs just fine on every eMachines box I own. It's the XFree86 parts that require a fair amount of tweaking to play nice with the Intel i810 video card and CS4281 audio card.

The first thing you'll need is an eMachines system in need of liberation from its closed-source captor (otherwise known as Microsoft Windows). The system in question doesn't have to be an eTower 600is, but that is the model to which this document is geared. (Check for your system's specifications if you aren't running an eTower 600is.)

If you don't already have an eMachines system available, you can buy one new or used online.

[Slackware 8.0] Slackware Linux Installation Media:
You will of course need the install media for Slackware Linux. You can either purchase the CDs online or download the ISOs and burn them to media on your CD-RW. If neither of the previous options are viable for you, it's also possible that your local Fry's Electronics or other computer superstore has Slackware Linux or (at the very least) the book "Slackware for Dummies" which has the distro CD-ROM.

Your Monitor's User Manual: (Optional)
As with any system configuration, it's best to leave out as much guesswork as possible, so you will probably want to have your monitor's user manual handy. This manual will provide useful information for the XFree86 configuration file.

[A Monitor] If you don't have your monitor's manual, don't worry. There are other ways your monitor's specifications can be gathered, and we will cover those steps later in this document.

With all of the above items handy, we're now ready to get started.


The initial installation of Slackware is perhaps the easiest part of this entire recipe. Slackware has a relatively painless interface for defining your drive partitions and declaring what packages you want installed.

If you should run into any snags during the installation, the Slackware Install Help page is an excellent resource for troubleshooting.

When installing, be mindful of the following packages that are required for a GUI-enabled workstation installation:

  1. Program development tools (compilers, debuggers, interpreters and so on). We will be recompiling the Linux kernel, so you need these.
  2. GNOME desktop environment, GTK widget library, and the GIMP. It's a good thing to have a few options on which GUI you want for your workstation.
  3. Source code for the Linux kernel. This is crucial to the configuration steps since we will be compiling the provided 2.4.5 kernel (the default install uses the 2.2.19 kernel).
  4. K Desktop Environment. As mentioned previously, having choices on which GUI you want is a good thing.
  5. Networking programs. With any workstation setup, it is more than likely you'll want to read e-mail, Usenet news and connect to other systems.
  6. The base X Window System. Since this will be a GUI-enabled workstation, you will definitely want that.

The remainder of the packages (GNU libc crypt, Emacs, Games, TeX document formatting system, the Tool Command Language [Tcl], X applications that are not part of the desktop environment, X11 program development libraries, XView libraries, FAQs, HOWTOS and miscellaneous documentation) are optional, but it doesn't hurt to load them. If you decide at a later date that you really don't want them, you can use the Slackware pkgtool to remove them.

In short, when prompted for what packages you want to install, you'll want to select everything and worry about removing unnecessary stuff at a later time when you're more familiar with Slackware and your GUI of choice.


Now that you have installed Slackware Linux, logged in as the root user and confirmed that the system is functional (the filesystem is intact, the services are running okay, et cetera), we can proceed to the serious stuff: recompiling the kernel to take full advantage of what both Slackware and eMachines has to offer.

Configuring & Compiling the Kernel:

In this area of configuration, we are going to tweak up to seven different sections of the kernel's configuration. But first we need to issue a few commands:

	cd /usr/src
	rm linux
	ln -s linux-2.4.5 linux
	cd linux

The above commands have put us in the directory tree where the Slackware kernel source resides. We have removed the symbolic link (linux) that pointed to the linux-2.2.19 kernel source directory. Because we are going to be compiling the 2.4.5 kernel, we want the new symlink to point there. With the new symlink created, we go into that directory and start work. [Slackware Kernel Menuconfig Screenshot]

Once in the linux-2.4.5 directory, issue the following command:

	make menuconfig

After a few moments, the system will display a screen like the one on the right.

This is the Kernel 2.4.5 Configuration menu and it is via this interface that we will make changes. Please note: all of the changes made will be designated as built-in elements of the kernel. That is to say, we will not simply enable these items for Module inclusion (<M>), but will flag them as Built-In ([*]) to the Linux kernel.

The following elements of the kernel must be enabled in the following sections:

Section: Code maturity level options
 Enable: Prompt for development and/or incomplete code/drivers

Section: Block devices
 Enable: Normal PC floppy disk support

Section: Network device support --> Ethernet (10 or 100Mbit)
 Enable: DECchip Tulip (dc21x4x) PCI support

Section: Character devices
 Enable: /dev/agpgart (AGP Support)
 Enable: Intel I810/I815 (on-board) support

(The following enabling of File System recognition is largely your call. I enabled a number of file system types with which I work regularly. Your selection may be smaller or larger.)

Section: File systems
 Enable: DOS FAT fs support
 Enable: MSDOS fs support
 Enable: UMSDOS: Unix-like file system on top of standard MSDOS fs
 Enable: VFAT (Windows-95) fs support
 Enable: ISO 9660 CDROM file system support
 Enable: Microsoft Joliet CDROM extensions
 Enable: Minix fs support

Section: Sound
 Enable: Crystal Sound CS4281

When you're done making all of those changes, you will then select <Exit>. At that time, menuconfig will ask you:

	Do you wish to save your new kernel configuration?

Answer "Yes" and save your new kernel config.

Now comes the typically time-consuming part. In this, we're going to compile dependencies, the kernel itself, any associated kernel modules, and then install those kernel modules. The command sequences are:

	make dep
	make bzImage
	make modules
	make modules_install

Both make bzImage and make modules will take a while to compile. (Sorry...I didn't time them. I opted to leave the room and enjoy some good coffee.) After the last of the make commands finishes successfully, you'll need to change to the root directory (/) and issue the following commands:

	cp -p /vmlinuz /vmlinuz-2.2.19
	cp -p /boot/ /boot/
	cp -p /usr/src/linux/arch/i386/boot/bzImage /vmlinuz
	cp -p /usr/src/linux/ /boot/

What we've just done is preserve the original 2.2.19 kernel (in case something seriously blows up and we need to retreat to the previous kernel version). Following that, we copied the new kernel (v2.4.5) into place. Now we need to let the Linux Loader (LILO) know about it by issuing the following commands:

	vi /etc/lilo.conf

	Search for:
	# Linux bootable partition config begins

	(Delete the four lines that follow the above line
	 and then replace them with these eight lines.)

	image = /vmlinuz
	root = /dev/hda1
	label = Linux-2.4.5
	image = /vmlinuz-2.2.19
	root = /dev/hda1
	label = Linux-2.2.19

	(Save and close the file.)

Once the above changes have been made to /etc/lilo.conf, update LILO itself by issuing the following command:


LILO will indicate that it has accepted the new bootable partition configurations. Once that's done, you will need to reboot the system with the following command set:

	sync ; reboot
[Slackware LILO boot menu Screenshot]

The system will shut down and restart normally. Upon boot-up, you will be presented with the LILO Boot Menu screen like the one on the right.

You will want to select "Linux-2.4.5" (which should be the first item on the list). Once selected, the system will initiate the full start-up until it gets to the standard login prompt. Once there, go ahead and login as root.

You are now done configuring the Slackware Linux kernel. Now comes the real fun...

Configuring XFree86:

Slackware and XFree86 have a lot of very slick configuration tools. Unfortunately, some of them don't immediately jump out as the right one to use. Even in the /usr/X11R6/bin directory, there are three utilities that seem to do the same thing (xf86cfg, xf86config, & xfree86setup), but only one is really appropriate for our purposes. Thus, it is important to understand the differences between them in order to correctly configure your XFree86 system.

xf86cfg: Graphical configuration tool for XFree86
Though this tool's man page touts it as a means by which one can write the initial XF86Config file or customize an existing configuration, I personally have found this utility to be a bit buggy and it tends to hang in the middle of its startup GUI display. I recommend against its use at this time.

xf86config: Generate an XF86Config file
While this utility is certainly comprehensive and allows the user ample latitude in making custom configurations for the XFree86 environ, it is not incredibly user-friendly and assumes the user has precise technical knowledge of their system's hardware specifications. Since this document is geared toward the novice or intermediate Linux user, I do not recommend using this utility either.

xfree86setup: XFree86 Setup Utility
For all intents and purposes, this is the utility to use. When run, this tool will survey your system's graphics card and monitor specifications and will determine compatible horizontal sync and vertical refresh rates for your system. It will then write its findings to /etc/X11/XF86Config.

KDE startup screen Once xfree86setup completes, you can start up XFree86 with the startx command (assuming that /usr/X11R6/bin is in your $PATH environment variable).

If everything went well with xfree86setup, your screen should soon display the graphical user interface (GUI) start-up screen as shown on the right.

Tweaking the XF86Config File:

For reasons not entirely clear, every successful configuration of XFree86 has consistently yielded a default GUI resolution in 640x480 mode. Since I prefer the 800x600 resolution with 24 bit color depth, it's been my experience that some tweaking of /etc/X11/XF86Config is always required.

In order to correctly assign the appropriate values for specific rendering of 800x600 resolution (or 1024x768), we will need the monitor's Horizontal Sync and Vertical Refresh rates. This is where the monitor's user manual comes in handy, but we can also determine these values with this command:

X -probeonly > /tmp/probe.rpt 2>&1

This command will generate a wealth of information about your chosen video card chipset, monitor manufacturer and model, and supported video modes. If you want to change your default resolution setting and/or default color depth, you will need to select the appropriate HSync and VertRefresh values for your monitor.

For reference, I've provided both the output from X -probeonly and a sample XF86Config file.

As seen in the X -probeonly output:

  • Line 78 shows the video card chipset is Intel 810 (i810).
  • Line 99 shows that the monitor used is a Dell #2430.
  • Lines 109 through 124 list Video Electronics Standards Association (VESA) modes that the monitor can support in terms of resolution and hertz.
  • Lines 131 and 132 list the monitor's default horizontal sync (HSync) and vertical refresh (VertRefresh) ranges.
  • Lines 134 through 168 list the display modes which are incompatible with the monitor used.
  • Line 170 lists the default resolution with its related HSync, VertRefresh and Hertz setting associated with that resolution.

It is from the above values that work can begin on bumping up the default resolution for XFree86 so we aren't stuck in 640x480 hell. You can either manually change the HSync and Vertrefresh values in your XF86Config file, or you can use the xvidtune utility while in the XFree86 GUI to determine the HSync and VertRefresh values necessary for your monitor.

For more information on the intricacies of XF86Config, I recommend the comprehensive document, XF86Config Demystified.


ABOUT SECURITY: I value security more than convenience, and staying secure with a GUI-enabled workstation is a fine balancing act. That said, I highly recommend users of XFree86 run their GUIs without the X server listening to the world. This can be done by using this command sequence:

                startx -- -nolisten tcp

I encourage all Linux workstation users to become more familiar with security for their systems. There is a good overview of Linux workstation security available here. (The document is geared toward Red Hat Linux, but the principles apply to all flavors of Linux.) Yet another overview of Linux workstation security principles is available here.

For more information on protecting your Linux system, I highly recommend the IPtables How-To. Still more information on running Linux securely can be found at Treachery Unlimited and UnixGeeks.

It's my hope that this information has been useful in successfully installing and configuring the Linux workstation on the eMachines system. If you found this document useful, or have any questions or comments regarding this document, please drop me a line.

  *   Thanks to Trevor for providing the Celeron L2 cache info correction.
Copyright © 2002-2005,  Jay D. Dyson - Treachery Unlimited • All Rights Reserved.
This document was last modified on Wednesday, 01-Mar-2006 12:00:00 MST