site  contact  subhomenews

Linux kernel 4.14.27 compiled

March 16, 2018 — BarryK

I have compiled this in EasyOS Pyro64 0.8.1. That release came with kernel 4.14.23, which I compiled with the 'nvm' driver builtin, following advice from forum member scsijon:

  Device drivers
<*> NVM express block device

Yesterday, scsijon advised on the forum about the new very fast 'ufs' flash memory. Previously, I had the driver for this as a module. However, for the 4.14.27 compile, I have changed it to builtin:

  Device drivers -->  SCSI device support
SCSI low-level drivers
<*> Universal flash storage controller driver core
<*> PCI bus based ufs controller support
<m> Platform bus based ufs controller support

The intention is to support computers with these very new flash memory architectures at bootup.

Tags: easy, quirky

Revisiting device-mapper

March 05, 2018 — BarryK

I investigated device-mapper, for Quirky, back in 2016:

As Quirky does not have an initramfs (well, the live-CD does, but not the full installation), I was interested in the kernel patch created by Chrome OS developers, to setup device-mapper direct from the kernel commandline.

The problem is, it only seems to allow specifying devices by name, example "sda1" or by major:minor device node numbers. However, this is not satisfactory, as these assignments are subject to change. The above link contains a link to a post from me to the "linux-lvm" mail-list about this, but noone replied,

Note, that patch was v5, and and there is now a v8 (May 2017):

As the patch is not suitable, I need to run 'dmsetup' in an initramfs. My interest is to setup COW (Copy On Write), as a replacement for aufs/overlayfs layered filesystems.

First step, compiling kernel 4.14.24, with the drivers builtin:

Device Drivers --> Multiple devices driver support
    <*> Device mapper support (CONFIG_BLOCK_DEV_DM, was dm-mod.ko)
    <*> Crypt target support (CONFIG_DM_CRYPT, was dm-crypt.ko)
    <*> Snapshot target (CONFIG_DM_SNAPSHOT)
    [*] DM uevents (CONFIG_DM_UEVENT)
That last one is very interesting, will be able to use pup_event to pickup device-mapper changes. The crypt option is also very interesting.

Tags: easy, quirky

Qsync now handled by pup_event Service Manager

March 03, 2018 — BarryK

Qsync is my app for synchronizing the time from the Internet, see blog post November 2016:

Prior to that, I was using tasmod's Psync:

...which I think most of the pups are still using.

The problem with Psync is that it expects the Internet to be up. At installation. '' is copied into /root/Startup, so it runs when X starts. For ethernet, it expects the Internet to be up immediately, for wireless, has a "sleep 15".

With Qsync, I fixed the problem of only running after the network is up, by launching it from network_tray. This is a C program, that runs in the tray, and it was version 3.2.1.

Now however, I have generic mechanism to run services when dependencies are met, so I have reverted network_tray to version 3.1 (and bumped it to v3.3). /etc/eventmanager now has this:


And I have created a script /etc/init.d/qsync to launch /usr/sbin/qsync

That's it, pretty simple.

Note that Qsync is one-shot, as it just runs 'ntpdate' once at startup, to sync local time. No more sync'ing occurs while Easy/Quirky is running.

Note also, Qsync has a GUI, in the menu "Desktop --> Qsync set time from Internet".

Tags: easy, quirky

woofQ March 01, 2018, uploaded

March 01, 2018 — BarryK

This is the woofQ used to build EasyOS 0.8 and Quirky 8.5.

Tarball uploaded: 

Tags: easy, quirky

More efficient handling of one-shot services

February 28, 2018 — BarryK

In the latest release of Quirky Xerus64, version 8.5, /etc/eventmanager has this line:


/etc/init.d/cups-net-fix is a service that will run after the network is up. This is handled by /etc/ at bootup.

However, 'cups-net-fix' is a "one-shot" service, just runs at startup, no daemon in it, no "stop" option. So, once started, the pup_event Service Manager is not required anymore to monitor and stop it when the network goes down.

So, I have added a bit of extra code to /etc/rc.d/ and /etc/rc.d/rc.services_ipc, to stop the Service Manager in the cases of one-shot services, after they have started. This improves efficiency.

The enhancement is explained in the latest document here, with the new code shown in dark-blue (update 180228):

For anyone who wants use this enhancement, just append "ONESHOT" to the service name in PE_SERVICE_MANAGER:


I did consider automating it, by searching for "stop)" in a service script, and if not exist then it is one-shot. However, decided that might not catch them all.

Tags: easy, quirky

Quirky Xerus x86_64 version 8.5 released

February 27, 2018 — BarryK

Version 8.4 was released February 9, 2018, and the pace of development has continued rapidly, just 18 days later and we have 8.5.

release notes are here:

Install instructions:


Forum feedback:

Have fun!

Tags: quirky

PETs upgraded, PPM bugfix

February 26, 2018 — BarryK

Puppy Forum member 'rcrsn51' maintains the "Peasy" series of PETs. These are great apps, and some of them are in EasyOS and Quirky.

I have upgraded PeasyPDF to version 4.1:

And upgraded PeasyScan to 2.12:

The PETget Package Manager (PPM), also known as the Puppy Package Manager in official Puppy builds, has a bug in the latest EasyOS and Quirky releases.

If a PET package was selected to be installed, no download URLs were offered, only "LOCAL FOLDER".

This bug was discussed on this forum thread:

The bug has been fixed.

Tags: easy, quirky

New 'getlocalip' utility

February 25, 2018 — BarryK

I am working on pup_event, and in 'pup_event_frontend_d' I have been exploring various ways of determining when a network connection is up or down.

An offshoot of that, is I wanted a very quick and efficient way to determine the local IP-address, that is, the IP address assigned to the computer, that other computers on a network will use to access this computer.

It can be found by the 'ifconfig', 'ip' and 'hostname' utilities, though I hasten to add, not the Busybox 'hostname'. The full 'hostname' has this option:

    -I, --all-ip-addresses all addresses for the host

...that is, a capital letter I, as in "India". In my case;

# hostname -I

I thought that it would be nice to have a specialized utility to return the local IP-address. I thought about parsing /proc/net/fib_trie, however, after a bit more research, settled on this simple C program:

#include <arpa/inet.h>
#include <ifaddrs.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[])
struct ifaddrs *addrs, *tmp;
tmp = addrs;

while (tmp)
if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_INET)
struct sockaddr_in *pAddr = (struct sockaddr_in *)tmp->ifa_addr;
printf("%s: %s\n", tmp->ifa_name, inet_ntoa(pAddr->sin_addr));
tmp = tmp->ifa_next;

Running it:
# getlocalip
...bonus, it also shows the interface, in this case "eth0".

I got that code from here:

The source is in 'pup-tools-20180225.tar.gz':

BaCon Forum member 'airr' has converted it to BaCon code:


'getlocalip' will be in the next release of Easy and Quirky, in /usr/sbin.

Tags: easy, quirky