site  contact  subhomenews

Kernel 4.14.61 and SeaMonkey 2.49.4

August 07, 2018 — BarryK

I have compiled the Linux kernel, version 4.14.61, on EasyOS 0.9.6 Pyro64. The source, with patches and build scripts, is here:

http://distro.ibiblio.org/easyos/source/kernel/4.14.61/

There is a PET package, that will be used in the next builds of EasyOS and Quirky. There is a SFS file of the source:

http://distro.ibiblio.org/easyos/amd64/packages/sfs/pyro/

I also compiled the latest SeaMonkey, version 2.49.4. The PET is here (45MB):

http://distro.ibiblio.org/easyos/amd64/packages/pet/pet_packages-pyro/seamonkey-2.49.4-pyro64.pet

...this is for EasyOS 0.9.5 and later. Do not try and use it in any other distro, as it is linked against specific libraries, such as 'icu', that likely won't be present, or mis-configured.

Tags: easy, quirky

EasyShare probing computers to obtain hostnames

August 07, 2018 — BarryK

EasyShare has automatic discovery of shared folders and printers on the local network. To achieve this, it has to discover the hostnames of the computers, and in the case of Windows computers, the netbios-name.

EasyShare has two ways of doing this, by probing for SMB servers and then using the 'nbtscan' utility to retrieve the hostname or netbios-name, or by probing a modified dnsmasq server and using the 'nmap' utility to retrieve the hostname.

In the latter case, EasyOS (and Quirky) runs the dnsmasq server in a special configuration such that it will return the hostname upon receiving a query from nmap. A problem is that this is a corruption of how dnsmasq is normally used, so if someone wanted to use dnsmasq in the normal way, they can't.

What I want is a lightweight server that upon receiving a request, will return an arbitrary string. It would be nice if I could write such a server, but I don't know how. Instead, looking for something ready-made...

After googling, I discovered the 'identd' server. Busybox has a very cutdown version, name 'fakeidentd'. On one of the computers, run it, with any arbitrary string:

# fakeidentd HITHERE

fakeidentd listens on port 113, so we need some way to query this port, from another computer on the network. I could not see how to use 'nmap', however, found a perl script:

http://pentestmonkey.net/tools/user-enumeration/ident-user-enum

EasyOS and Quirky have a cut-down perl named "perl_tiny", and with the devx sfs, the full perl. I tried this script first with the devx loaded, so had the full perl, and it required just one more module, Net::Ident. This was easy to install:

# perl -MCPAN -e shell
> install Net::Ident
> quit

...which I made into a PET package. I then tested without the devx, and Net::Ident was missing some dependencies. Those missing deps are now included in perl_tiny.

Now, on another computer on my network, with Net::Ident and ident-user-enum installed, where 192.168.1.4 is the computer running fakeidentd:

# ident-user-enum.pl 192.168.1.4 113
ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )

192.168.1.4:113    HITHERE

...yay!

So, we have a simple mechanism to broadcast the hostname. My intention is to use this instead of dnsmasq. 'perl-net-ident' will be a PET package, in the noarch repo, and 'ident-user-enum.pl' will be builtin at /usr/sbin in woofQ.

Of course, this discovery mechanism will apply to computers running EasyOS and Quirky only. For other computers, they must be running the SMB server ('smbd' daemon in the case of Samba). EasyShare probes for both.

Tags: easy, quirky

EasyShare file and printer sharing re-written

August 05, 2018 — BarryK

I wrote EasyShare in February 2018, however, it is now re-written to be even easier. There has been internal restructuring to make it more flexible, however, from the user's point of view, the most noticeable improvement is the firewall configuration is now completely automated.

I have partly updated the tutorial:

http://bkhome.org/easyapps/easyshare-super-easy-network-file-and-printer-sharing.html

This new EasyShare will be in the upcoming EasyOS version 0.9.6.

Tags: easy, quirky

Smallest and simplest Samba client

July 31, 2018 — BarryK

This is something that I have wanted to figure out for a very long time. What is the smallest and simplest setup if I only want a samba client on a PC, not a server?

I am currently rewriting EasyShare, my easy network file and printer sharing GUI app. This is able to use sshfs or samba, but is actually designed such that samba is required. But, is it really, and if so, what files can it be reduced down to for a client-only system? Strangely, this question is not really answered anywhere on the Internet.

My EasyOS and Quirky will not function as a samba server, however, will have a sshfs server, and cups server, so can serve files and printers. However, other computers on the network may have smb or samba servers, and my PC must be able to connect to them.

basically, EasyShare uses the 'arp-scan' utility to discover the ip-addresses on the network, then 'mpscan' to find server ports. For samba/smb servers, 'nbtscan' is used to obtain the netbios-name/hostname, and for computers that serve sshfs, the 'nmap' utility is used to obtain hostname.

The sticking point is how to discover smb shares on the remote computer. Up to now, I used 'smbclient', which brings with it most of the shared libraries of the samba package.

There are some alternatives to automatically discover shares. A "share" is a name that samba assigns to a particular shared folder or printer.

I discovered that VLC multimedia player uses libdsm for samba discovery, though I couldn't see how it can discover shares. Also, libdsm only supports smbv1, which is too old. Windows 10 has dropped support for smbv1 by default, though apparently it can be enabled. However, smbv1 is considered to be a security risk.

Windows 10 does by default support smbv2 and smbv3. Ah, there is a library, 'libsmb2', with example utilities, that supports smbv2 -- however, whatever I tried to do with the utilities, they always crashed.

I did read that 'nmap' can discover smb shares, but I don't know how.

So, I am back on 'smbclient', meaning that the samba package is required. But, what else from the samba package is required? What about those 'smbd' and 'nmbd' daemons?

I was reminded about those daemons a few days ago, when one of the EasyOS testers thought that they might be responsible for his usb-stick (with easyOS on it, from which he booted) running hot after an overnight backup. This reminded me that sometime ago I noticed that the samba daemons were cpu hogs. Up to now, I have always automatically assumed that they are needed, but what for?

Note, there are lots of posts on the Internet about smbd being a cpu hog, just google "smbd is a cpu hog".

I successfully connected to a Windows 10 machine, from a pc running EasyOS and only the 'smbclient' utility -- absolutely nothing else from the samba package.

Furthermore, I studied the compile options, and created the smallest possible 'smbclient' utility. The smbv2 protocol is sufficient, so I compiled samba 3.6.25 -- 4.x is not required. I will document this exactly soon, when I put it into oe-qky-src, my fork of OpenEmbedded.

There are three packages needed, 'nbtscan', which has the 'nbtscan' utility, 'cifs-utils', which has the 'mount.cifs' utility, and the 'smbclient' utility from samba. All of this can be seen in action in script /usr/local/EasyShare/easyshare, in the next release of EasyOS and Quirky.

I have create a PET, smbclient3-3.6.25-pyro64.pet, which is 1.87MB, compared with the 10.5MB samba PET package I was using before.

For the record, here are some links:
libdsm: https://videolabs.github.io/libdsm/
libsmb2: https://github.com/sahlberg/libsmb2 

It is still on the cards that I might find a light-weight share discovery utility to replace smbclient! 

Tags: easy, quirky, linux

Gxlat language translator

July 28, 2018 — BarryK

This is brilliant! Puppy Forum member vovchik developed this around 2011/2012, however, Google changed to a paid service.

Recently, vovchik has figured out a way around this, so we can still use it for free, using a special script named 'trans'. originally, Gxlat had compiled binaries, however, now is just two shell scripts, and gtkdialog and gxmessage are used for the GUI, which we have in all the pups.

Here is the forum thread:

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

The latest PET, posted 10 July 2018, has some problems. The file was corrupted, but I was still able to expand it, the icon is missing from /usr/share/pixmaps, and it presents itself as version 0.2b.

There is an earlier version that is 0.3, so I have created a PET and it presents itself as version 0.4. I put in the icon, and modified the gxlat.desktop file slightly -- one thing, put it into the Document menu (sub-section utility), as this is less crowded.

Here is the PET (45KB):

http://distro.ibiblio.org/easyos/noarch/packages/pet/pet_packages-noarch/gxlat-0.4.pet

This will be in the next release of EasyOS and Quirky. This is really nice vovchik, much appreciated!

Tags: easy, quirky, linux

aarch64 packages imported into woofQ from OE

July 24, 2018 — BarryK

I have compiled a heap of packages in oe-qky-src, my port of OpenEmbedded, cross-compiled on a x86_64 host PC, for a aarch64 target.

These packages have been imported into woofQ, and uploaded. Here they are:

http://distro.ibiblio.org/easyos/aarch64/packages/compat/oe/

What I would like to do is boot a aarch64 Easy/Quirky distro on my RPi3. Want to get it going quickly, and the easiest way will be to use the Bamarni Pi64 Debian-based aarch64 distro:

https://github.com/bamarni/pi64/

...that is for the RPi3 B-model, which is what I have. There is a later B+ model, which the Bamarni Pi64 currently doesn't work on, but another chap has a fork of Bamarni Pi64 that does:

https://github.com/Crazyhead90/pi64/tree/linux-4.14-pi-3b-+

It should be possible to replace the Bamarni Pi64 files on the SD-card with the Quirky build. My build doesn't have any hardware acceleration, just the framebuffer driver, software-rasterized openGL, etc., but it will get me going.

Will post a progress report soon!

EDIT 20180725
Yay, got a desktop at second bootup. Needed a little fix, wasn't loading the Xorg fbdev driver. Lovely, sound works on my TV (using HDMI input),

So far, just one problem, the QuickSetup window renders with everything upside-down. That is, the "OK" button is at the top of the window. It is still usable. I do recall this problem from ages ago, but not the solution. QuickSetup uses gtkdialog for the GUI rendering.

Tags: easy, quirky

Nheko Matrix chat client

July 18, 2018 — BarryK

Purism are using Matrix for chat forums, including for the Librem 5 phone:

https://developer.puri.sm/Contact.html#matrix-chat-rooms

So, decided to give it a go. There are various Matrix client apps, and I compiled Qt5-based Nheko:

https://github.com/mujx/nheko

The PET for EasyOS 0.9.5+ (not yet released) is here:

http://distro.ibiblio.org/easyos/amd64/packages/pet/pet_packages-pyro/nheko-0.5.1-pyro64.pet

Dependencies are 'olm', 'libsodium', 'liblmdb', which are also PETs. Also 'boost' version 1.66, which is in the upcoming Easy 0.9.5.

Nheko, at startup, offered to register, where a username, password, and "Home Server" can be entered. For the latter, I entered "matrix.org", and a captcha came up in the browser to verify that I am a human.

After starting Nheko, I was in my own "room", "@<myusername>:matrix.org", but unable to change out of it. Nheko is lacking some features, but is under rapid development.

I logged in at the online browser Matrix client:

https://riot.im/app

Logged in, I was able to ratify a user-agreement, that then allowed changing rooms. I was also able to personalize my account, with email and avatar, which cannot be done in Nheko.

Started up Nheko, logged in, then hit the "+" icon and was able to change rooms. Chose "#community-librem-5:talk.puri.sm", and yay, there it is!

Hmmm, perhaps it is easier just to use the online client.

Tags: linux, easy, quirky

EasyOS and Quirky development hiatus

June 29, 2018 — BarryK

I have decided to put the development of EasyOS and Quirky on-hold for awhile, as I want to reconsider some of the basic architecture.

Various thoughts have been brewing in the back of my mind for awhile, and it has come to a head as I have been implementing EasyPak, my concept for "universal packages".

Universal packaging systems include Flatpak and Snaps, and the more I looked into these, the more troubled I became. The idea, basically, is that a universal package will run on "any Linux distro", however, I started to realise that there are caveats to this. Some assumptions have to be made about the underlying OS, such as existence of pulseaudio, systemd, dbus, and so on. In other words, the "universal app" will actually only run on certain distros.

Then there is the size. A universal package is just about an entire distribution. Yep, just about every underlying package has to be included in the universal package. Hence, when I installed the Krita flatpak, the Qt-based paint program, from Flathub, the download was 566MB.

I began to question the value of the whole philosophy of universal packages.

I am also troubled by the philosophy underlying containers. Yeah, yeah, universal packages, containers, flavour of the month, flavour of the year, whatever.

There are some aspects of Android that I like. Android runs each app as a separate user. This is actually a very simple isolation mechanism, that uses Unix groups/users architecture that has been there right from the start of Unix and Linux.

I have never liked Java, yet the JVM does provide abstraction from the hardware (HAL), which has one important principle, that packages can be shipped as Java code and will run on all Android phones and tablets. Well, the Java API provided with Android does change. You can download an app, size say 10 - 50MB, and it will run on all phones that have the minimum specified Android version. Yes, these are universal packages, a fraction of the size of those coming from Flatpak and Snap.

Anyway, there are a few lines of thought that I want to follow, will try and post here when there is an interesting development. 

Tags: easy, quirky