NoHdd (uClibc) ps2 bootable memory card instructions: (revision 2)
http://playstation2-linux.com/projects/nohdd


based heavily on ps2nohdd,Thanks Patryk!
(Sorry my instructions arn't that detailed, If you get lost just post a message in the forums or try out one of the pre-made images)

If you just want to try out one of our pre-made images:

There are two images available at this moment, they are:

uclibgz_4096.img - 400k image (4 megs of working space) image file. It has most commands that you're used to with bash. but that's about it..

To make this work, copy it onto your memory card, then add the following line to p2lboot.cnf:
"NoHdd 4meg" vmlinux uclibgz_4096.img 203 /dev/ram "ramdisk_size=4096" Bootstrapping InitRD

uclibgz_6144.img - 1meg (6 megs of working space) image file. It has everything that the 400k version has plus virtually all of the drivers on the ps2linux kit included with it. From this image, you can mount the memory cards, cd, hard disk, even usb cameras,etc are detected and loaded ;) Oh, and the network works, but not with dhcp yet.. so you have to just manually give yourself an ip address in the startup scripts.. Good luck, and lets build cool things onto this type of image, the possibilities are endless eh..
Note: This image requires that you have the xrhino kernel installed on your memory card. Sorry, but this image loads modules that require this kernel. However the 4meg image should work with any kernel so it might be a better and cleaner starting point.

To make this work, copy it onto your memory card, then add the following line to p2lboot.cnf:
"NoHdd 6meg" vmlinux uclibgz_6144.img 203 /dev/ram "ramdisk_size=6144" Bootstrapping InitRD

If you would like to Make your own image for yourself, here is how you can do it:

Download uClibc-0.9.14.tar.gz, busybox-0.60.3.tar.gz and busybox-0.60.0.tar.gz from here

uClibc:
untarball it
in the uClibc dir,
cp extra/Configs/Config.mipsel Config
edit the Config file,
comment out the CC=$(CROSS)gcc line and the CC line right below it
Uncomment the first STRIPTOOL line and Comment the 2nd one
change the KERNEL_SOURCE to your kernel source directory (if needed)
make
make install


Now you will have a uClibc wrapper and stuff installed in:
/usr/mipsel-linux-uclibc/usr/bin

Busybox:
untarball it
in the Busybox dir,
edit the Makefile,
Make it cross compile using the uClibc wrapper "CROSS = /usr/mipsel-linux-uclibc/usr/bin/"

edit the Config.h file:
enable whatever you would like here, it's well documented.

* Note: I had problems with the init.c (not letting me boot later on). So I copied the init.c from busybox v0.60.0 here before I ran "make" and everything was fixed

make
cd /root
mkdir /root/nohdd
dd if=/dev/zero of=nohdd.img bs=1k count=6144
mke2fs -i 6144 -b 1024 -m 5 -F -v nohdd.img
mount nohdd.img /root/nohdd -t ext2 -o loop


go back to your busybox directory:
./install.sh /root/nohdd

cd /root/nohdd
mkdir dev
cp /dev/MAKEDEV .
./MAKEDEV std
./MAKEDEV console
cd ..
mkdir lib

cp -a (where ever you put it)/uClibc-0.9.14/lib/* lib (If you don't need everything just pick what you need) (I personally copied everything except the *.a stuff)
cd ..
mkdir proc
mkdir etc
cd etc

create an inittab file that looks like
    ::sysinit:/etc/init.d/rcS
    ::askfirst:-/bin/sh

mkdir init.d
cd init.d

create an rcS that looks like
    #!/bin/sh
    export PATH=/sbin:/usr/sbin:/bin:/usr/bin

chmod 0755 rcS
cd /root
gzip -c -9 nohdd.img > initrdgz.img
mount /mnt/mc00
cp initrdgz.img /mnt/mc00
cd /mnt/mc00

Edit p2lboot.cnf to add this line:
"NoHdd ps2 Linux" vmlinux initrdgz.img 203 /dev/ram "ramdisk_size=6144" Bootstrapping InitRD

Owari! Finito!
Hope it works!

PS: To run things on uClibc you first have to compile it using uClibc's GCC wrapper..

If you want to help or if you have any questions just post a question in the help forum