Linux for the IA64
Linux runs just fine on IA64. You can get a standard distribution from various places. We use Debian at UNSW. Useful individual debian packages (e.g., libunwind) are available from the apt-gettable GelatoDebianRepository.
If you don't have an IA64 box, HP have a simulator available. More information on using the simulator can be found on the SkiSimulator page.
Other help is on the Main Gelato webpage.
You may also want to look at CrossCompilation, NetBooting, and PerformanceTuning. Also at DebianInstall for installing a whole distribution from scratch.
Getting and Compiling a Kernel
Getting Kernel Source
There are three ways to get a kernel for IA64.
- Use the kernel(s) packaged with your distribution. As Linux is under the GPL, your distribution vendor must make the source available to you.
Get a numbered distribution from ftp://ftp.kernel.org/pub/linux/kernel/ For 2.4 kernels (deprecated), you need to apply the patch from ftp://ftp.kernel.org/pub/linux/kernel/ports/ia64/ that matches your kernel revision.
Use Cogito (See CogitoHowTo)
- Clone Linus's tree
cg-clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
(Local UNSW/NICTA users, cg-clone git://paulaner/home/gelato/linux-2.6-git )
- Clone the IA64 release
cg-clone git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
See the Git repositories for other trees that you can clone.
After cg-clone you will have full access to a full source tree.
To update your local tree cd linux-2.6-git and cg-update
- Clone Linus's tree
Check out Kerncomp for the current build status.
Building your Kernel
- Build and install your kernel.
To make a compressed kernel, do make compressed; the bzImage target you are used to on IA32 won't work. With recent (2.6) kernels, the compressed output is the default.
On 2.6, I (PeterChubb} use make to build kernel and modules in one go, or kbuild, a script to build in a separate directory using a cross compiler if necessary.
I use an Installation script to install my kernel; but you can do it by hand if you want.
Optimising Your Kernel
Kernels should be compiled with gcc [34].x (x>2), as the 2.9 series can sometimes produce incorrect code.
You can also try the IntelCompiler for parts of the code.
Building out-of-tree modules
Having built your kernel, you may wish to build other modules.
You need to know:
The name of the source directory (When installed, a symlink is in /lib/modules/`uname -r`/source )
The name of the output directory (When installed, a symlink is in /lib/modules/`uname -r`/build )
Then in your module source directory do, e.g.,
KERNEL=/lib/modules/`uname -r` make -C $KERNEL/source O=$KERNEL/build M=`pwd`
Platform Notes
Altix -- notes on kernels on SGI Altix machines
