While openwrt and the buildroot environment is the greatest in all the firmware distro I have seen for WRT54G, I still find it a bit too hard sometimes to make a package. So I think, why not use debian which has a complete mipsel distro ?
So I first installed a NFS server on my Xbox(also debian woody), then install the NFS kernel modules on WRT54G, after a few tweaking, I can already mount and access my Xbox through NFS.
Then back on my Xbox(i386), I do a "debootstrap" but for the mipsel arch, this downloads every a base debian needed but failed in the process because it needs to chroot into the new rootfs to do the installation and mipsel of course cannot run on i386.
Briefly going through the debootstrap package of debian, I found that it is basically all shell script with one C. I then compiled the C program using the buildroot toolchain and copy over the whole package to my WL500G then try a debootstrap right on it, using Xbox as the storage server. It didn't work for the first few tries because I don't have "id", then "ar", then "printf". So I just rebuild the openwrt firmware to include these into busybox and start all over again.
This time it worked, but broke in the middle for unknown reason which seems to be related to the stability of NFS. Then I reinstalled the NFS server again using the kernel module instead of user space stuff and start again.
2 hours later, I have a fully populated and configured debian woody mipsel available. I can chroot into it and apt-get additional apps from the net. I intend to use this to build adhoc apps for WRT54G as well as testing out stuff. What next would be to build the uClibc library under this so I can run the resulting apps on openwrt.
This is not a very ideal development environment because of the limited memory available on WL500G and the CPU is slow (82 Bogomips), it takes quite some time to install large packages like gcc but one thing I am very impressed is how solid linux is. Throughout the whole process while I am building this thing(with a cpu load > 1), I can just continue to use it as a NAT router and browse the internet(like what I am doing now) without noticing that the background is heavily cranking things across the network on the NFS server. The contrast strongly with the machine I am running(typing here) which is a Celeron 700Mhz running XP with a background java that has a load of 30% CPU. If feels noticeably sluggish.
Still I need to find a way to add swap to it as I do see process being killed because of memory issue. I believe GS should be a feasible device for development use because of the extra memory and faster CPU.