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/sdcNB: 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/sdcThe 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):
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:
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:
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:
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 🙂
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 🙂