~~~~~~~~~
Hi kerl.
The best (long) explanation on sfs is probably here.
The only difference is that in Puppy we use the .sfs suffix for squashfs
files instead of the "squashfs" one.
Basically, the principle is this:
you create a linux directory hierarchy of the app you want to "sfs" on a
linux compatible file system, say ext2 or ext3, then you put the files in
their proper directory. When finished, you "squash" the whole dir.
Application of the above principle to Puppy:
-- compile your app as usual, with ./configure and make;
-- install it with the command
Code: Select all
make DESTDIR=/mnt/home/someapp install
Code: Select all
make install
properly under /mnt/home/someapp instead of meshing it with your
running Puppy right away.
Enter the /mnt/home/someapp directory. Do the usual strippping of the
execs and libs at /usr/bin and /usr/lib, plus sanity checks of the
hierarchy. Check if the docs and mans are at the right place for a Puppy,
same for whatever icons and desktop files, etc.
Once you're satisfied that everything is ok, "cd" back up to /mnt/home.
Open a terminal and issue this command:
Code: Select all
mksquashfs someapp -comp xz -allroot -noappend
speed of your box.
(Please see bottom notes.)Explanation of parms:
-comp xz compresses the sfs with xz algorythm
-allroot labels all files in the dir. tree as belonging to "root"
- noappend means "overwrite previous sfs of same name" if there is one;
use with caution.
Then move your newly created sfs in the same directory as your main
Puppy sfs and...
Call up the < sfs_load > utility. Follow the instructions to integrate
your new sfs to your Puppy. The idea is to push the sfs from the left
column to the right column; the sfs's in the right column are the
active ones.
That's it!
IHTH.
~~~~~~~~~
Note 1 -- Puppy has a dir2sfs script which works fine for this operation,
but I personally prefer the longer mksquashfs command I mention
because it gives me finer-grain control.
Note 2 -- If you wish to learn more about mksquashfs, type
Code: Select all
mksquashfs --help
< unsquashfs someapp.sfs >.
This recreates the originating directory if you've deleted it.
Note 4 -- An sfs file is normally portable to other Puppies of same glibc
(aka "C library version"). BUT... check if the other Puppies have the
same libs as the Puppy you created the sfs file on. If your app needs
some special libraries, this check is a must.
~~~~~~~~~