I'll outline the basic process I used...
First, grab a copy of the rootfs for the 5600. They were available on Sharp's developer site, but those disappeared a while back. I have a mirrored copy here:
http://zaurus.duelmonsters.ca/files.
Starting with that rootfs, I proceeded to rip the original rootfs from my zaurus, excluding /home, /dev, and /var, IIRC (because of the way the Z works, those are stored differently from a normal Linux distro). I can't remember if I had to exclude /proc or if it was already excluded.
After that, I set everything up by untarring the base rootfs (the one I have mirrored), and then untarred the default 1.32 ROM rootfs which I ripped off my 5600. I then had something I could built from there to create a ROM identical to the 1.32 ROM. But I didn't. I proceeded to modify it.
I took out the /root/.home_default.tar file and untarred it to modify it, as that's what gets placed in the home partition when you format it.
Before going any further, I'll explain a basic of the Z's root filesystem. Everything outside of /home is
read only. Only files within /home are read-write. So everything that need to be read/write, is stored within /home, with symlinks pointing into it. Symlinks are used a GREAT DEAL in a Zaurus ROM.
From that basic root filesystem, I proceeded to modify it however I chose, including (since last August when I started the project) replacing the default (crappy) PIM with KDEPIM/Pi (a suite of ported KDE PIM apps), zipping up the .home_default.tar, .dev_default.tar, and .var_default.tar files to save space, adding and removing programs, compressing some other large files (like the startup screen, which also got replaced), and many other minor changes.
In addition to simply adding programs, I did a small bit of code hacking to provide the version number functionality pictured
here. The bottom third of that screen was modified to read the version number from /etc/watapon_ver. It wasn't that hard, but it was my first work with Z coding ever. Also of note, that's not the default sysinfo application, it's a modified OPIE one. In addition to that small hack, I modified an IRC application, called NeIC, to provide minimal support for other prefixes, such as the little-used ~ or &, since not supporting those caused problems. It simply displays them as normal ops, the way I changed it.
From there, it just requires me to zip up the home directory, and run ./bin/build.sh to build the initrd.bin image.
In addition to that, I also recompiled the kernel, removing a workaround for the PXA250 cache bug (the PXA250 is found in some 5600s, the PXA255 is in others), which effectively reduced the performance by 50%. Disabling it gives a great boost in speed, with a little danger to the stability. The stability danger isn't much of a concern though.
Other than that, I packed up a few applications to conform to the modified tab structure in the ROM. This was done with a couple shell scripts.
So, it may sound like a fair bit of work, but it's pretty fun.
If you want to read some more on this ROM, there's a thread over at the OE Forums,
here.