Garux : a Linux bootloader for the Palm OS


What is Garux ?

Garux is a loadlin-alike Linux bootloader for the Palm OS. Its job is to stop the Palm OS, and to start a Linux kernel right after.

Why is it so specific ?

Most bootloaders are started at very early stage, virtually right on boot (i.e. when you press the power button). As you probably know, when a Palm PDA is started, it boots off its ROM chip (we mean started as after a hard reset). Using a standard bootloader such as U-boot would then mean to overwrite the ROM of the PDA, that is to say the Palm OS. This is either impossible (some PDAs like the Tungsten E cannot be flashed), either very risky, since a single bug would turn your PDA into a useless doorstop.
That's why Garux was invented : it is a bootloader that is ran on top of Palm OS. Its job is to unload the Palm OS from memory, and to start a Linux kernel image. However, Garux has a specificity that makes him very different from other bootloaders : it embbeds its own kernel image. That means Garux has to be rebuilt from its source code every time you want it to load a different kernel image. This might sound pretty harsh at first, but it's indeed very usefull : it let you distribute a simple .prc file which contains all the end-user needs.

Current status

Garux is now supporting a wide range of PDAs :
Palm Tungsten EFirst PDA to be supported by Garux. Should work
Palm Tungsten TNot yet tested. Should work
Palm Tungsten T3Not yet tested. Should work
Palm Tungsten LifeDriveShould work

Tools needed to compile Garux

In order to be able to compile software that will run on the Palm OS, you'll need a PalmOS SDK. There is a free Palm OS SDK called prc-tools which uses the Gnu Compiler Collection. You'll need this to be able to compile Garux.
Whatsoever, if newer Palm OS devices sports different kinds of processors (X-Scale, OMAP, etc...), former one used to run a 68000 processor. In order to keep a binary compatibility, newer devices runs a 68k emulator. And even though, they are still faster than their predecessor because their CPUs are way faster (and also because the Palm OS itself doesn't use emulation but is coded natively for the host CPU). However, Palm OS applications can be compiled natively for ARM : you'll gain speed, but you'll lose backward compatibility as a tradeoff. But compiling ARM binaries isn't that easy : you must create a 68k binary which bundles your ARM binary as a ressource. All of this has been done in Garux, so you won't have to bother about it.

How does Garux work ?

What have we done ?

Here are the problem we ran into, and here is how we solved them :


Appart from this documentation, this website also offers : We do not provide email support for now, since this website is rather targetted to computer-savvy people.


Here are a few websites I recommend (even though some have nothing to do with Garux !) :
Website hosted on SourceForge.