There are two ways of giving your ramdisk image more functionality. You can use the coreutils, or as an alternative, busybox. Busybox is more oriented at embedded systems, which you will see in it's (small) size compared to the original coreutils.
First, you need to get the source from Busybox.net. At this moment the latest stable release is 0.60.5, but there are a lot if 1.0.0-pre's, so maybe a 1.0.0 will be released soon.
If you have that, you can untar it, and take a look at the options. The options are located in the Config.h file. Just comment out the items you don't want.
I don't use all the modules that Busybox has, some simply because i don't use them, and some because i prefer the original.
Currently this are the programs i use my Config.h file:
Thats pretty small compared to what it can do. The reason why i'm not using one of busybox's shells i because i stick to bash. I'll try busybox later (remember: bash is eating more than 700K), but i'm gonna do a lot of scripting.
I also don't use the ifconfig of busybox. This is because it doesn't support IPv6, so also for this i'm sticking to the origional.
After configuring, i used make to start the compilation process. After that a executable of 47K is generated. Not bad for this functionality.
Now you can copy the busybox file to /bin, and make some symbolic links to it for every function you selected.
Now try to boot you system, and see how functionality has grown.