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:
#define BB_CAT
#define BB_CP
#define BB_DD
#define BB_DF
#define BB_DU
#define BB_GREP
#define BB_HEAD
#define BB_KILL
#define BB_LS
#define BB_MKDIR
#define BB_MORE
#define BB_MOUNT
#define BB_MV
#define BB_PS
#define BB_PWD
#define BB_RM
#define BB_RMDIR
#define BB_SLEEP
#define BB_TAIL
#define BB_TOUCH
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.