I have a couple of old Game Boy Advance SP systems around somewhere, and I was wondering if it's possible to get an old version of Linux running on one. I'm just doing it for fun, and thought that it might be cool to do if it is possible.
Not Linux, but I know you can run UNIX 5 with a tool called gbaunix. You can read about the process in Amit Singh's paper on kernelthread and you can browse through the source on my unofficial fork on GitHub.
You will need a a copy of the RK05 disk image to use gbaunix. If you don't want to recompile the binary, you can
cat the disk image with the precompiled binary provided in the paper.
$ cat unixv5.tmp disks/unixv5.dsk > unixv5.gba
Linux itself will not run on the GBA SP. The reason for this is that the CPUs (one ARM7TDMI and one Z80) do not have a way to protect and manage memory. The component to do that is the MMU, which needs to be present on all computers that can run Linux.
But a variant called uCLinux (short for microcontroller Linux) has some things stripped out and could theoretically run on the Gameboy Advance SP. But I do not know if 288 KB is enough memory for this ...
Thanks to this Slashdot article, I also found a guide from 2004 with instructions on how to port Microcontroller Linux (uClinux) to the GBA. The main site is long dead, but I found a mirror via the WayBack Machine.
The uClinux cvs repo is long dead, but if you can find the September 9th, 2003 snapshot (
uClinux-dist-20030909.tar.gz), you should be able to apply the uclgba patch:
$ tar xzf uClinux-dist-20030909.tar.gz $ cd uClinux-dist $ patch -p1 < uclgba_2004-03-14.patch