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:
make a build folder and download the Ubuntu 8.04 LTS x86 Server Release into it from here:
sudo apt-get install qemu
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:
mkdir build cd build wget http://releases.ubuntu.com/8.04/ubuntu-8.04.4-server-i386.iso .
Now you need to ensure that it has no partitions on it. run fdisk and delete any partitions listed:
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:
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:
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
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):
sudo apt-get install linux-image-generic
Next we need to configure grub to use a serial port:
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
Somewhere near the top of the file add the following two new lines:
Now, find the line that looks like this:
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 terminal --timeout=5 serial
and change it to look like thgis (keeping the hash):
# defoptions=quiet splash
Finally we need to load some modules early on or it wont be able to use the CF as a disk to boot from:
# defoptions=splash console=ttyS0,115200
Append these lines to the bottom of the file:
The last thing to do is to force an update of the changes we just made so run the following commands:
ext3 ide_generic usb-storage
For good measure you can always run:
Update-inintramfs -u update-grub
but it is optional 🙂
Now all that is needed is to power off the QEMU instance:
apt-get update && apt-get upgrade
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:
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 🙂
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 🙂