I'm trying to make my own LiveCD, from scratch, with little or no knowledge of Linux's internal workings. (Yeah, I know, a recipe for disaster

).
So far I've got a setup where I can make a bootable ISO with ISOLINUX, kernel 2.6.20, an initrd image containing busybox (and quite a bit of unneccessary stuff that I'd put on the CD proper if I knew how to find which device the CD was in and mount it) set as the root partition (read-writable), and test it with QEMU. What I don't have is a complete init script (what I do have is probably incorrect as it's a shell-script that echos and loads /bin/sh, not a SysV script) or any modules (though I compiled RAM, IDE and other stuff into the kernel).
When I load QEMU it seems to boot fine, until just after it loads the ramdisk, when it goes:
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 224k freed
Warning: unable to open an initial console.
and hangs.
Setting init to /bin/sh doesn't do anything either.
I've googled this and found references to compiling Unix pty support into the kernel (which seems to be there), and devpts (which is in the source but I can't find it anywhere in the xconfig or menuconfig menus). That was for kernel 2.6.1 though (and I can't get menuconfig or xconfig to work with 2.6.1). I've also been told that I need /dev/console, /dev/tty0 and /dev/pts to be there in order for it to work, but I have no idea how to get this working or check it on a LiveCD which doesn't let me do anything upon booting.
Is there anything I've misssed (and there should be - I don't know anything about the way the kernel works, and I was hoping to learn by doing this LiveCD!)?
EDIT: Current fstab (in the initrd):
Code:
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/ram0 / ext2 defaults 0 1
/dev/hdc /media/cdrom0 iso9660 ro,user,noauto 0 0
/dev/hdd /media/cdrom1 iso9660 ro,user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
none /dev/pts devpts mode=0620 0 0
#devpts /dev/pts devpts gid=4,mode=620 0 0