Linux Archive

Dotfile madness

We are no longer in control of our home directories. My own home directory contains 25 ordinary files and 144 hidden files. The dotfiles contain data that doesn’t belong to me: it belongs to the programmers whose programs decided to hijack the primary location designed as a storage for my personal files. I can’t place those dotfiles anywhere else and they will appear again if I try to delete them. All I can do is sit here knowing that in the darkness, behind the scenes, they are there. Waiting in silence. Some of those programmers decided to additionally place some normal files and directories in the same place. Those are clearly visible every time I execute ls in my home directory. It is beyond me why my home directory ended up up containing a node_modules directory, package-lock.json, a yarn.lock file (I have never even consciously used yarn!), some 2 strange log files origination from some Java software clearly using an H2 database, and a Desktop directory. That last one has been created by Steam, which is quite unfortunate as I simply do not have a desktop or a desktop environment on my machine. I dread the day in which I will hear a loud knock on my door and one of those programmers will barge in informing me that he is going to store a piece of his furniture in the middle of my living room, If I don’t mind. The way Linux distributions handle the directory structuce in general is deeply broken and inconcistent – trying to cram a modern desktop operating system in a directory structure designed for punch card machines is lunacy – and this is yet another example of that. It’s not just developers being lazy; it’s also developers simply being unable to count on distributions making sane choices and following the FHS to begin with. UNIX-based operating systems are an outdated mess under the hood, and developers are trying to work around that mess by making an even bigger mess using hidden files and random directories all over the place. Of course, saying this is considered sacrilege, as an operating system designed for mainframes in the ’60s is clearly perfect, and never needs to change or alter or improve its underpinnings in any way, shape, or form.

Linux Mint 19.1: a sneaky popular distro skips upheaval, offers small upgrades

While Ubuntu and Red Hat grabbed most of the Linux headlines last year, Linux Mint, once the darling of the tech press, had a relatively quiet year. Perhaps that’s understandable with IBM buying Red Hat and Canonical moving back to the GNOME desktop. For the most part Linux Mint and its developers seemed to keep their heads down, working away while others enjoyed the limelight. Still, the Linux Mint team did churn out version 19, which brought the distro up to the Ubuntu 18.04 base. While the new release may not have garnered mass attention, and probably isn’t anyone’s top pick for “the cloud,” Linux Mint nevertheless remains the distro I see most frequently in the real world. When I watch a Linux tutorial or screen cast on YouTube, odds are I’ll see the Linux Mint logo in the toolbar. When I see someone using Linux at the coffee shop, it usually turns out to be Linux Mint. When I ask fellow Linux users which distro they use, the main answers are Ubuntu… And Linux Mint. All of that is anecdotal, but it still points to a simple truth. For a distro, that has seen little press lately, Linux Mint manages to remain popular with users. Linux Mint is definitely my distribution of choice – they don’t try to change the world, and just want to develop a solid, fairly traditional desktop-oriented distribution, and they’re damn good at it. It’s on my laptop, and the fact I barely even realise I’m using Linux while using Mint tells you all you need to know.

Linux kernel developers discuss dropping x32 support

It was just several years ago that the open-source ecosystem began supporting the x32 ABI, but already kernel developers are talking of potentially deprecating the support and for it to be ultimately removed.

The Linux x32 ABI as a reminder requires x86_64 processors and is engineered to support the modern x86_64 features but with using 32-bit pointers rather than 64-bit pointers. The x32 ABI allows for making use of the additional registers and other features of x86_64 but with just 32-bit pointers in order to provide faster performance when 64-bit pointers are unnecessary.

This headline confused me for a second, because at first I thought the Linux team was removing 32 bit support - which obviously made little sense to me. As the quoted blurb explains, that's not the case.

Bringing the Android kernel back to the mainline

Android devices are based on the Linux kernel but, since the beginning, those devices have not run mainline kernels. The amount of out-of-tree code shipped on those devices has been seen as a problem for most of this time, and significant resources have been dedicated to reducing it. At the 2018 Linux Plumbers Conference, Sandeep Patil talked about this problem and what is being done to address it. The dream of running mainline kernels on Android devices has not yet been achieved, but it may be closer than many people think.

As I always say - Android is the most popular Linux distribution of all time, and by a huge, huge margin. This often makes a lot of people very angry, as they come up with all sorts of additional random imaginary requirements as to what constitutes a Linux distribution. If they manage to get the Android version of the Linux kernel back into mainline, these discussions will probably become even more nebulous - and entertaining.

Samsung’s Linux on DeX turns your phone into a Linux PC

Samsung debuted DeX last year to make your phone behave a bit more like a computer when plugged into a monitor. This year, DeX functionality has improved so you don't need to expensive custom dock, just a video cable. At Samsung's developer conference last week, it announced DeX would also get full Linux support. It's only officially available to those in the beta program, but we've got the APK.

I remain convinced that this is eventually what all our phones will be able to do - adapt to whatever input method and/or display you hook up to it. We're in the early stages today, with lots of rough edges, performance hiccups, and other issues, but eventually, we won't bat an eye at walking into our homes and without us doing anything, our phone wirelessly hooks up to all displays in our house. Want to work on that presentation for tomorrow? Walk into your office, sit down, and your phone automatically wirelessly connects to the mouse, keyboard, and display on your desk. Want to watch Netflix? Just yell a command at your TV, and your phone plays season 7 of Game of Thrones: The Next Generation on your TV. And so on.

This is still a long way off, and it requires serious advances in wireless transmission and latency, but this is the future I want.

System76 unveils Thelio, a custom Linux workstation

System76, the company making and selling Linux laptops, has unveiled the Thelio, a fully custom designed and built desktop machine. Everything about the machine is custom - from the case to the special IO board that monitors temperatures all across the case and optimizes airflow accordingly. This IO board and the case design are fully open source, so anyone can improve upon the designs or tinker with them.

The Thelios comes in three sizes, and can be specced with anything from basic Ryzen or Core CPUs all the way to Threadripper and dual Xeon processors, accompanied by the usual assortment of Radeon or GeForce video cards. You can add multiple video cards, including the brand new RTX cards. The biggest machine goes up to 768 GB of ECC memory, and if you add all the most expensive bells and whistles, the Thelio Massive will go beyond the €80,000 price point. Luckily, the smallest model starts at a more reasonable €1099.

I like this. This goes way beyond just slapping a few standard components in an off-the-shelf box - this is actually designing a beautiful and airflow-optimized computer running Linux, and that's exactly what we need more of. I'm keeping an eye on this machine, because even though I have no intention of replacing my current workstation, I have to say I am very much tempted by what System76 has done here.

Nitrux: Linux, KDE Plasma 5, Qt and Nomad Desktop

Nitrux is a Linux distribution based on Ubuntu suitable for laptops and desktop computers. Nitrux provides all the benefits of the Ubuntu operating system combined with a focus on portable, redistributable application formats like AppImages. Nitrux uses the LTS branch of Ubuntu as a basis using only the core system and then slowly building up to ensure a clean user experience. Nitrux is suitable for newcomers to Linux as well as *nix experienced users. Nitrux uses KDE Plasma 5 and KDE Applications; we also use our in-house software suite Nomad Desktop adding to the user experience.

This sounds very similar to Elementary OS, but instead of Gnome and Gtk+-oriented, it's built around Qt and KDE technologies. I like distributions that try to do something more interesting than being just another random Gnome or KDE distribution, and I especially like how the open source Linux community seems to be focusing more and more on polish, design, and simplicity lately. Very welcome additions to the Linux world.

Linux 4.19 released

Linux 4.19 has been released. This release adds support for the CAKE network queue management to fight bufferbloat, support for guaranteeing minimum I/O latency targets for cgroups, experimental support for the future Wi-Fi 6 (802.11ax-drafts), memory usage for overlayfs users has been improved, a experimental EROFS file system optimized for read-only use, a new asynchronous I/O polling interface, support for avoiding unintentional writes to an attacker-controlled FIFO or regular files in world writable sticky directories, support for a Intel feature that locks part of the CPU cache for an application, and many other improvements and new drivers. For more details, see the complete changelog.

elementary OS 5 Juno released

Elementary OS, a rather interesting Linux distribution with a very heavy focus on usability, has released its latest release.

elementary OS is made up of two main parts: the "desktop" which includes the core user experience, look and feel, and system pieces; and the apps that come with the OS out of the box. elementary OS 5 Juno includes major updates across several of these core apps.

Elementary OS is sometimes regarded as the macOS of the Linux world, as it aims to pretty much streamline and hide all the less user friendly aspects of using Linux to higher degree than even systems like Ubuntu or Linux Mint. They also consider design a central aspect, which does seem to bear fruit - Elementary looks incredibly attractive.

Snap, Flatpak and AppImage, package formats compared

In recent years, three different distribution independent package formats have gained a lot of popularity. There are already a few Linux distributions like Endless OS and Fedora Silverblue that depend solely on distribution independent packages to run desktop applications. Are these package formats ready to become main packages formats for Linux distributions?

In this article we will take a look at the advantages and disadvantages of each package format individually, and of distribution independent package formats in general.

I haven't really been keeping up with this relatively recent development of new distribution-independent package formats, so I was unpleasantly surprised when, after installing Linux Mint on my laptop, I would often find two different installable packages of the same program in the software manager. Often, these would have different versions.

Regardless of technical merit, that's not exactly a friendly user experience.

What’s a CPU to do when it has nothing to do?

It would be reasonable to expect doing nothing to be an easy, simple task for a kernel, but it isn't. At Kernel Recipes 2018, Rafael Wysocki discussed what CPUs do when they don't have anything to do, how the kernel handles this, problems inherent in the current strategy, and how his recent rework of the kernel's idle loop has improved power consumption on systems that aren't doing anything.

I had no idea doing nothing was this complex.

Killing processes that don’t want to die

Suppose you have a program running on your system that you don't quite trust. Maybe it's a program submitted by a student to an automated grading system. Or maybe it's a QEMU device model running in a Xen control domain ("domain 0" or "dom0"), and you want to make sure that even if an attacker from a rogue virtual machine manages to take over the QEMU process, they can't do any further harm. There are many things you want to do as far as restricting its ability to do mischief. But one thing in particular you probably want to do is to be able to reliably kill the process once you think it should be done. This turns out to be quite a bit more tricky than you'd think.

Linus apologises for his years of abrasive behaviour

Linus Torvalds on the lkml:

This is my reality. I am not an emotionally empathetic kind of person and that probably doesn't come as a big surprise to anybody. Least of all me. The fact that I then misread people and don't realize (for years) how badly I've judged a situation and contributed to an unprofessional environment is not good.

This week people in our community confronted me about my lifetime of not understanding emotions. My flippant attacks in emails have been both unprofessional and uncalled for. Especially at times when I made it personal. In my quest for a better patch, this made sense to me. I know now this was not OK and I am truly sorry.

The above is basically a long-winded way to get to the somewhat painful personal admission that hey, I need to change some of my behavior, and I want to apologize to the people that my personal behavior hurt and possibly drove away from kernel development entirely.

I am going to take time off and get some assistance on how to understand people’s emotions and respond appropriately.

Actions speak louder than words, so we'll see if this sudden realisation will lead to anything tangible.

PowerShell launches as a snap

PowerShell Core from Microsoft is now available for Linux as a Snap. Built on the .NET Framework, PowerShell is an open source task-based command-line shell and scripting language with the goal of being the ubiquitous language for managing hybrid cloud assets. It is designed specifically for system administrators and power-users to rapidly automate the administration of multiple operating systems and the processes related to the applications that run on those operating systems.

Linux Mint 19 released

Linux Mint 19 is a long term support release which will be supported until 2023. It comes with updated software and brings refinements and many new features to make your desktop experience more comfortable.

In Linux Mint 19, the star of the show is Timeshift. Although it was introduced in Linux Mint 18.3 and backported to all Linux Mint releases, it is now at the center of Linux Mint's update strategy and communication.

Thanks to Timeshift you can go back in time and restore your computer to the last functional system snapshot. If anything breaks, you can go back to the previous snapshot and it's as if the problem never happened.

This new release is jampacked with new features and improvements, and I must say this looks mightily intriguing.

A broad overview of how modern Linux systems boot

For reasons beyond the scope of this entry, today I feel like writing down a broad and simplified overview of how modern Linux systems boot. Due to being a sysadmin who has stubbed his toe here repeatedly, I'm going to especially focus on points of failure.

I always find it fascinating to read about how computers boot - it's often a very intricate process, built atop decades of backwards compatibility.

C gfx library for the Linux framebuffer with parallelism support

FBGraphics was made to produce fullscreen pixels effects easily with non-accelerated framebuffer by leveraging multi-core processors, it is a bit like a software GPU (much less complex and featured!), the initial target platform is a Raspberry PI 3B and extend to the NanoPI (and many others embedded devices), the library should just work with many others devices with a Linux framebuffer altough there is at the moment some restrictions on the supported framebuffer format (24 bits).

FBGraphics is lightweight and does not intend to be a fully featured graphics library, it provide a limited set of graphics primitive and a small set of useful functions to start doing framebuffer graphics right away with or without multi-core support.

Neat project.

There’s real reasons for Linux to replace ifconfig, netstat, et al.

One of the ongoing system administration controversies in Linux is that there is an ongoing effort to obsolete the old, cross-Unix standard network administration and diagnosis commands of ifconfig, netstat and the like and replace them with fresh new Linux specific things like ss and the ip suite. Old sysadmins are generally grumpy about this; they consider it yet another sign of Linux's 'not invented here' attitude that sees Linux breaking from well-established Unix norms to go its own way. Although I'm an old sysadmin myself, I don't have this reaction. Instead, I think that it might be both sensible and honest for Linux to go off in this direction. There are two reasons for this, one ostensible and one subtle.

Living in a Docker world

Have you ever tried to install Minecraft and seen an error message like, "This application requires a Java Runtime Environment 1.6.0"? Or you try to install something on Windows, and you get an error that says some .NET framework is missing? Or, as a more basic example, have you ever spent a couple hours setting up a new computer with all your applications and preferences?

Those are the kinds of problems Docker, and "containers" more broadly (Docker is kind of the Kleenex of containers), are meant to solve. Docker makes it easy to install Linux applications on servers, along with their required dependencies and whatever preferences you might have for those applications. And, as an added bonus, conflicting dependencies between applications (maybe one app relies on Python 2, and another app relies on Python 3) aren't an issue, because everything is isolated in different containers.