Here's a few fixes I made on my C3000:
# fix cardservices cannot find modules error during boot (doesnt do much but the annoying error goes away
mkdir -p /media/realroot/lib/modules/2.4.20
# automatically launch X if runlevel 5
head -`wc -l /etc/rc.d/rc|awk '{print $1-1}'` /etc/rc.d/rc > /etc/rc.d/rc.new
echo "if [ \$runlevel -eq 5 ]; then" >> /etc/rc.d/rc.new
echo " export HOME=/home/root" >> /etc/rc.d/rc.new
echo " /usr/X11R6/bin/startx" >> /etc/rc.d/rc.new
echo "fi" >> /etc/rc.d/rc.new
echo "exit 0" >> /etc/rc.d/rc.new
mv /etc/rc.d/rc.new /etc/rc.d/rc
# usb storage --> scratch this one, see my next post for a better fix!!!
mv /usr/bin/usbfunction.py /usr/bin/usbfunction.py.bak
sed -e "s#[\"/dev/mmcda1\",\"/dev/hda1\"]#[\"/dev/mmcda1\",\"/dev/hda1\,\"/dev/hdc1\"]#g" /usr/bin/usbfunction.py.bak > /usr/bin/usbfunction.py
# cardctl fix for wifi
mv /usr/bin/network.py /usr/bin/network.py.bak
sed -e "s#/usr/sbin/cardctl eject #/usr/sbin/cardctl eject 0#g" -e "s#/usr/sbin/cardctl insert #/usr/sbin/cardctl insert 0#g" /usr/bin/network.py.bak > /usr/bin/network.py
# enable fsck during boot
cd /media/realroot/lib
cp /lib/libblkid.so.1.0 .
ln -s libblkid.so.1.0 libblkid.so.1
cp /lib/libuuid.so.1.2 .
ln -s libuuid.so.1.2 libuuid.so.1
cp /lib/libext2fs.so.2.4 .
ln -s libext2fs.so.2.4 libext2fs.so.2
cp /lib/libcom_err.so.2.1 .
ln -s libcom_err.so.2.1 libcom_err.so.2
cd /media/realroot/sbin
cp /sbin/fsck .
cp /sbin/e2fsck .
ln -s e2fsck fsck.ext2
ln -s e2fsck fsck.ext3
# update init (pivot)
cp init.txt /media/realroot/sbin/init
chmod 755 /media/realroot/sbin/init
# update halt (reboot) --> see my next post for a better solution!!!
mv /etc/rc.d/rc6.d/K94pcmcia /etc/rc.d/rc6.d/_K94pcmcia
cp halt.txt /etc/rc.d/init.d/halt
chmod 755 /etc/rc.d/init.d/halt
The updated halt script attempts to unmount everything cleanly, however, / refuses to remount as ro so the result is two orphaned inodes
The updated init script can now boot and pivot even if there is an inserted cf card. It also does a fsck on the internal disk before mounting it to fix the uncleanly unmounted filesystem. From my testing, this will allow the C3000 to be suspended without the light staying on.
note: see my next post, the reboot thing works now with a clean remount of /