The RAMdisks that are available for popular devices are usually fine for getting started, but sooner or later you will need to make our own. The steps involved are:
Put all the files you want to put on the disk in a suitable directory with the correct directory structure;
Zero out a block of memory (this is so that the spare space in your RAMdisk compresses as much as possible - if it was full of whatever random stuff was in ram at th time it would waste space in the final RAMdisk);
Make a filesystem in this memory;
Mount it;
Copy the files you prepared into it;
Unmount it;
Compress it.
So here's an example. The size of the RAMdisk is 2MB, your prepared files are in the directory preparedfiles, and we are making a conventional ext2 RAMdisk, rather than something more exotic. /mnt/ramdisk should already have been created as a mount point. You will need to be root.
dd if=/dev/zero of=/dev/ram bs=1k count=2048
mke2fs -vm0 /dev/ram 2048
mount -t ext2 /dev/ram /mnt/ramdisk
cp -av preparedfiles /mnt/ramdisk
umount /mnt/ramdisk
dd if=/dev/ram bs=1k count=2048 | gzip -v9 ramdisk.gz
The -m0 option to mke2fs specifies that no extra space for the super-user is reserved - again to minimise the size of the filesystem.
To see what is in an existing RAMdisk you need to gunzip it and loop-mount it as a filesytem. Your kernel need loop support for this to work, but a desktop kernel will nromally have this (it's really useful). Lets say you have a RAMdisk called ramdisk_ks.gz (from the Assabet distribution). It's a good idea to work on a copy of the disk, not the original. Do this (/mnt/ramdisk should already have been created as a mount point and you will need to be root):
gunzip ramdisk_ks.gz
mount -o loop ramdisk_ks /mnt/ramdisk
Now you can see the contents by browsing /mnt/ramdisk like any other filesystem. You can even add files by copying them in if there is space left in the RAMdisk. The kernel needs to have support for the filesystem used in the RAMdisk.