How-To – Ubuntu 8.04 LTS on a Soekris net-4501

I decided to write this how-to as there are no specific guides on Ubuntu 8.04 LTS for the net-4501, and it took a combination of configs from two completely  different approaches from two separate guides to get it all working.

I have found that the easiest way to build for the target platform of the Soekris is to make use of the QEMU emulator, freely available in Ubuntu. It lets you perform a typical installation, the way you would do for any other platform so its less confusing.

That said, there are a couple of slight differences and gotchas that this how-to will cover.

Step 1 – Preparation

Aside from a Soekris device you will need a CF card, whatever size you require, I tend to use 8GB or higher as they are quite cheap nowadays and a card reader in your host platform. To perform the installation you will need a host platform running Ubuntu. What ever you have lying around, or a VM will do the trick.

Install QEMU on your host platform if its not already installed:

sudo apt-get install qemu

make a build folder and download the Ubuntu 8.04 LTS x86 Server Release into it from here:

mkdir build
cd build
wget http://releases.ubuntu.com/8.04/ubuntu-8.04.4-server-i386.iso .

Once your environment is ready its time to prepare the CF card. As we are going to use QEMU to emulate the platform and allow a typical installation, we dont need to manually create the partitions on the card. All we need to do is ensure that it is 100% empty.

Install your CF Card and if it mounts as a partition, unmount it from the command line:

umount /dev/sdc
 NB: you can determine the device it is detected as by running the dmesg command and noting the device it is assigned. It will likely be sdc or sdd as the card will be seen and used as a SCSI disk device.

Now you need to ensure that it has no partitions on it. run fdisk and delete any partitions listed:

fdisk /dev/sdc
The commands you will need in fdisk are:
p = Print partition table
d = delete partition (you will be prompted for a number)
w = write changes to disk
? = help

Step 2 – Installation

Now you have a blank CF card your ready to run QEMU and start the install. This is actually very simple as QEMU can be controlled from the command line, so all you actually need to do is type the following command:

qemu-system-i386 -m 512 -hda '/dev/sdc' -cdrom 'ubuntu-8.04.4-server-i386.iso' -net nic,vlan=0 -net user,vlan=0 -localtime -no-acpi

This will launch a window and present you with the Ubuntu installation program your already familia with.

The only notable option within the installation is when prompted to configure your disk layout, use “Guided” without LVM and use the full disk available. if you use LVM it will add an unnecessary overhead and as the net-4501 is a GEODE Processor with 133mhz clock and 64Mb ram, overheads are not ideal.

Once it has completed its installation, reboot and allow the newly installed OS to boot up in QEMU once more.

Step 3 – Configuration

The one drawback I have found with QEMU is that you cannot copy and paste between the host and guests. This is a bit of a bind, but fortunately there are not a lot of configuration changes to make.

The first major change we have to make is to swap the kernel for one that does not require PAE extensions. To do this, type the following:

sudo apt-get install linux-image-generic

Now we can configure the serial port listener using your favourite editor (vi, nano etc.. I prefer vi so will use that in the commands):

vi /etc/event.d/ttyS0
start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
 
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
 
respawn
exec /sbin/getty ttyS0 115200

Next we need to configure grub to use a serial port:

vi /boot/grub/menu.1st

Somewhere near the top of the file add the following two new lines:

serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=5 serial

Now, find the line that looks like this:

# defoptions=quiet splash

and change it to look like thgis (keeping the hash):

# defoptions=splash console=ttyS0,115200

Finally we need to load some modules early on or it wont be able to use the CF as a disk to boot from:

vi /etc/initramfs-tools/modules

Append these lines to the bottom of the file:

ext3
ide_generic
usb-storage

The last thing to do is to force an update of the changes we just made so run the following commands:

Update-inintramfs -u
update-grub

For good measure you can always run:

apt-get update && apt-get upgrade

but it is optional 🙂

Now all that is needed is to power off the QEMU instance:

poweroff

and remove the CF card from your host.

Step 4 – Finishing up

The final thing to do is to sync the baud rate of the Soekris device to the baud rate we have used in the configs. By default the Soekris is set to 19200 baud, but we have used 115200 baud in teh configs to make things a little better to work with. We need to sync these for ease of access later on, so first open up your preferred terminal application and connect to the Soekris at 19200, with no CF card installed.

At the boot prompt type:

set conspeed 115200

Once this is set, you can power down the Soekris, install the CF card in it and boot it back up. It should boot to a prompt quite happily and your ready to configure your new embedded Ubuntu device however you need 🙂

Enjoy!

——————————-

FAQ Section:

Q: Why are you using 8.04LTS and not a more recent release?

A: As of 10.04, Ubuntu dropped support for all 486 and older style CPU’s on the premise that most people would have modern computer systems. This is a deviation from the ethos of Linux in my opinion, but it was their choice to make! I have spent weeks trying to build later versions of Ubuntu on the 4501 platform, and have built custom kernels with the right modules etc, but have NEVER had success. Your welcome to try though 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *