I've uploaded new versions to
http://www.fishprogs.software/puppy/initrd/initrd.gz and
http://www.fishprogs.software/puppy/ini ... verlay.sfs.
Both need to be downloaded, since the "ydrv_overlay.sfs" now contains modified versions of "shutdownconfig", "rc.update", and "rc.shutdown".
Changes in this 30 June version:
1. The pupmode=12 is now triggered by the existence of a save folder.
If you create a new directory apporpriately named as a save folder immediately after a fresh frugal install, it will boot in pupmode=5 except for using the save folder as it's rw directory.
On reboot it will come up as a normal pupmode=12, (no shutdownconfig involved).
2. There's a new pupmode=21 (5+16), this is automatic persistence following a normal pupmode=5 boot.
Simply do a fresh frugal install, ensure that the boot parameters include ones similar to either "pdrv=sdc2:/puppy/slacko/" or "pdev1=sdc2 psubdir=/puppy/slacko".
Booting will produce the usual first boot.
A reboot should not produce a first boot, but it should contain the changes you made during first boot.
Make further configuration changes and reboot, the changes should be retained.
When you are finished making changes, add a "pfix=nosave" boot parameter.
Now, changes made during a session should be ignored.
This facility should work on any filesystem, I've tested it on ext4 and vfat.
How does this pupmode=21 work:
On shutdown, the contents of the "pup_rw" in ram, are written to an sfs file.
In "init", the contents of this sfs file are copied into "pup_rw" before the main overlay is created.
It all begins with a limitation of overlayfs:
Can't modify any read-only diretory in the stack while it is mounted, (result is "undefined").
This means that "snapmergepuppy" can't do it's thing, in either the running system, or during shutdown, since the main overlay stack is still mounted.
So if we're not running pupmode=12, about the only thing we can do during shutdown, is take a copy of the "pup_rw" in ram, and sort it out in "init" before the main overlay stack is mounted.
The copy of "pup_rw" is an sfs because it can safely store all linux files on any filesystem, and it can be read directly.
pupmode=21 is the simplist thing that "init" can do with this copy of the previous "pup_rw".
The next thing on the todo list is to produce a pupode=29 (13+16), that will be a pseudo pupmode=13.
Note1: Booting with "pfix=ram", will always produce a first boot, ignoring any saved stuff.
gyro