Getting 2.5.44 running on Alpha Miata

This document was written to help those of you who would like to run Linux on a Alpha Miata desktop. The details of the machine used for the following are:

SRM

What is SRM, SRM is the boot firmware for the Alpha machine. Its main function is to provide an interface for booting an operating system, . Alpha Linux http://www.alphalinux.org, has a SRM how to that explains more than is needed for this document.

Some of the important SRM commands to get you started are listed below:

>>> show displays the current environment settings

>>> show dev displays the current devices found on the machine

>>> set <variable> <what you want> Sets the variable to what you want.

e.g.

>>> set ewa0_inetaddr 123.87.239.23 Sets the network interface ewa0 to IP address 123.87.239.23

>>> boot [-file <filename>] [-flags <kernel flags>] Will boot image filename and pass kernel flags to the boot process. As a warning here if the kernel image is in a directory under root i.e. /boot/<filename> then the -file option should be -file <directory/filename>.

>>> help will list commands and synopsis of help.

SRM also has two modes for the console to run in (1) is serial and (2) is graphics. If you have a serial connection then you can interact with SRM via an alternate remote serial console. To set the console use the the following:

>>> set console {serial | graphics}

2.5.44 kernel

The 2.5.44 release of the linux kernel has several issues with Alpha machines. The issues appear to have been rectified in later updates. In the gelato project we use the BitKeeper repository tool to maintain the linux kernel source tree. This means the first step of building a kernel is to extract the source from the source tree. This is accomplished with the following:

Once the tree has been extracted the source needs to be checked out of the repository with:

The result will be a source tree that can be compiled, patched and modified.

Compiling

As most of you will know the .config file takes care of the configuration of the target compilation. When compiling the kernel there are several methods that may be used to configure the kernel, these are as follows:

Or you can manually alter the .config file yourself and then run

Note** If you have an IDE CDROM and do not want to unplug it from the mainboard then do not include IDE CDROM support in the configuration of the kernel. There is a boot time bug that will slow down the boot process because kernel initialisation attempts to locate the CDROM, resulting in time out errors. This may have been fixed in later kernels.

Here is a link to a config file that will compile a 2.5.44 kernel image with minimum features Alpha Config File.

Making the necessary changes

The following are changes that were required to successfully compile and run the 2.5.44 kernel.

Changes to the standard kernel tree

The following is a well documented change that is a missing #include in arch/alpha/kernel/irq_impl.h. Add the line

#include <linux/irq.h>
#include <linux/profile.h>.
+ #include <linux/interrupt.h>

#define RTC_IRQ    8

An update of the IP version 4 driver is also required with a missing symbol NF_IP_LOCAL_OUT that net/ipv4/raw.c uses . This is rectified with the replacement of:

- #include <linux/netfilter.h>
+ #include <linux/netfilter_ipv4.h>

Note** ipv6 was not compiled into the kernel.

This will compile, however the kernel cannot boot due to the initial low level kernel jump code, at this point you should be able to get to a kernel panic! To solve this a patch supplied by Jeff Wiedemeier will work and can be found here at this link. I was unable to automatically apply this patch so I had to revert to manually applying the changes, I did not apply all the patch since I did not require PnP support. If you are using a later kernel version this patch should already be applied.

Compiling a network boot kernel

There is a little extra work involved to generate a kernel that can be used as a network boot kernel...

This will give a bootpfile that can then be installed on a remote server. I found that I could not cross-compile a bootpfile though I was able to create one on the alpha machine.

Linux with SuperPage support

The Alpha architecture also supports SuperPages, Lucy Chubb and Darren Williams are working on implementations to extend Linux with Super Page support on both Alpha and Ia64SuperPages.

IA64wiki: Alpha Linux (last edited 2004-06-22 00:52:55 by Darren Williams)

Gelato@UNSW is sponsored by
the University of New South Wales National ICT Australia The Gelato Federation Hewlett-Packard Company Australian Research Council
Please contact us with any questions or comments.