site  contact  history  index

The future of Quirky

September 22, 2017 — BarryK

My previous blog at was merged into this blog. It lumped all posts for Easy, Quirky, Puppy, and anything else Linux-related, into one category "linux".

I have identified many of the posts that are about Quirky, and added the tag "quirky", so that they can now be separated out:

I don't have an automated method to do this, so did in manually, and haven't got them all.

I have announced Easy OS as the "next generation", however, Quirky is still good, and I reckon should continue. The thing is, they are different, with different strengths and weaknesses.

Quirky started out as an experimental distribution sometime in 2013, and settled into a full-installation-only distro, but different from other Linuxes due to its snapshot/rollback/recovery mechanism. There is also a special rollback mechanism for installing and removing packages. Then later, a live-CD and frugal install was added on, though I have never thought of that as the way I want Quirky to go.

Then early 2017 I conceived Easy, a complete rethink, going back to a layered filesystem, with just one "pupmode", and support for containers.

Regarding Quirky, one problem is the slowness of the snapshot/rollback/recovery. It uses the cmptree utility. However, I could use diff to do the same thing. I ran a test, compared roofs-complete/usr with /usr, where the former is a build of Quirky in woofQ and the latter is in a running Quirky 8.3.

cmptree /usr ./usr took 195 seconds,
diff -rq /usr ./usr took 44 seconds

Ha ha, my memory gets a bit fuzzy when haven't worked on something for awhile. I have already removed cmptree. Did it back in Nov-Dec 2016, replaced with xdelta3.

Tags: quirky

Run-as-spot script fixed

September 21, 2017 — BarryK

Puppy Forum member belham2 discovered a broken symlink when (try) to run SeaMonkey as user "spot":

I wondered whether this is fixed in woof-CE, and yes it is, as they don't even have that symlink-creation line anymore:

It has been awhile since I looked at that run-as-spot code, had to think how it works. In woof-CE, support/setup-spot gets copied by 3builddistro to /usr/sbin when Puppy is being built. Ditto for woofQ.

I have fixed that symlink in woofQ.

Tags: easy

PupApps, Pup-Sysinfo, YASSM updated

September 21, 2017 — BarryK

I have updated these PETs, for the next build of Easy.

PupApps 3.0 (radky)

Pup-Sysinfo 2.7.3 (radky)

YASSM 4.1 (rcrsn51)

Getting stuck into Easy development again. There is a backlog of bug reports on the Puppy Forum, will be studying those very soon:

Tags: easy

Checks when SFS layers change

September 20, 2017 — BarryK

Puppy Linux does a lot of checking when the SFS layers change, in the init script in the initramfs and after switch_root in /etc/rc.d/rc.update. Easy 0.4 and earlier does no checks, just uses the layers as-is.

The code in Puppy is complex, and I do want some checks in Easy, but simpler. I have created /sbin/fixlayers in the initramfs, that gets called if a change in SFS layers is detected, or a version upgrade. Have tried to keep this code to just the essentials, such as ensuring the Easy boot scripts in /etc/rc.d are visible at the top of the layers.

After switch_root, I have put some checks into /etc/rc.d/rc.sysinit. For example, rerunning depmod and rebuilding the JWM menu.

Puppy does a lot of checking of the JWM PuppyPin and globicons files, however, I have left that out. It will be up to any SFS files inserted in a layer, not to mess up those files. Though, that one might need more thought.

Script /sbin/fixlayers now merges PuppyPin and globicons from the SFS layers, producing a sane desktop that keeps user customization.

Tags: easy

Managing changed SFS layers at bootup

September 19, 2017 — BarryK

Easy OS, like Puppy, runs on a layered filesystem, with one or more read-only (ro) SFS files in lower layers, and a read-write (rw) layer at the top.

The interactions of the files and folders in these layers can cause trouble. Puppy has some quite complicated code, in the init script in the initrd, and in /etc/rc.d/rc.update, to examine the layers and make sure that nothing "important" underneath is blocked by a higher file/folder or whiteout file.

The decisions made are not perfect though.

Easy 0.4 and earlier do no processing of the layers, they are just layered as-is. That is not satisfactory either.

The layers can change either by adding or removing a SFS file, or at a version upgrade. The rw layer is the .session folder, below will be session.sfs, then maybe extra SFS files such as devx-*.sfs, then q.sfs at the bottom.

File session.sfs is the accumulated sessions from previous versions, compressed and frozen as read-only.

I thought of handling the whiteout files in a radically different way: just delete all of them. That is, delete all of them in the .session folder.

At a version upgrade, this ensures that no whiteout files get frozen into session.sfs, and in a changed SFS layer arrangement, nothing from below will be hidden or renamed.

At first, this might seem too radical. However, all changes in the rw layer will not be undone. For example, you install a DEB package, then later uninstall it. This happens entirely in the rw layer.

Say that you install a package into /opt in the rw layer, then later delete /opt. There will then be a whiteout file hiding any /opt folders in lower layers. By removing the whiteout, the lower /opt will spring back into existence on top. Which is good.

Deleting all the whiteout files in the .session folder is now done in the init script in the initrd, a one-liner:

find /mnt/${WKG_DEV}/${WKG_DIR}.session -type f -name '.wh.*' -delete 2>/dev/null

But, this is only done when the layers change or at a version upgrade.

I know that this seems one step too far, and feedback from other pup developers is welcome. The Easy OS forum thread is here:

Actually, I think this will work OK because only the top layer is rw. In Puppy, where the next-down may also be rw, it gets more complicated.

Following the reasoning presented above, take one more step: why not do away with whiteout files entirely?

Later in the init script, the layered filesystem is setup, using aufs, then there is a switch_root to the working partition, then /etc/rc.d/rc.sysinit will run, which will call rc.update.

Next, I have to put some code into rc.update, to process the changed layers some more. For example, the JWM menu might need to be reconstructed.

Tags: easy

Linux kernel 4.13.2 compiled

September 18, 2017 — BarryK

Yay, back onto developing Easy OS!

I have compiled the 4.13.2 kernel. Easy 0.4 has 4.11.12. Essentially the same configuration, a few more drivers enabled. Also, these changes:

This was turned off in 4.11.12, as it caused very slow bootup on the Alpha Litebook
wasn't sure about this. It defaults to "yes" so left it at that
A driver, and I chose "yes", builtin, rather than as a module

Regarding CONFIG_PATA_LEGACY, after I release Easy 0.5, if you experience slow bootup on your machine, let me know.

The kernel source, patches and build scripts, are here:

The PET is here (42.4MB):

The kernel source is available as a SFS file (152.9MB): is big because the SFS is only gzipped.

I started thinking about updating the kernel, as I was considering trying the overlay filesystem again, instead of aufs. However, after reading recent posts in various mail-lists, decided that overlay is still not working properly.  Overlay has some config options, CONFIG_OVERLAY_FS_REDIRECT_DIR and CONFIG_OVERLAY_FS_INDEX, that promise to fix some things, however, break others. Whereas aufs, on the otherhand, "just works".

So, this 4.13.2 build is staying with aufs.

Tags: easy

Easy docs moved to

September 18, 2017 — BarryK

I had registered a new domain,, and put Easy OS documentation on it, and also started a blog.

However, reconsidered, and consolidated the blog into just one, where you are reading now. That was a couple of weeks ago. Now, have done the same thing to the Easy docs. They are now here:

I decided that it is simpler to keep everything under the one umbrella domain name. Besides, I don't really see Easy as becoming a mainstream Linux distribution -- but then, you never know, and if that does happen, maybe then Easy can have its own home.

The last few days, I have been refining shellCMS, and now my website is pretty much as I want it. So, the intention now is to move back to developing Easy.

Tags: easy

shellCMS category front-pages

September 16, 2017 — BarryK

I have added a very nice enhancement to shellCMS, per-category front-pages, and have written a tutorial page to introduce it:

Here is a front-page for the "shellcms" category:

Notice too, it has its own top-banner. Now, all posts in that category have that banner.

Tags: shellcms