It seems some versions of the init scripts can handle a 'psave=' grub parameter intended to get this purpose. Puppy 4.3.1. does not have such feature, so I modified the init file as explained here:
http://www.murga-linux.com/puppy/viewtopic.php?t=38030
However, the thread remarks:
Puppy 4.3.1. seems to be particular on that extent. From this other thread: http://murga-linux.com/puppy/viewtopic. ... a7b51f00abNote: This version of init is from Puppy V4.12 initrd.zg,
This even seems to have been a 'delicate' issue. A bit ahead, on the same thread:With p421 you can use 'psave=' and specify the pup_save to use in case of several pup_saves in the same dir. To enable this in other series 4 you would need to edit the init as above.
Apparently, the 'psave=' grub parameter, which allows to make the choice, got lost in 4.3.1.Are you going to tell Barry? I've already been chastised in his blog for daring to suggest he started 4.3 from the wrong base (4.1.2 instead of 4.2.1). He doesn't see it that way, because the development method IS more advanced than either, but here is another example of things being solved for 4.2 getting lost.
So I tried to modify my init script, as advised in the first mentioned thread. To extract init from initrd, I tried several methods, the latest of which was on this very forum: http://www.murga-linux.com/puppy/viewtopic.php?p=396653
(I also tried an initrd.gz editor by Pizzasgood, but it generated two screens of errors, maybe the peculiar idiosyncrasy of 4.3.1?).
OK, so I modified the init script as required, repacked everything back into initrd.gz, put initrd.gz back within the correct puppy folder (keeping a prechanges backup), and modified menu.lst with the appropriate psave= parameter.
It keeps booting normally, but without success: boot after boot, I am presented with the menu with 0 - no pupsave, and 1, 2, etc with all the pupsaves found in the hard disk.
I have tried all kind of combinations of commands in the menu.lst: including the psubdir parameter and without it. Using the old PUPSAVE parameter (the one that requires to specify the kind of filesystem, etc). Including the psubok parameter. Nothing seems to work. I guess there is something very particular about the way 4.3.1. handles this issue.
It is not big deal because Puppy is so lightweight that my solution has been duplicating all the 4.3.1. files, vmlinuz, initrd.gz, pup-431.sfs, and my desired pupsave, into a new folder, and have the psubdir parameter pointing to each of the options from grub entries. But I find a bit annoying having such unnecessary duplication of data, and above all, I'd like to understand what is this all about.
Anybody has a clue of what is going on here? After a whole morning learning about Grub, I'm quite curious.
Would it be a feasible approach to use LILO instead?