site  contact  subhomenews

Thinking about service managers

February 13, 2018 — BarryK

These are just "out loud" thoughts...

There are many service managers that derive from, or were inspired by, a package called 'daemontools'. Runit is one of them.

I have been sifting so many of the service managers, with maybe init replacement, but have always been left discontented.

Trying to pin down why this discontent...

The emphasis on automatic restarting of daemons. Why? If a daemon crashes for some reason, I don't want it to be automatically restarted.

The lack of support for one-shot services.

Incomplete dependency management. For example, I want a service to wait until there is a network up. Nothing else to be held up. I know that I can do it by examining /sys/class/net/dormant, but fitting this in as a dependency is at best a klutz, as far as I can see, in the service managers that I have looked at.

There are lots of init replacements with service management, such as minit, ninit, cinit, myinit. Or, service management with optional init replacement, such as runit and s6. Then there are some that are service managers only, such as serel.

I got excited that Runit applets are in Busybox, until I realised how limited it is. Not the Busybox implementation, the fundamental concept of daemontools. Unless my understanding has not fully grasped the capabilities, which is possible.

Here is another...


OpenRC is developed for Gentoo, and adopted by some other distros. It is a service manager, though apparently can become an init-replacement. What is particularly interesting is that thought has gone into using it with Busybox and Busybox's init:

Download source:


However, I was unable to compile it statically, so have taken it no further.

Will keep researching...

Tags: easy, quirky

Busybox 1.25.1 Runit applets

February 13, 2018 — BarryK

There is a problem with all the puplets, including Easy and Quirky. Well, unless a developer has tackled in it their puplet.

The problem is the order of execution of service scripts at startup, for example, those in /etc/init.d -- we execute those in a fixed order, however, that is barely adequate.

It may be that a certain service script should only run after there is a network connection, for example. Or sound is working, or X is running, and so on.

I have been looking at various solutions, and liked the look of Runit. Homepage:

Then, surprise, surprise, I found that the Runit utilities are in Busybox. They are:

chpst, setuidgid, envuidgid, envdir, softlimit, runsv, runsvdir, sv, svlogd

Using Landley's Aboriginal Linux, the older chrootable filesystem with uClibc (he has shifted to musl, unfortunately), I have compiled Busybox statically with those Runit applets enabled. I also enabled these network applets:

inetd, udpsvd, tcpsvd

Here is the PET:

...however, don't install it, as it will replace all the "full" utilities with symlinks to busybox. For example, 'sort' and 'date'. If you really want to use it, open it up with the 'pet2dir' utility, then copy the 'busybox' executable, then the above applet symlinks.

I have also compiled 's6' statically, and there are PETs, however, it is a solution that will add megabytes to the build. So, at this stage I am favouring Busybox Runit. To actually use it, is next on the agenda.

Here is an interesting read: 

Tags: easy, quirky

woofQ uploaded, 2018-02-11

February 11, 2018 — BarryK

This is the latest woofQ, as used to build Quirky Xerus 8.4.

Uploaded as a tarball here:

I also updated the woofQ Bones repository. Read about Bones here:

And woofQ and Bones here: 

Tags: easy, quirky

EasyShare file and printer sharing, v0.3

February 02, 2018 — BarryK

At first there was QuickSamba, then with EasyOS 0.7 the name changed to EasyShare.

Now, EasyShare has been almost completely rewritten, with a more dynamically-changing GUI and support for SSHFS.

There is a tutorial, which I have also had to rewrite:

This is an early release, and there are some "peculiarities" and limitations. EasyShare 0.3 will be in the next release of EasyOS, 0.7.1 or later.

Tags: easy

Busybox 1.27.2 compiled statically

January 25, 2018 — BarryK

The last time that i compiled Busybox statically, it was version 1.25.1, using Landley's Aboriginal Linux, chrootable root-filesystem. That was late 2016, and i have been using that up until now.

I wanted to enable some more applets in Busybox, 'nsenter', 'dnsd' and 'inetd', so went through the exercise again.

I downloaded the latest stable source, version 2017.02.09, of Buildroot, from here:

This defaults to using Busybox 1.27.2. I added my own 'busybox.config', and jamesbond's 'guess_fstype' applet patch.

Then ran:

# make menuconfig
# make uclibc-menuconfig
# make busybox-menuconfig
# make

I didn't change much. Chose target of x86_64 nocona CPU, and for uClibc turned on 'wchar' and 'locale' support.

There were a couple of fails. I had to replace /usr/include/limits.h in the host system (EasyOS Pyro64 0.7) with limits.h from Xerus64.

Then Busybox compile failed and I had to disable 'nfs' support for the 'mount' applet. I can live with that. It is probably something lacking in the uClibc configure options.

Anyway, got there. If any pup builders want the latest Busybox, statically compiled, with lots of applets, here is the PET (728KB):

EDIT 2018-02-09:

I reverted to the 1.25.1 busybox PET. Testing the above, something seemed not quite right (got a hang at bootup). When building with "make menuconfig", using the .config from 1.25.1, an incredible number of configure options were flagged as no longer valid, and maybe something has changed to cause the problem. I might have to advance the version number more gradually, and maybe go back to Landley's Aboriginal Linux as a precaution.

Another thing. The motivation to upgrade was to enable some more applets, including 'dnsd' (domain name server), however, it (dnsd) doesn't work. Really weird, but I did a search with google and it seems that "nobody" actually uses it. I have successfully used 'bind' and 'dnsmasq', so I think that I know what I am doing, regarding dns servers. The busybox dnsd does not respond to the port.

Tags: easy, quirky

EasyOS Pyro64  version 0.7 released

January 18, 2018 — BarryK

Version 0.6.6 of the Pyro64 series of Easy was released on January 2, 2018:

That was followed by the Xerus64 series of Easy, version 0.6.8, on january 4:

Back onto Pyro, version 0.7 is now out:

The big news for 0.7 is inclusion of EasyShare, which is introduced here:

Forum feedback here:

Note that I have future plans for EasyShare. I am thinking of adding NFS as an alternative to Samba, for Linux-to-Linux file sharing. EasyShare will offer the choice of either.

Tags: easy

Easy network printing with CUPS

January 12, 2018 — BarryK

I have been trying all day to setup printing over a small network, just two PCs running Easy 0.6.6, connected to an ethernet router (and to the Internet via wi-fi wan, to my mobile phone hotspot).

One PC, my "midi-tower", has a Brother HL-2040 laser printer connected via USB port. Local printing works fine. The other PC is my Mele "mini-pc", and I want to be able to print from it.

The problem is, I cannot get the "ipp" protocol to work. I have studied online documentation, and can get the client machine, my mini-pc, to see the remote printer, however when do an actual print, get the dreaded "Filter failed".

As stated, I have messed around all day, trying different things. Then, I found something that "just works", very simple. I would like to acknowledge "paulkerry" for this info:

Just a comment: there is a lot of outdated, vague, ambiguous and misleading documentation about CUPS online. For example, one "very official" site explained the format of the ipp protocol as:


...without explaining that only "hostname" and "printername" must be substituted, and the text "printers" must be left as-is. There wasn't even an example, nor was it properly explained how to find the printername.

Anyway, I did learn how to specify ipp properly, but got stuck at "Filter failed".

The method described by paulkerry works, so here is a little tutorial to explain how to set it up. Note, I plan to semi-automate this, by extending QuickSamba, which I plan to rename to EasyShare. Anyway, the tut...

1: Firewall

I ran the firewall setup on both client (my mini-pc) and server (my midi-tower) PCs, so that the CUPS port (631) is enabled. In this snapshot, I have also enabled Samba ports, but that isn't necessary for just printing with CUPS:


On the server-PC, just setup the local printer as you normally would, but tick some extra boxes...

2: Server PC

You need to have the cupsd daemon running and point the web browser at http://localhost:631. In Puppy/Quirky/Easy, you do this by running the "CUPS Printer Wizard":


A window will popup asking if you want to add a new printer, and you click "Yes", then you will get the CUPS web interface:

image on "Adding Printers and Classes", then the next window:

images each of those, 1, 2, 3 and 4. Do not miss "Change Settings". Probably "Allow remote administration" is optional, but I enabled it, as I was then able to bring up the CUPS web interface of the server-PC on my client-PC. Next window...

...well, anyone who has setup a local printer will be familiar with this. Continuing, as per usual, except an important checkbox to tick...

...the first two boxes are pre-filled. It is not essential, but useful, to fill "Location". And, you must tick "Share This Printer".

In the next window, you choose a driver...


And set some printer options...


That's it, the server-PC is setup. Before setting up the client, you will need to know the IP-address of the server. A few ways of doing that. Open a terminal and type "ifconfig", and you will see it -- in my case it is "":


In Puppy/Easy/Quirky, there is no need to edit the /etc/cups/cupsd.conf main configuration file, as it is pre-configured OK. Note, for this tutorial, I am running pristine EasyOS Pyro64 version 0.6.6.

Now for the client-PC...

3: Client PC

Over on my Mele mini-pc, setup is easy-peasy. I created file /etc/cups/client.conf...


...with content just one line, "ServerName <ip address of server>"

Finally, restart the cupsd daemon...


...and run "lpstat -t" to verify that the remote printer is found.

That's it, nothing more to do. If you ran an application and choose "Print...", the remote printer will be offered, in my case, my Brother HL-2040.

Also, the CUPS web interface of the server can be accessed from the client, by going to "" in the client web browser.

As stated, I have thoughts how this setup can be semi-automated, including automatic creation and update (if the ip-address changes) of /etc/cups/client.conf. Stay tuned.

Tags: linux, easy, quirky

EasyOS Xerus64 0.6.8 released

January 05, 2018 — BarryK

The last couple of releases of EasyOS have been the "Pyro" series, built with packages compiled from source in OpenEmbedded. The latest of these is 0.6.6.

Earlier, I was building EasyOS with Ubuntu 16.04 (Xenial Xerus) DEBs, the "Xerus" series, the most recent being 0.6 on October 18 2017:

Some of the testers prefer the Xerus series, due to the large Ubuntu repositories. But also, a couple of testers of the Pyro series have reported system hanging, and I would like to find out if we have the same problem building with Ubuntu DEBs.

So, here it is, a new release of EasyOS Xerus64 (for x86_64 CPUs) version 0.6.8.


Instructions for writing to a USB-drive and booting:

This build has all of the latest features, such as QuickSamba, ready for testing!

If you are a newcomer and want an overview of Easy, go here:

To join in the discussion on the Puppy Forum, go here:

Extra notes, for the specialist:

0.6.8 is built with the 4.14.11 kernel, source, patches and build scripts here:

Easy and Quirky are built with woofQ, a fork of woof2 (from which woof-CE also forked). Here is a tarball of the lastest, used to build Easy 0.6.8:

Have fun!

Tags: easy