initrd

ok, I'm trying to roll an initrd from scratch for learning purposes. I'm using cramfs for the filesystem so that I can modularize ext2 and ext3. The initrd has the modules required for ext3, a static insmod, a statis 'ash', static pivot_root, and a linuxrc that mounts the needed root partition after insmod'ing the needed ext3 ko's (like jbd, etc)

the problem comes with the reboot, I try to boot and it exec's the /linuxrc script which uses ash, calling all utilites with their full pathes and pivots root from the mount point of the root partition to /

the problem is this: all my messages are reported to the user as successes, however they're obviously not, when I give init=/bin/sh (which on my root partition is a link to bash, but in initrd is what ash is called) I try to do an ls (both by itself and it's supposed path) it says it can't find it, if I try to auto-complete on the mount point for root it says access is denied, and I'm apparently still running in ash.

so, can anyone help me here?