Installing Ubuntu on the decTOP (AMD PIC)

June 23, 2007

This page documents the process that I used to install Ubuntu 6.06 on a decTOP system.

Table of Contents

The decTOP

Uses for the decTOP

Booting to a USB Flash Drive

Installing Ubuntu

Configuring Ubuntu

Unresolved Issues

The decTOP

The decTOP is a cheap, fanless, low power PC, based on an AMD Geode processor. Originally sold as the AMD Personal Internet Communicator (PIC), it has since been bought by Data Evolution Corporation and is being sold through their online store for $99 (plus about $20 shipping).

decTOP system specs:

Processor: AMD Geode GX500 (366MHz)

Memory: 128 MB PC2700 DDR (200 pin SODIMM, 1 slot, expandable to 512MB max)

Hard disk: 10 GB 3.5" IDE (easily replaced) ***

Connections: 4x USB (1.1, not 2.0), VGA, audio in/out/mic, modem

Power: 12 VDC, 8 W (most of which is the hard disk)

Included accessories: USB keyboard, USB 2-button mouse, USB ethernet adapter, USB extension cable, AC adapter, telephone cable

*** The hard drive that ships with the decTOP appears to have a locked boot sector which prevents any boot loader from being installed. This has been resolved! I tried using the manual partition editor during installation, and it worked. Unfortunately, since the drive is now unlocked, I can't go back and test exactly what it was that made the difference. Thanks to Paul Chin for showing that it could be done!

Links to other sites about the decTOP/PIC hardware:

http://pair.offshore.ai/pic/

http://www.amdboard.com/pic.html

http://www.windowsfordevices.com/news/NS4589525979.html

AstLinux on a AMD PIC/Data Evolution decTOP (an Asterisk
PBX solution)

Uses for the decTOP

The decTOP has limited specs out of the box, but it's not a bad deal for $100. It's definitely enough to get your mom on the internet. Both the RAM and the hard disk are easily upgraded if you want more. (My decTOP now has 512 MB of RAM and a 120 GB disk.)

Many people have emailed me to ask if this would make a good MythTV machine. Although I don't have a definitive answer, my experience with video playback in VLC and Flash is that the decTOP is not nearly powerful enough to play video smoothly (i.e. 1-2 frames per second). I'd suggest looking at VIA's fanless mini-ITX motherboards instead.

Booting to a USB Flash Drive

As it ships, the decTOP boots to an error prompt because there is no valid boot media. The internal disk has been wiped. No BIOS options are available, or at least I haven't found out how to access them yet. The good news is that the decTOP will try to boot from a USB storage device automatically if one is present. My USB drive is actually a USB SD card reader with a 1GB SD card inside, but it seems to work just fine.

To create a bootable USB disk, I used syslinux. Most of the documents on the web about syslinux describe how to use it on a Linux system (e.g. here); since my primary machine runs Windows, I'll describe the process on Windows. It's pretty simple:

Make sure that the flash drive is formatted to something sane like FAT16 or FAT32. I don't think that you can put NTFS on a flash drive, but I have seen several that come with "raw" file systems by default.

Download and unzip the syslinux package, open a command prompt, and go into the [syslinux]\win32 directory.

Run syslinux -sma [X:], where X: is the drive letter of your USB drive. (Try not to do this using the wrong drive letter.) Most of the documentation out there omits any mention of the "m" and "a" flags, because they don't exist on the Linux version of syslinux. You need them. (Or, on Linux, you need to write the master boot record in some other way.)

You can try booting that flash drive now if you want, or you can just keep going to the next step.

Installing Ubuntu

Now, to the good part: installing Ubuntu. First question: which distribution/version/installer should you use? Installer is easy: use the alternate install CD image, not the live CD image. The live CD image will boot and run, but running the installer from within Ubuntu takes more than 128 MB of RAM. Version is easy, too: use 6.06. There's a problem with the 7.04 alternate installer that won't let you install from a USB key for some reason. The choice of distribution (Ubuntu or Xubuntu, basically) is up to you. I installed Ubuntu at first, but it's kind of slow. Xubuntu is a little more responsive. Both work fine, though.

Download your choice of installation CD image from the Ubuntu site. You should have a file with a name like "xubuntu-6.06.1-alternate-i386.iso". Either burn that file to a CD or unpack it using a program like 7-zip. Copy all of the files on the CD (or in the unpacked directory) to your USB drive.

Next, follow these instructions on the Ubuntu wiki:
Installing Ubuntu from a Flash Drive. A summary of these steps is as follows:

We've already made the USB stick bootable and copied the files onto it.

Don't bother moving the files in /isolinux or in /install into the root directory. Instead, rename the /isolinux directory to /syslinux.

In /syslinux, rename isolinux.cfg and isolinux.bin to syslinux.cfg and syslinux.bin.

Edit syslinux.cfg and replace all instances of "kernel /install" with "kernel ".

Delete the file /dists/stable, create a new directory /dists/stable, and copy the files from /dists/dapper into /dists/stable.

Boot from the flash drive! (If you want ethernet, now would be a good time to make sure you've got the USB ethernet adapter plugged into the decTOP and connected to your network. Autodetection works like a charm on that little guy.)

Go through the default install process up to the point where it asks you about your CD drive. Say "no" to floppies, say "no" to manually selecting a location. Allow this step to fail. Once it has failed, you'll be back at the main menu.

Use Alt-F2 to switch to a different virtual console. Hit enter, then sneakily mount your USB drive at /cdrom using this command: mount -t vfat /dev/sda1 /cdrom. Use Alt-F1 to switch back to the first console where your menu is waiting.

Select the "detect CD-ROM" option again (it should still be highlighted). Everything should proceed smoothly from here, as if you were installing from a CD-ROM.

The installation process takes a while. You have to answer a few questions here and there, but mostly it's going to be an hour or two of waiting now.

Once installation is finished and you boot up your installed OS for the first time, be prepared for a nasty surprise. The X server will fail to load, and you'll be left staring at a screen that asks "Would you like to view the X server output to diagnose the problem?". This brings us to the next section.

Configuring Ubuntu

Go ahead and view the output. It's going to gripe about your mouse: (EE) Failed to load module "mouse" (module does not exist, 0). It gripes about some other things, too, but the mouse is the show stopper.

The problem is that the X server has no "mouse" module installed. It should be using "evdev" instead, but for whatever reason, it isn't configured properly. We have to edit the config file (/etc/X11/xorg.conf) ourselves.

The evdev module can be configured to find your mouse in one of three ways: by port name, by mouse name, or by autodetection. Unfortunately, autodetection is broken, so we're stuck with either binding evdev to a particular mouse or to a particular USB port. I am choosing the port option since I'd like to be able to swap mice without editing a config file. This Advanced Mouse HOWTO discusses all three options in more detail.

Here's a step by step breakdown of how to configure the X server to use evdev bound to a USB port:

Use Alt-F1 to switch to a text console. Log in.

Type more /proc/bus/input/devices to list the devices attached to the system. Look for your mouse. Mine is called "Logitech USB Receiver". (You'll want to know that name if you're using the bind-to-name evdev config.) The important line for us is P: Phys=usb-0000:00:0f.4-1/input0 or something similar. This is the port you need to specify to evdev.

Now, open the X config file: sudo vi /etc/X11/xorg.conf (root password is the same as the password you set up for your own login)

Edit the Section "InputDevice" to look like this:

Section "InputDevice"
Identifier "Configured Mouse"
Driver "evdev"
Option "CorePointer"
Option "Phys" "usb-0000:00:0f.4-1/input0"
EndSection

The value for the "Phys" option is whatever the "Phys=" line said in /proc/bus/input/devices. (This solution came from here.) Save this file and exit.

Restart the X server: sudo /etc/init.d/gdm restart

Congratulations! You should have a working Ubuntu installation.

Unresolved Issues

No audio yet. Linux and ALSA does have support for CS5535 audio, but Ubuntu didn't automatically install the audio device. I haven't looked into why yet. If you figure this out before I do, let me know how you did it!

All material on this site Copyright (C) 2007 Jonathan Scott. All rights reserved.