read-only file systems
Explanation of the Squash file system: PDF
Puppy can make use of programs that have been packaged in the SFS format which consist of a single file with the file extension .sfs
- the SFS file must be placed in the directory /mnt/home, then
- either (A) follow the instructions at (requires re-booting): Menu > System > BootManager
- or (B) follow the instructions at (does not require re-booting): Menu > Setup > SFS-Load
- soon another option will be available
- accessed through either the Menu or the command-line interface (and not by clicking on the SFS package file)
# mksquashfs SYNTAX:mksquashfs source1 source2 ... dest [options] [-e list of exclude dirs/files]
mksquashfs <path_to_directory> <path_to_directory>.sfs -noappend
Verify the installed version of mksquashfs with:
01micko writes "I made a tool (see my signature) that makes it super easy for anyone to make a pet or sfs out of debs, if you want you can try it and maybe suggest where I can make improvements. debs2pkg or alien2puppy, the former is what it says and the latter supports Slack tgz and txz formats."
Advantages of Squash file compression
"SFS-TCZ_Linker may be a good idea if you absolutely must run liveCD only (no rebooting, no session saving.) But running a standard frugal with pupsave, the Linker will add symlinks to the pupsave layer only--and later remove them, even if similarly named files or links were later added via PPM, Gslapt or other means. This is likely to adversely affect reliability and stability. With a full install any files removed would be gone forever, making it even riskier. So at least for now, if you are saving your session at shutdown I still recommend a frugal install and BootManager for adding SFS files."
Adding too many layers to AUFS reduces performance and slows down saving.
pre-1.0.7 users can use it by renaming it to usr_more.sfs
1.0.7 users can do the following
edit your rc.local to add the following lines
echo "Making more loop devices..."
mknod /dev/loop5 b: 7 5
mknod /dev/loop6 b: 7 6
mknod /dev/loop7 b: 7 7
if [ ! "`ls /mnt/home/usr_packagex.sfs 2> /dev/null`" = "" ];then
echo "Mounting /mnt/home/usr_packagex.sfs file on /.usr_packagex..."
losetup-FULL /dev/loop5 /mnt/home/usr_packagex.sfs
mount -r -t squashfs -o noatime /dev/loop5 /.usr_packagex
unionctl /usr --add --after /root/.usr --mode ro /.usr_packagex
if you are multiple .sfs files the increase then use the next /dev/loop that is empty i.e. the next usr*.sfs will go in /dev/loop6. If you run out of loops make new ones using mknod command as show above.