So I finally got the Treo to boot Linux.
For some reason the Greenphone didn’t want to act as a reliable SD card reader but I found a program called Card Export that turns the Treo into an SD card reader. That let me copy the files onto the card and got Linux booting.
However, it seems busybox’s /bin/sh is being run as init and there’s no ls applet. I suspect that I’m stuck in the initrd. It’s supposed to load the .ext2 file I put on the card but perhaps it only reads FAT16 (which is all the Treo 650 supports by default). I was using a FAT32 card (since my customized ROM includes a FAT32 driver).
I still haven’t got a kernel built (I’m about ready to switch to a Linux-hosted build environment) but I managed to find a binary distro.