Have been playing further with USBflash boot creation, and discovering more and more pitfalls along the way.
Aside from third party bootlash apps, there are two Puppy menus to accomplish this, and a number of bifurcations on those.
My latest attempt was to use Puppy Universal Installer. For reasons I don't understand, choosing the seemingly obvious first option on the menu:
setup/Puppy Universal Installer/USB Flash drive/sdc Generic USB CF reader, size 244.3 MiB/ install Puppy to sdc
The only other option on this menu is apparently entitled "Superfloppy", but if you read the largish text carefully, it turns out that the option I chose is the superfloppy one, which leaves the CF card without any partitions, so that it appears simply as sdc on the desktop.
After installing, for which one must either have a LiveCD mounted or an iso opened on the system, I found that the CF card had a usbflash marker placed on it. I added the boot messages from the iso and also a pre-created 2fs file, renamed isolinux.cfg syslinux.cfg, and changed the line pmedia=usbflash to pmedia=atahd.
On rebooting, I discovered that the loader ignored the change, and booted with the sfs and 2fs files on the card. I tried renaming the usflash marker, but that made no difference, nor did moving the marker to one of the hard drives, that only accomplished automounting that drive as well.
In order to boot automatically with the sfs file on the hard drive, and be able to choose among the three 2fs files available,I had to:
1. delete the usbflash marker completely, and
2. add the arguments
after
in sytslinux.cfg
It's still not clear exactly what,
does. I suspect it's superfluous, but haven't tested this yet.
also behaves unexpectedly.
Logically, it should look only in sda1/pubsave for both the sfs and the 2fs files. But in reality, it looks for a pubsave folder in all of the available drives, including the partitionless CF card, (which can hardly qualify as an atahd).
Will try a few more test reboots to clarify this further.
Update - following numerous reboots rewrites of syslinux.cfg, I've learned that:
1. the argument
seems to accomplish nothing, leaving it out between
and
One would expect it to limit the loading of 2fs files to those in sda1/pupsave, but in fact, all 2fs files in /pupsave/ folders on all available drives are presented. Perhaps it would allow the loading of lupu_528.sfs from a drive other than sda1, if that was desired. But if the sfs is on sda1 that argument seems pointless.
2. my attempts to limit the presentation of 2fs files to those in sda1/pupsave with the entry
and
all resulted in a lockup with a message the lupu_528.sfs couldn't be found.
I tried various ways to circumvent this at the boot command line without having to modify the syslinux.cfg line, but all of these failed the same way, including the various boot drive override options
3. after removing both the pdev1= and psubdir= arguments, and leaving only
, Puppy automatically loaded both the sfs and the 2fs file from the CF card, without offering any other options. I tried putting a marker file caled atahd in the root directory of sda1, since the loader obviously can't distinguish hard drives from any other drive, but it made no difference.
4. However with configuration #3, I was able to modify the loading procedure by entering
at the boot command line. The loader then offered all of the 2fs files in the sda1 and sdc pupsave folders, as well as the "0" option.
So it appears one can amplify the last line of the syslinux.cfg file, but not contradict it.
For emergency uses, this last configuration would seem to be the best, as it's the most flexible, allowing one to choose loading from hard drive or from flash media with a simple reboot, without having to somehow get an OS running to access and edit the file.
A final (I hope!) update.
Still hoping to discover some utility in the pdev1=sdxx argument, I rebooted with the minimalist syslinux configuration last described above, and at the boot prompt entered:
This resulted in the autoloading of the only 2fs file in the pupsaveC folder (the only such folder on the system), on sdb1. That folder also contains a copy of the standard 139 MB version of lupu_528.sfs. And the reason for the pdev1 entry was to see whether that version would be loaded.
It wasn't. The loader ignored the pdev1 argument, and loaded the libreplus version from sda1/pupsave instead.
I would welcome a correction, but until I see evidence to the contrary, I conclude that the code pdev1=sdxx is entirely useless. Apparently, the puppy loader looks for the first instance of a lupu_528.sfs file, starting with either the boot media or root directory of the first partition of the first hard drive, and loads it. I forgot to test this adequately, but will do so after posting this.
The good news is that one can leave a spare 2fs file or two and a spare sfs file in another directory on a secondary drive, and call is up as needed from the boot command line with nothing more than an appropriate psubdir argument
And possibly when the usual sfs file fails for some reason, the puppy loader will deign to use the next copy in line.
Further update. Several hours more of testing leave me more dumbfounded than ever. My guess as to how the puppy loader selects the sfs file to load proved wrong, and I couldn't make any sense of what actually happend. See my next post below on loading.