GNU/LinuxThis is me.



This page reports on my adventures in the world of free software.

Contents

Introduction

Although I do use and enjoy other free operating systems (this very page is hosted on a FreeBSD webserver), I run Linux on most of the computers and devices I use everyday. So - effectively - this page is about GNU/Linux.

On Linux

The days one had to explain to the average computer user what the word 'Linux' refers to are gone. In the last two decades, Linux has taken the world by storm. It has become the universal operating system, powering every imaginable computing system from embedded RT-controllers over humble ADSL routers and mobile phones to the most powerful super-computers and Internet back bones. I love my FreeBSD (which findus runs on), as others love their Solaris or Windows servers. It is however clear that, by any reasonable definition, Linux is nowadays the most important piece of software on the planet.

A free Unix

Over the years, many reasons why to use GNU/Linux have been put forward: superior speed, stability, and security compared to competing (PC) systems have been proclaimed. While these arguments were valid in the DOS-era of the 1990's, competitors have caught up. Microsoft Windows has evolved into a perfectly capable and secure operating system, which can drive a simple PC just as well as an Internet server.

One advantage of GNU/Linux remains - some say it has always been the single truly important one: GNU/Linux is the living incarnation of the Unix idea: that computers are here to help us perform tasks otherwise beyond our abilities. That they should do this using a set of 'programs' which are simple in themelves, but ready to be be combined into workflows of arbitrary complexity. That anyone should be able to understand and analyse those programs. And - perhaps most importantly - that anyone should be able to share and improve those programs. That philosophy has been written down by Richard Stallman in a way I could not best.

Other systems may have embraced the Unix legacy earlier or more consistently than GNU/Linux. But none have had the same liveliness and success.


Disclaimer (1): OK, you know this, but anyway: All of the software you can download from this site is provided as-is, and you may choose to use it at your own risk. Running any of the programs from this page may turn your computer into Skynet, kill your favourite pet, or set your house on fire. You have been warned.
Disclaimer (2): I do try to provide links to the original sources and licenses for all derivative work I present here. If you still notice some missing reference, please contact me about that.

Things related to my Debian PCs

As of writing this, I use Debian 11 'bullseye' as the only operating system on my desktop PC and laptops.

Below is some software that I have either written myself or re-packaged so it can be used (almost?) seamlessly with Debian (amd64). This section is under reconstruction. Most of it refers to my previous Debian 8 install.

Linux Kernel 3.13.11-ckt39 for Debian 8

After upgrading my systems form previously Ubuntu 12.04 to Debian 8 'jessie' I found that power consumption of my Thinkpad T400 laptop was significantly higher (by approx. 1.5 W when idle). After having ruled out all possible misconfigurations known to me, I concluded that the effect must stem from the different Linux kernels: Ubuntu 12.04 used its own branch of 3.13, while Debian 8 defaults to some 3.16 kernel (4.9 is installable via backports but showed the same power drain).

Compiling and installing the 3.13 kernel from Ubuntu on my 'jessie' system indeed brought power consumption back to the lower values found under Ubuntu. I compiled via make deb-pkg, using Debian 8's default gcc, the Kernel sources from Ubuntu, and the Config file I found on my previous Ubuntu 12.04 system. The resulting Debian packages can be downloaded below.

linux-image-3.13.11-ckt39-precisepuma_3.13.11-ckt39-4_amd64.deb
linux-headers-3.13.11-ckt39-precisepuma_3.13.11-ckt39-4_amd64.deb

Note: I did not try to understand whether the difference arises from the Kernel 3.13 source itself, or from some black magic in the Ubuntu kernel Config. Feel free to experiment. Obviously, using this kernel in Debian 'jessie' is not supported by either Debian or Ubuntu - please do not complain to those guys about any issues you find.
Update (20 Jan 2018): The Kernel has been rebuilt from Ubuntu's internal source version 3.13.0_141-190 to include remedies for the 'Meltdown' and 'Spectre' CPU vulnerabilities.
Update (Nov. 2018): I finally purchased a Thinkpad X250 as replacement for my venerable T400. As also the X250 exibits much (~20%) lower idle power consumption with the above 3.13 kernel compared to the stock Debian kernel 3.16, I once more dug into the issue: I presently believe that the difference arises as newer (post-3.13) kernels default to the (supposedly more advanced) 'intel_pstate' CPU gouvernor as opposed to the traditional 'cpufreq' driver. Why the newer gouvernor would cause higher idle load is unclear to me. Maybe this disadvantage is outweighed by higher efficiency under load? As of January 2019, I continue to use the above kernel on all my Debian systems. Again, feel free to experiment!
Update: As of 2020, my custom Kernel still provides approx. 0.5 W lower idle power consuption than the most recent 4.9-Kernel for Debian 'jessie' (4.9.0-0-bpo.12-amd64), even if the latter is booted with 'intel_pstate=disable'.

Intel X.Org Driver for Debian 8

The stock Intel X.Org DDX driver shipping with Debian 'jessie' is too old to provide hardware-accelerated graphics on my Thinkpad X250. A working driver (v. 2.99.917+git20160522) can be installed from jessie-backports. While that provides good performance (using the SNA acceleration method) it also causes a few annoying graphics bugs on my X250 (visible especially in LibreOffice).
To fix that, I compiled and packaged several more recent versions (more correctly: Git snapshots) of the intel driver for 'jessie' (amd64 only!):

xserver-xorg-video-intel_2:2.99.917+git20180925-2~jessie-puma1_amd64.deb (source)
xserver-xorg-video-intel_2:2.99.917+git20190815-1~jessie-puma1_amd64.deb (source)
xserver-xorg-video-intel_2:2.99.917+git20200226-1~jessie-puma1_amd64.deb (source)

As there has been no official new version by Intel for quite some time now, the driver is practically a rolling release and regressions seem to happen quite often. My experience is that, for a given hardware, one has to find the best combination of driver version and X.org settings by trial-and-error. The packages 'git20180925-2' and 'git20200226-1' correspond to the drivers shipping with Debian 'buster' and 'bullseye', respectively.
At the time of writing, I use the intermediate snapshot 'git20190815' with my X250.

Side note: Remember that much of today's graphics workload is actually not processed by the DDX but by the DRI driver (i965_dri.so in case of an X250) which provides hardware-accelerated 3D graphics. Upgrading Mesa from the stock v.10.3 to 13.0.6 as provided in jessie-backports gave me, both, better OpenGL compatibility and performance.

Updated synaptics touchpad driver for Debian 8

While the Synaptics driver that comes with 'jessie' supports both of my Thinkpads in principle, there seems to be an issue in relation with the (newer) X250.
With the stock Debian driver, the X250 touchpad seems to ignore small or slow finger movements (see e.g. this user report). This makes pixel-precise pointing of the cursor virtually impossible so that clicking or selecting small areas on the screen becomes an extremely frustrating experience.
I backported the most recent upstream release of the synaptics driver (version 1.9.1) to jessie's old X.Org-server. The resulting *.deb can be downloaded here:

xserver-xorg-input-synaptics_1.9.1-1~puma1_amd64.deb (source)

With this, cursor motion on my X250 is now smooth with no other configuration required.

Firefox-GTK2 (obsolete!)

As of version 46, Ubuntu had started building Mozilla Firefox with GTK3 - even on systems where previously GTK2 was used for the builds. As I wanted Firefox to integrate with my QtCurve Qt/GTK2 desktop theme, for some time I was building my own Firefox-GTK2 packages (for Ubuntu 12.04) that can be downloaded below.

firefox_52.0.2+build1_Gtk2-0ubuntu0.14.04.1_amd64.deb
firefox-locale-en_52.0.2+build1_Gtk2-0ubuntu0.14.04.1_amd64.deb

Note (1): I am not affiliated to either Mozilla or Ubuntu, please do not complain to the upstream about any malfunctioning in this version of Firefox.
Note (2): I never succeeded in producing a working build of Firefox 53.x or 54.x, and I never even tried with Quantum. Unsupported for many major revisions, the GTK2 code may well have rotten to the point of being non-functional. The above version is my last GTK2 build. I have now installed the Clearlooks-Phénix GTK3 theme and tweaked it to match my QtCurve settings, so I can directly use the upstream Firefox again. The above packages should be considered historical as they obiously contain unfixed security issues.

psDoom

ps-DOOM running on Debian 8 ('jessie') x86_64. psDooM is the pinnacle of task managers. Do you find that killing processes using tools like kill, top, or ksysguard is somewhat ... unfulfilling? Well, then psDooM is for you.

This is a port of the, now quite ancient, original psDooM code (see Sourceforge link above) that enables building on a recent x86-64 based Linux system. Be sure to follow the instructions of all Readme files.

pumas_psdoom.tar.gz

Be aware that - as psDooM is still built as a 32-bit application - you will need a multiarch environment and the relevant i386 development libraries installed if you are on an x86-64 system.


Things related to my F(x)tec Pro1

In 2020, I finally got a new smartphone to replace my trusted N900 (see below): an F(x)tec Pro1.

About the Pro1

Devuan GNU/Linux running on my Pro1 In 2019, London-based start-up F(x)tec finally marketed a spiritual successor to the legendary Nokia N900 smartphone I had been using for many years (see below). The Pro1 seeks to bridge the gap between today's Android phones (that are, frankly speaking, mostly entertainment devices) and the "serious" smartphones of old (that were actually designed as miniature computers).

I recieved my Pro1 mid-2020. It is a marvelous device: well designed, mechanically well built, an with enough computing power to not only run circles around my old N900, but also easily compete with todays top-of-the-line smartphones.

LineageOS for the Pro1

I run LineageOS on the Pro1. When I got my device, LineageOS 16.0 was the officially supported version, so I used that to install my quite complex desktop-Linux set-up (see below). Since then, official support has moved on to more recent Android releases, and updated builds of version 16 are no longer available from lineageos.org.

The LineageOS 16.0 sources are however still getting patched, so I started to build my own (unofficial) LineageOS 16.0 images for the Pro1 that can be downloaded below:

AOSP "1 November 2024" security patch level: lineage-16.0-20241116-UNOFFICIAL-pro1.zip (mirror) (md5) / boot.img (mirror)
AOSP "1 October 2024" security patch level: lineage-16.0-20241017-UNOFFICIAL-pro1.zip (mirror) (md5) / boot.img (mirror)

Note that my builds are signed with the so-called "testing" keys. If you intend to dirty-flash them over a previously-installed official LineageOS 16.0, you must migrate from "official" to "testing" keys, as described here. If you have never flashed your Pro1 before, follow the instructions from the Lineage Wiki. If you run into trouble, the F(x)tec user forum is a good place to ask for help.

Meanwhile, I started to include some local modifications into my images, mainly improvements regarding the Pro1's keyboard which I backported from later LineageOS versions. All my modifications with respect to the official Lineage 16.0 sources (as of writing this) can be downloaded as patchset here:

lineage-16.0-20241116-UNOFFICIAL-pro1-localmods.tar.gz
lineage-16.0-20240924-UNOFFICIAL-pro1-localmods.tar.gz

Debian Linux on the Pro1

LineageOS is fine for using the Pro1 as an Android-compatible (but Google-free!) phone. But of course, to use the device as replacement for my N900, I need to additionally run a proper GNU/Linux distribution.

I installed Devuan 3 (beowulf) in a chroot environment of LineageOS 16 so that, thanks to the built-in keyboard, I can use the Pro1 as a miniature Unix workstation when on-the-go.

At some point I will write up some details of my chroot set-up here.


Things related to my Nokia N900 (Maemo)

About Maemo

Maemo desktop on my Nokia N900. In 2009, Nokia published the Maemo 5 operating system along with its then cutting-edge smartphone, the N900. Hardware-wise, the N900 was designed more as a down-sized laptop than a telephone (as opposed to the iPhone 3 of the same era). Still, the most distinctive feature of the N900 was its software. Based on the ARM port of Debian, Maemo 5 put a complete GNU/Linux system - including gnu-coreutils, X.org, and a full gcc development environment - at the user's hands. To this date, the N900 remains the only true Unix phone ever released by a major manufacturer.

Today, as Nokia have been purchased by Microsoft, the N900 and Maemo 5 are supported by a small community of enthusiasts. This was possible as practically all parts of the Maemo operating system are licensed under the GNU General Public License.

I did use my N900 until mid-2020 when I finally upgraded to the newer F(x)tec Pro1 (see above). I still keep the N900 charged and ready for action and hope to find some new use for it at some point. Below, I share some tweaks and pieces of software I found useful over the years.

most

This is a binary of my favourite pager most (v.5.0.0a), compiled for Maemo 5, as it is strangely not available on the official community repositories. If you want to build your own version (which is trivial), grab the source code from the link above.

most_armel.zip Another Maemo desktop on my Nokia N900.

unison

I use Unison to synchronise files and folders between my workstations and my server. On his home page, Jens Wagner provides a statically-compiled ARM build of Unison, which matches the version on my Debian systems and runs happily on the N900:

unison-2.40.102-static-native-armel.zip

dvipng

Executable of the dvipng converter, necessary for using the LaTeX plugin of ZIM on the N900.

dvipng_armel.zip

aplay

Patched (armel) executable of the aplay (alias 'arecord') program, compiled on Maemo 5 from alsa-utils v.1.0.20. Contrary to upstream, this version allows to record at sampling rates of 250 kS/s (and higher) as required for recording bat sounds with the N900 (using a suitable ultrasonic USB microphone of course).

aplay_patched_armel.zip

nano 2.8.7

GNU nano 2.8.7 The N900's flip-out keyboard sets it apart from most of today's smartphones, as it allows to carry out substantial writing tasks without the need of an external input device. See here for useful hints how to customise the keyboard layout to your needs.

Terminal-based (text-only) editors are generally preferred, as they make the best use of the N900's limited screen size. A solid version of Vim is available from the maemo.org-repositories and is probably the most capable text editor for the N900. However, for some tasks (e.g. for writing in LaTeX) I still like to have a single-mode editor around. A port of GNU nano is available at maemo.org, but is quite dated (v.2.0.7). Most importantly, that version does not support "soft-wrapping" of long lines, a feature that I somehow expect from a present-day text-editor. Here I provide a .deb of the more recent nano 2.8.7, compiled and packaged on my own N900:

nano_2.8.7-1-maemo5-1_armel.deb

As the version of libncurses5 provided with Maemo5 does not support wide characters, my nano is instead linked against libslang2 to enable Unicode (UTF-8) support. As a consequence, nano does not automatically adapt to changes in terminal size (e.g. using the 'full screen' button), but I can live with that. In addition to UTF-8, coloured syntax-highlighting, soft-wrapping at blanks, and spell-checking (via aspell) are supported.

flashplayer 10.1

The (in?)famous Adobe Flashplayer 10.1 (beta) plugin for the Maemo browser Microb. Although Flash is now prehistoric technology, I provide the download here as it is getting insanely hard to find on the Internet, and many how-tos on the N900 still refer to it. Be reminded that this software was never finally released by Adobe, so use it at your own risk.

adobe-flashplugin-10.1-beta-Maemo.tar.gz

QML Browser

QML Browser As of 2020, web browsing has become almost impossible on the N900. Its CPU is too slow and its RAM too limited for the Javascript-fests today's websites like to celebrate. A more fundamental problem is that most webservers now enforce the use of TLS 1.2 which Maemo's native OpenSSL subsystem, and hence practically all web browsers ever released for it, do not support.
One can upgrade OpenSSL to v.1.1.0h - implementing todays relevant crypto algorithms - as explained in this community thread. Be sure to follow these steps before you try to install any TLS-1.2-enabled software, and understand that this alone will not magically enable TLS 1.2 in your random favorite app!
OpenSSL-1.1.0h-based versions of wget and QML Browser are available, though.
QML Browser is a web browser using the WebKit engine implemented in Maemo as a part of Qt-4.7.4. While this was a clever approach 5 years ago, also this browser is severely outdated now. It does not fully implement today's HTML5 and crashes on some sites. Still, due to its TLS-1.2 support, it is now de-facto the only functional browser for the N900.

GtkDialog

GtkDialog allows to generate beautiful graphical user dialog boxes using GTK2 from within Unix (e.g. bash) shell scripts. Below is the latest source code version that I found to compile seamlessly on Maemo 5. For those who do not want to install a full C development stack on their N900 I also provide the resulting (armel) binary.

gtkdialog-0.8.0.tar.gz (source tarball)
gtkdialog_armel.zip (armel binary)

Running Debian 7 'wheezy' on the N900

Debian chroot startup script. Thanks to the EasyDebian project, it is possible to run the full Debian Linux distribution (the ARM port, of course) in a Chroot of the Maemo 5 operating system. Based on previous work by maemo.org-user sulu, I made my own Debian 'wheezy' partition image. 'wheezy' is the last version of Debian known to work seamlessly with the old Linux kernel 2.6.28 of Maemo. Upgrading to 'jessie' is hence not recommended unless you really know what you are doing.

My image is different from others in that it does not try to integrate with the Maemo UI (which never really works anyway). Instead, a (larger) virtual desktop is started that can be accessed remotely, via VNC or RDP, or locally, via a Maemo VNC viewer (PresenceVNC is very good). The collection of preinstalled software is biased towards scientific and programming needs. But also useful desktop applications like the Chromium browser and the LibreOffice Suite (v.4.3.3) are installed.

Debian FVWM2 desktop. The set-up is supposed to work more like a separate operating system, rather than an extension to Maemo. As opposed to the EasyDebian default, I recommend having a separate /home folder for the Chroot environment, so that Debian and Maemo versions of the same program do not get confused over common configuration files. I provide startup and shutdown scripts (GtkDialog from above is needed), my .chroot configuration, as well as my config files for the VNC/RDP servers and fvwm2 desktop. Note that the image is ext4-formatted. You will need the improved filesystem support of the so-called 'power'-kernel (which you should install for many other reasons anyway).

20180305-1534-DebianFS.ext4.img.gz (Debian partition image, download: 2.2 GB, uncompressed size: 6.0 GB.)
debian_chroot_scripts.tar.gz (Launch scripts and Chroot configuration.)


Debian / Ubuntu bug reports and fixes

This is a list of relevant bugs I have helped identify and fix in the Debian operating system or in its derivative Ubuntu.


Claude Krantz - January 2022.