It's already half of year since I started working on this project. So its time to show up some results. Here is the first public release of the project. This not a "beta version". It's not even an "alpha prerelease", it's just a snapshot of my current work - a proof of concept. Also I hope to simplify with the release of this snapshot the efforts of those who want to try Linux on Dell Axim X5, but can't afford or don't have time for the first - most complex - step, e.g. compiling a working kernel, setting up a initrd and a root filesystem.
Also I hope with this pre-release to attract people with good Linux knowledge to work on this project. There are very little people working on it (see the Credits section): the more of us, the faster the project will move.
And a warning: back up everything before you try it. Rebooting to Linux will clear up the whole 64Mb of RAM, so WinCE will lose it's current state. Currently Linux does not touch ROM, so rest assured that in no event you will render your Axim unusable. The worst that can happen is that WinCE will be reset to a clean state (like when you do Power+Reset).
A few screenshots of Dell Axim running Linux are available here
First of all, you need a CompactFlash memory card. Currently Linux does not support SD or MMC, and since I don't own any of these cards, it's not a high priority for me. I'll try to do them, however, when I'll finish with more stringent tasks (and obviously, if I'll get an SD or MMC card).
Also you'll need a CompactFlash card reader; there are a lot of these today, and they are cheap, so it's not a big problem at all.
You must download three files: the WinCE linux loader program, the initrd and the root filesystem tarballs. The root filesystem contains all the base files of the Familiar Linux distribution plus a basic installation of Opie (see http://opie.handhelds.org).
| File | Approx. size | Description |
|---|---|---|
| wince-loader-110404.tar.bz2 | ~100k | The WinCE loader program. |
| zImage | ~700k | The Linux kernel, version 2.6.3-hh2. |
| axim-initrd-110404.tar.bz2 | ~1.5Mb | The contents of the initrd, and a script to build up initrd. |
| axim-rootfs-110404.tar.bz2 | ~8Mb | The contents of the root file system. |
To use these files you will need Linux on PC. Not that I'm so much of a Windows hater, but it simply lacks the required functionality. I could put up a precompiled, say, initrd, but this would limit the freedom of those who have linux and likes to change the initrd.
First of all, you must repartition your CompactFlash card. Split it into two partitions, one for WinCE files and one for Linux root filesystem. The root fs must be at least 40Mb in size. Format it as ext2 (not ext3, as there is little reason to use journaled file systems on flash cards). The first partition must be formatted with the FAT file system.
If you have an USB card reader, the memory card is usually /dev/sda. If you don't have /dev/sda, you must modprobe usb-storage and sd_mod kernel modules. Now after you have inserted the card into the reader you must force Linux to re-read the partition table, since there's no hardware notification issued when you insert the card (Windows just tries to read the card continuously, that's how it 'detects' the card). For this, use the command:
hdparm -z /dev/sda
After this, you may run fdisk /dev/sda and re-partition
your CompactFlash card. The startup scripts expects to see /dev/sda1 as
the first FAT partition, and /dev/sda2 as the second ext2fs partition.
After you boot Linux on Axim they will be seen as /dev/hda1 and /dev/hda2
respectively.
Now unpack the axim-rootfs archive to the rootfs partition. You must do this as root, otherwise the important files in /dev/ will not be created (only root can create device nodes).
After this, unpack the axim-initrd tarball (as root) to some directory on your hard drive. Now run the 'axim' script (as root), this must create a file called 'initrd' of approx. 1.5Mb size.
Finally, unpack the wince-loader archive to some directory on first CompactFlash partition. Create a directory, say 'Linux', and put HaRET.exe and the .txt files there.
Okay, now you're set up. Run HaRET and click on the Run button.
After Linux boots, you can insert the PDA into the USB cradle, or use a USB sync cable. If you have hotplug set up correctly in Linux, the CDCEther driver will be automatically loaded.
After that, you can configure the new Ethernet interface that just appeared
to use the address 192.168.131.102 (this is the same address
that SynCE uses for the host). The PDA is configured with the address
192.168.131.201.
To automate this task, on RedHat-like systems you can create a file under /etc/sysconfig/network-scripts (mine is called 'ifcfg-eth1'):
DEVICE=eth1 ONBOOT=no BOOTPROTO=static IPADDR=192.168.131.102 NETMASK=255.255.255.0
After the interface is up and configured, you can ssh to the PDA. The default root password is 'rootme', like in regular Familiar distributives.
Alternatively, the PDA supports logins via the serial sync cable/cradle and via the IrDA serial port. You must set up your terminal program (I use minicom) to 115200, no flow control (neither software or hardware). For regular serial cable you must use 8N1, for IrDA use 7E1 (this is used to combat IR noise).
NOTE: if you're using IrDA NEVER use the ircomm0-99 devices for communication with the PDA - it WON'T work. You must use the plain serial device - /dev/ttyS2 in my case, or /dev/usb/tts/0 for those with USB IrDA dongles and the ir-usb driver running.
Please don't bomb me with newbie questions. Try hard to find out yourself how to solve your problems. I have so little free time, that I won't be able to work on this project anymore if I'll have to answer more than 10 letters every day. So if your letters will be ignored, don't be surprised.
Also try to drop in to the #handhelds.org channel on irc.freenode.net. There are lots of PDA people there, that can help you with non-Dell Axim-related questions (ask Opie-specific questions on #opie). You can find me there almost every day, usually between 20:00 and 24:00 GMT-3.
My email address is (I hate spam):
echo '*np*z*~m*il:ru' | sed -e 's/~/@/' -e 's/:/./g' -e 's/*/a/g'
If you wish to contribute, you're welcome. The project needs talented programmers and simply experienced Linux users. The current list of tasks that have to be done can be found in the