site  contact  subhomenews

NVMe support in Easy and Quirky

April 09, 2018 — BarryK

Recently, Puppy Forum member 'scsijon' alerted me to the new NVMe Solid State Drives, and I compiled the Linux kernel with support for these drives enabled:

http://bkhome.org/news/201803/linux-kernel-41427-compiled.html

However, that is only the start of it. There are several scripts in woofQ (the Easy/Quirky builder) that need to be modified. 'wdlkmpx' has been adapting woof-CE to support NVMe:

https://github.com/puppylinux-woof-CE/woof-CE/issues/1115

The last couple of days, I have sifted through the woofQ scripts. Basically, just had to search for the string "mmc" or "mm", where there is special handling for MMC drives (SD cards), and add the special handling for NVMe.

NVMe drives have device nodes in /dev of the form "nvme[0-9]n[1-9]". Partitions are appended as "p<number>", for example "nvme0n1p3".

We should be ready to go for NVMe with the next release of EasyOS, coming soon.

Useful links on NVMe:

https://www.pcworld.com/article/2899351/everything-you-need-to-know-about-nvme.html

https://wiki.archlinux.org/index.php/Solid_State_Drive/NVMe

https://wiki.gentoo.org/wiki/NVMe

https://itpeernetwork.intel.com/finding-your-new-intel-ssd-for-pcie-think-nvme-not-scsi/ 

Note, I have compiled kernel 4.14.32, getting ready for the next release of EasyOS.

Tags: easy, quirky

Module-loading options fixed

March 20, 2018 — BarryK

The BootManager, /usr/sbin/bootmanager, which is in all pups going back many years, has three options for choosing which modules to load at bootup. There is "blacklist", "add" and "preference".

The "blacklist" option manages a list of modules that are blacklisted, that is, will not be loaded. This list is in variable 'SKIPLIST' in file /etc/rc.d/MODULESCONFIG, which is written to /etc/modprobe.d/blacklist.conf by /etc/rc.d/rc.sysinit at bootup.

One qualification though, a blacklisted module can still be loaded manually, using the 'modprobe' utility, and will also be loaded if it is a dependency of another module that is loaded. Note, if you want to absolutely blacklist a module, including the above two, a line like this  in a .conf file will do it: "install <module name> /bin/false"

The "add" option is a list of modules that will be loaded, that would not have done so automatically. This is variable 'ADDLIST' in /etc/rc.d/MODULESCONFIG, and they are loaded by /etc/rc.d/rc.sysinit

The "preference" option is to give one module preference over another, in the situation where two (or more) are contenders for the same hardware. This  was variable 'PREFLIST' in /etc/rc.d/MODULESCONFIG, and was loaded by 'pup_event_backend_modprobe'. However, this script has been removed, see earlier blog post:

http://bkhome.org/news/201802/revisiting-pupevent-first-changes.html

Also, variable 'PCI_OVERRIDES' is no longer supported, now removed. The "preference" option is removed from BootManager.

It's ok, the "preference" option is redundant anyway, blacklisting suffices.

Tags: easy, quirky

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:

http://bkhome.org/news/201611/investigating-device-mapper.html

http://bkhome.org/news/201611/device-mapper-compiled.html

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):

https://www.redhat.com/archives/linux-lvm/2017-May/msg00053.html

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:

http://bkhome.org/news/201611/qsync-ntp-time-sync.html

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

http://www.murga-linux.com/puppy/viewtopic.php?t=42978

...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. 'timesync.sh' 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:

PE_SERVICE_MANAGER='network%cups-net-fixONESHOT:qsyncONESHOT'

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:

http://distro.ibiblio.org/quirky/quirky6/project/woof-project/woof-project-20180301.tar.gz 

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:

PE_SERVICE_MANAGER='network%cups-net-fix'

/etc/init.d/cups-net-fix is a service that will run after the network is up. This is handled by /etc/rc.services 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/rc.services 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):

http://bkhome.org/docs/pup_event/pup_event-service-management.htm

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

PE_SERVICE_MANAGER='network%cups-net-fixONESHOT'

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