Puppy from an internal CF card, that is, plugged onto an IDE cable.
The card is then recognised as a normal ide hard drive, NOT as sda1,
sdb1, etc.
This thread is one in which we are discussing PCs with the VIA passive CPU:
http://www.murga.org/~puppy/viewtopic.p ... 9&start=15
...it has a snapshot of the NTA-6010A that has a VIA Eden 433MHz CPU, with me holding a pci card, and you can see the CF card toward the back. It requires an adaptor to plug onto a standard IDE cable.
The guys at Devon IT preinstalled Puppy v1.0.3 on the CF card, but the installation can be further optimised.
Here is the content of syslinux.cfg as they supplied:
Code: Select all
default vmlinuz root=/dev/ram0 initrd=image.gz
append ide=nodma ramdisk_size=120000 PSLEEP=25 PHOME=sda1 PFILE=pup100-none-262144 PKEYS=us
It is preferable to have usr_cram.fs as a separate file.
Here is my modified syslinux.cfg:
Code: Select all
default vmlinuz root=/dev/ram0 initrd=image.gz
append ide=nodma PSLEEP=25 PHOME=hda1 PFILE=pup100-none-262144 PKEYS=us
I don't know about the "ide=nodma", left that in.
Okay, one more thing to fix. I have changed one line in /etc/rc.d/rc.sysinit:
Code: Select all
#0.9.8 want to minimise writes to usb flash...
#note, if swapon then have very big ramdisk capacity...
#is PHOME a usb partition?...
#v1.0.5 booting from internal CF flash card on IDE cable, will be hdx1, not sdx1,
#so test PSLEEP instead...
#if [ ! "`echo "$PHOME" | grep --extended-regexp "sda|sdb|sdc|sdd"`" = "" ];then
if [ $PSLEEP -gt 0 ];then #see line220, PSLEEP not defined, gets set =0.
#what we will consider is mount pupxxx on /mnt/pupxxx by loopback, then copy contents to /root.
#we need to know that the tmpfs ramdisk has enough space.
#if not, just drop thru and pupxxx will get mounted directly on /root.
#RAMDISKFREE will also include any allocated swap...
RAMDISKFREE=`df | grep "rootfs" | tr -s " " | cut -f 4 -d " "`
RAMDISKFREE=`expr $RAMDISKFREE - 7000` #leave 7M
if [ $RAMDISKFREE -gt `du $HOMEDIR/$NAMEPFILE | cut -f 1` ];then
PUPMNTPOINT="/mnt/pupxxx"
echo "PUPMNTPOINT=$PUPMNTPOINT" > /tmp/pupxxxshutdown.txt
fi
fi
As PHOME is now hda1, the "if" test doesn't work, so now testing for PSLEEP > 0, which it will be if booting from usb. (the cf card is on the ide cable so is not usb, but still using PSLEEP non-0 value)
So, the steps are, if building from Unleashed:
1. edit /etc/rc.d/rc.sysinit, as above.
2. build with separate usr_cram.fs (the default).
3. When install to usb card, edit syslinux.cfg as above.
You don't necessarily have to use Unleashed, an existing installation could probably be edited by uncompressing and mounting image.gz.
The first time it boots, a file "pup100" will be created on the CF card and it will be mounted on /root.
On subsequent boots, pup100 gets mounted on /mnt/pupxxx/ and contents copied to /root, so as to avoid writes to the Flash memory. As shutdown, /root/ is copied back to /mnt/pupxxx/ hence to pup100.
I have now got the NTA PC saving sessions to CF card, and minimizing writes. As the CF card is 128M, pup100 is only 55M, which is good from the point of view of the RAM, as the PC has 256M RAM, and 55M doesn't use up much of it.
One advantage of having usr_cram.fs separate from image.gz is "/" is now a tmpfs filesystem, which is much easier for the kernel memory manager to handle, and even though "/" is assigned 120M it will only use as much RAM as needed.