Linux Magazine USA - Issue 287 October 2024
Linux Magazine USA - Issue 287 October 2024
DV S I D
IN
+
D E
management for a Rasp Pi
TRUST ISSUES
Dear Reader,
Are fortunes changing for Google? Many observers think currently has around 3.5 percent of the search market, could
so, but trillion dollar companies have ways of making prob- easily see its market share double or triple (or more).
lems go away. It does seem like they are on a bit of a losing Apple, on the other hand, would face a $20 billion shortfall
streak when it comes to government tolerance of their in revenue with the loss of the Google subsidy. Would they
anti-competitive behavior. The EU has been leveling fines develop their own search engine? Would they take the loss
against Google for years, and last year, the European Com- and try to generate revenue elsewhere?
mission issued a formal antitrust complaint, suggesting that
Whatever happens will probably take a few years to sort
breaking up the company might be the only remedy [1].
out. The important thing is, the US government is finally
Earlier this year, the EU began investigating Google under
addressing some of the antitrust issues that people like
the new Digital Markets Act [2], which is designed to pre-
me have been complaining about for years. And the feds
vent gatekeeper companies from controlling their markets.
have more on their minds than just Google search. Other
The EU deserves credit for their diligent pursuit, but be- current antitrust actions [4] against big tech include:
cause Google is a US company, the recent antitrust find-
• Amazon – online sellers have long complained about
ing by the US District Court of DC could be far more
Amazon favoring its own products over those of third
eventful. In the first antitrust decision of the Internet era,
parties operating within the Amazon marketplace. The
judge Amit. P. Mehta ruled that Google is a monopoly
argument is that Amazon is both the platform and a
company that uses anti-competitive practices to main-
seller competing on the platform, which puts the other
tain its monopoly on search [3].
sellers at a disadvantage.
It is striking that the government seems to be open to all
• Apple – the company’s stranglehold over its own plat-
possible remedies, including breaking up the company.
form has long concerned regulators. Apple certainly
A hearing to discuss the next steps is scheduled for Sep-
doesn’t have a monopoly level of control over the smart-
tember 6, which means that by the time you read this, you
phone market in general, but the argument is that,
might know more about the government’s direction than I
within the sphere of the Apple universe, the company is
know now. It is interesting that even one of the milder reme-
behaving in a monopolistic manner, blocking competi-
dies suggested for the situation could still have a massive
tor’s access to Apple users. It all depends on how you
impact. The simple step suggested by some observers is to
define the market, but in any case, Apple is facing re-
stop letting Google pay huge sums to phone makers and
newed scrutiny and might eventually face accountability.
browser vendors to make Google the default search engine.
• Meta – Facebook’s parent company is accused of making
Back around the turn of the millennium, the last big high
itself a monopoly by buying its competitors – in particu-
tech antitrust case (against Microsoft) was all about
lar, Instagram and WhatsApp. The case was already dis-
“control of the desktop.” It seems this new case could
missed once, with the judge commenting that the Federal
come down to “control of the home screen.”
Trade Commission (FTC) did not succeed in defining the
Imagine if, the first time you log on to your iPhone, a screen market that Meta/Facebook is accused of monopolizing.
pops up giving you the choice of which search engine to use, (Think about it: What exactly is Facebook’s “market?”)
rather than having that choice made for you by default. That The FTC is now taking another shot at refiling the case.
small step alone could greatly increase the competitive posi-
• Another Google – The US Justice department has filed a
tions of the alternatives. DuckDuckGo, for instance, which
wholly separate lawsuit against Google over advertising,
accusing the search giant of reinforcing its monopoly
Info position through anti-competitive mergers and practices
and strong-arming online publishers and advertisers
[1] “EU Suggest Breaking Up Google’s Ad Business in Prelimi-
into using Google’s ad infrastructure.
nary Antitrust Ruling”: https://www.theverge.com/2023/6/14/
23759094/european-commission-google-antitrust-advertising- Antitrust cases take a long time to develop and an even lon-
market-antitrust ger time to resolve, but they can have a profound effect on
[2] “Apple, Google, Meta Targeted in First Digital Market Act the culture. If even one of these five cases results in a signif-
Probes”: https://www.reuters.com/business/media-telecom/ icant remedy, it could really shake up the Internet industry.
eu-investigate-apple-google-meta-potential-digital-markets- But don’t hold your breath: These tech giants have plenty of
act-breaches-2024-03-25/ resources and are dug in for a long and protracted battle.
[3] “Google is a Monopolist, Judge Rules in Landmark Antitrust
Case”: https://www.nytimes.com/2024/08/05/technology/
google-antitrust-ruling.html
[4] “After Google’s Antitrust Ruling, Here’s Where Other Big Tech
Cases Stand”: https://www.nytimes.com/2024/08/05/ Joe Casad,
technology/antitrust-google-amazon-apple-meta.html Editor in Chief
ON THE COVER
46 eBPF and Cilium 64 Coin Counter 75 Netcat and Socat
The innovative eBPF Roll your own electronic The classic Netcat networking
builds a sandbox at coin counter with a tool allows you to spin up
kernel level, but it is too Raspberry Pi Pico and a network connections from the
complex to integrate little bit of Python. command line, and Socat adds
easily with Kubernetes. still more powerful features.
Cilium fills the gap. 69 PiJuice Zero We’ll show you how to create
This cool tools adds a tiny bind shells and reverse shells.
52 Steganography UPS to your tiny Raspberry
Yes, you really can hide Pi Zero computer. 88 OpenStreetMap
messages and secret data OpenStreetMap’s Map Machine
inside image files. feature lets you add icons and
custom features to your maps.
@linux_pro
@linuxpromagazine
TWO TERRIFIC DISTROS
DOUBLE-SIDED DVD!
Linux Magazine
SEE PAGE 6 FOR DETAILS
@linuxmagazine
For many readers, Debian needs no introduction. It is Clonezilla is a rescue disk, run from a Live DVD,
one of the oldest, most popular, and most influential rather than a distribution. It is a partition and disk-
distributions of all time. Much of its status is due to its imaging utility useful for backup and restoration.
strict package guidelines and security updates. These Supporting a wide range of filesystems and
updates are available as released, but periodically they operating systems, Clonezilla allows for the
are bundled into point releases to make them as restoration of bootloaders, and it can run on both
accessible as possible. Debian 12.6 is currently the BIOS or UEFI machines. Based on several image
latest point release for Debian 12, aka bookworm. creation applications, it can create images for entire
Preceded by five point releases, Debian 12.6 offers few disks and store them locally, externally, or remotely.
new packages. What it does include is over 130 bug This latest release includes several bug fixes and
fixes for both minor and major packages and some 60 updates the underlying operating system. Like all
security updates. A handful of minor packages have Clonezilla releases, it is a tool that experienced
also been removed for various reasons, and the administrators use and keep around just in case.
installer has been updated. With these changes, it is
the most secure version of Debian currently available.
10 • Debian-Based eLxr
Distribution Announced
discourse.ubuntu.com/t/kernel-version-selection-for-ubuntu-releases/47007 ), the
old policy was a conservative “wait and see” approach, which guaranteed stability
for Edge Deployments on the appointed release day but proved unpopular with consumers looking for the
• NVIDIA Releases Driver latest features and hardware support.
for Upcoming NVIDIA 560 Under the new policy, Grandbois states, “Ubuntu will now ship the absolute lat-
GPU for Linux est available version of the upstream Linux kernel at the specified Ubuntu release
freeze date, even if upstream is still in Release Candidate (RC) status.”
11 • OpenMandriva Lx 24.07
Released
This will, of course, bring about a few complications, such as kernel variants, depen-
dent components, a tighter release, possible unstable releases, and late releases.
• Kernel 6.10 Available for
Grandbois said that any upstream kernel that has a merge window opened after
General Usage
feature freeze would be considered too unstable and its release too far in the future
to be adopted for a pending release.
You can read more about this new policy in Grandbois’s blog post (see above),
which goes into further detail about the issues and guidelines.
ADMIN HPC
Manjaro Team Tests Immutable Version http://www.admin-magazine.com/HPC/
of its Arch-Based Distro Podman for Non-Root Docker
• Jeff Layton
If you do a quick search, you’ll find there are a handful of immutable Linux dis- Podman is the best non-root Docker tool I’ve
tributions based on Arch (such as Arkane Linux – https://arkanelinux.org/ ). As found. Let me show you why.
immutability seems to make more and more sense with each passing day, it was
only a matter of time before another Arch-based distribution decided to create a ADMIN Online
similar offering. http://www.admin-magazine.com/
That offering is coming from the Manjaro team, and they’re working with the Centralized Monitoring and Intrusion
Arkdep toolkit (which was created by the Arkane Linux team) to create an immutable, Detection
atomic OS on top of the Btrfs filesystem. • Erik Bärwaldt
According to a forum post (https://forum.manjaro.org/t/manjaro-immutable-out- Security Onion bundles numerous individual
now-for-community-testing/166364), the reason the Manjaro team decided to go Linux tools that help you monitor networks
with Arkdep is ease of use and the support for personalized configurations. The or fend off attacks to create a standardized
post also links to the arkdep-build docs, where you can learn how to build your own platform for securing IT environments.
images. The Manjaro team also has offered their Arkdep profiles as a template
DevSecOps with DefectDojo
(https://github.com/manjaro/arkdep-profiles). • Guido Söldner
The plan is for this new immutable version to become an official spin of Manjaro, The DefectDojo vulnerability management
but, as of now, there’s no time frame for when this will happen, as there is a lot to tool helps development teams and admins
do and currently it is only in the testing/information gathering stage. identify, track, and fix vulnerabilities early
Anyone interested in trying the immutable take on Manjaro will need to have a in the software development process.
machine that meets the minimum requirements of 32GB of internal storage (64GB
Secure Kubernetes with Kubescape
recommended) and UEFI boot.
• Martin Loschwitz
You can download the ISO from the official download site: https://download.
Kubescape checks Kubernetes container
manjaro.org/manjaro-gnome-immutable/20240801/manjaro-gnome-immutable- setups for security and compliance issues,
2024.08.01-x86_64.iso. making life easier for administrators.
You can download the latest release of Vanilla OS from the official website
(https://vanillaos.org/blog/article/2024-07-11/discover-apx-v2-the-new-essential-tool-
for-developers-and-creators-on-vanilla-os-orchid) and view the release announcement
to find out more: https://vanillaos.org/blog/article/2024-07-28/vanilla-os-2-orchid-
--stable-release.
Zack’s
Speeding Up the Dentry He wanted the size and shape of the
Cache dentry cache to be precisely optimized to
Linus Torvalds wrote an experimental a given system’s particular needs. To
patch intended to speed up filesystem achieve this, Linus wanted to define the
operations, specifically the directory size and shape of the dentry cache at
entry (dentry) cache. However, he didn’t boot time, when more could be deduced
really like his own patch – even though about the specific resources available,
it worked. He hoped one of the kernel rather than at compile time.
developers might do it better. Nothing easier! Actually, no, it’s quite
The dentry cache is a lookup table hard. It might be relatively simple to de-
that sits in RAM and is used by the rest fine the size and shape of the dentry
of the kernel to identify exactly where a cache at boot time, using the available
desired file or directory is located on knowledge of how much memory and
disk. Whenever you open, read, or edit other resources existed on the running
a file, or anything like that, you use the system. But then it would still be neces-
dentry cache. sary to use the dentry cache (i.e., to
Chronicler Zack Brown reports Typically, you really want that dentry look up each file and directory when-
on the latest news, views, cache lookup to be as fast as possible. ever something on the system needed
You don’t want to sit around waiting for them). At that point, having determined
dilemmas, and developments
your file to open. Especially if “you” are these details of the dentry cache dy-
within the Linux kernel not a person but a process such as a da- namically at boot time, the calls into
community. tabase or whatnot, operating on tons the lookup code would need to bring
and tons of files all at once, any delay those details with them each time, so
By Zack Brown
can start to mount up. they could perform those lookups
One such delay is inherent – or has accurately.
been until now – in the way the dentry However, that is not as simple as it
cache is structured in memory. Typically sounds. Passing values from place to
the Linux kernel would define the over- place, or looking them up in a global
all shape and dimensions of this lookup variable, involves performing memory
table in the source code. The C compiler operations, each of which takes a micro-
then would optimize it based on some scopic bit of time. And again, these add
assumptions and expectations about the up, and they add up fast.
amount of RAM available on a typical Linus’s patch avoided those delays in
running system. Then when you booted a disgustingly clever way. Because he
Author your system, you’d have a nice generic wanted to avoid memory operations as
The Linux kernel mailing list comprises dentry cache that would probably work much as possible, his patch imple-
the core of Linux development activities. very well on whatever system you hap- mented “runtime constants” – these are
Traffic volumes are immense, often pened to be using. not variables to be looked up or passed
reaching 10,000 messages in a week, and But Linus was not satisfied. He from function to function, nor are they
keeping up to date with the entire scope wanted a dentry cache that was custom- constants that are the same for all users
of development is a virtually impossible ized for the specifics of an actual run- everywhere. Rather, Linus wanted to
task for one person. One of the few brave ning system, rather than making as- create values that could be determined
souls to take on this task is Zack Brown. sumptions about what might be there. at the start of a given run of the system,
but that would be constant ever after, reasons they please – such as in this
without having to be looked up as case, where Linus wanted to use them
needed. to isolate the locations of specific data
To do this, his code placed some vari- that would otherwise take more time
able-like placeholders in the kernel, to find.
wherever dentry cache lookups needed But this was exactly where Linus ran
to know the size and shape of the dentry into problems. In order to iterate over a
cache. These placeholders were com- single section of the running kernel bi-
piled into the binary without ever being nary, his code needed to know the start
given values – they remained variable- and end addresses of that section in
like. At boot time, his code first deter- RAM. Linus said:
mined the best values to use in those “Sure, I can trivially just do
placeholders. Then the code went
through the actual machine code of the . = ALIGN(8);
needed to be.
So the variable-like thingamabobs “and now I have the over-all start and
stopped looking like variables and be- end for those sections, but I want it per
came actual numbers, at the exact section.”
spots in the code where they were He went on to say:
needed, without the calling routines “This is actually not even remotely a
ever needing to pass those values into new thing: We do this manually for a lot
the lookup code. of sections, and we have macros to help
Insanity! do it, eg our ‘BOUNDED_SECTION_BY()‘
But as mentioned above, Linus macro in <asm/vmlinux.lds.h> does
wasn’t happy with his implementation, exactly this for any named section.
even though it worked. The process of “But they very much do this on indi-
going through the machine code and vidually named sections, not on the
replacing the placeholders with their kind of ‘do it for this section pattern’
actual values was not as clean as he that I want. Yes, you can do it for pat-
wanted. He wanted the kernel to be terns, and we do:
able to iterate quickly and cleanly over
all the occurrences of each place- BOUNDED_SECTION_BY(.note.*, _notes)
maintainers. Josh was not in favor of input section was a *pattern*, I can’t
modifying objtool the way Linus do that.
wanted; the two of them went back and “I can hardcode the section names,
forth on it a bit, with Josh eventually which fixes it, but that is what I wanted
agreeing to give it a try. However, it did to avoid (once I hardcode the section
apparently turn out that Linus was names I could have just added the start/
barking up the wrong tree with that end symbols by hand).
request. “That said, clearly there’s a way to just
Elsewhere in the conversation, Ras- do it, since your test-program – using the
mus Villemoes also replied to Linus’s built-in linker script can do it.”
initial post. Rasmus said that, in fact, Linus took a look at Rasmus’s proof-
there was an easy way to do what Linus of-concept code from years earlier and
wanted. In his patch, Linus had named said, “honestly, I think your approach
the various sections using names like may be better than mine.” He went on
.static_const., and this turned out, ac- to say:
cording to Rasmus, to be exactly the “Your thunking approach would proba-
problem. bly be much easier on architectures like
Rasmus said, “I’m probably missing arm64 where the ‘load a constant’ thing
something, but isn’t this exactly what can be a lot less convenient than one sin-
you get for free if you avoid using dots gle contiguous value in memory.
and other non-identifier symbols in the “Would you be willing to resurrect your
section names, i.e. make it ‘__static_ thing for a modern kernel? I’ll certainly
const__’ #sym or whatnot.” try it out next to mine?”
Rasmus went on to say, “If an output And that was the end of the discus-
section’s name is the same as the input sion, but presumably Rasmus will in-
section’s name and is representable deed work with Linus on this. Rasmus’s
as a C identifier, then the linker will proof-of-concept may soon come to sit at
automatically [provide] two symbols: the center of one of the hot paths of the
__start_SECNAME and __stop_SEC- Linux kernel.
NAME, where SECNAME is the name This kind of optimization seems so
of the section. These indicate the start much like witchcraft and wizardry to
address and end address of the output me. The idea of hot patching a running
section respectively. Note: most sec- kernel to replace a bunch of variable-
tion names are not representable as C seeming bits of data with constant val-
identifiers because they contain a ‘.’ ues, all in order to avoid the overhead of
character.” doing something absolutely normal like
Going further, Rasmus said that he passing a value as input to a function
had done a proof-of-concept patch im- call, is wild. Equally wild is the idea that
plementing exactly what Linus wanted – Linus would try to do such an odd thing
runtime constants – several years earlier, and would discover that someone else
but that it hadn’t gone anywhere. As he had already done it and had it waiting
put it, he “either never managed to send for him.
it, or never got a response.” It’s not completely unheard of for
Linus replied with a big laugh – at Linus to post a patch of his own and
himself. He said to Rasmus, “You’re not ask for help with it. But it is generally
missing anything – I am. I clearly missed never the case that someone replies
this linker rule entirely when I was look- with something they’ve already written
ing for some explicit way to set these that is better than what Linus had
start/end symbols, because that rule – done. One thing that does seem to be a
which is almost exactly what I wanted – trademark of Linus’s attitude towards
is implicit.” developers is his willingness to recog-
However, Linus still ran into problems nize when he’s wrong or when some-
trying to use this feature now. He one’s idea is better than his. In this
explained: case, Linus seemed more than happy
“You need to match the output sec- to accept that Rasmus’s approach to
tion name with the input section, and the problem was right and his was
since the whole point was that the wrong. Q Q Q
QQQ
Model Shop
Ollama and Open WebUI let you join the AI revolution
without relying on the cloud.
By Koen Vervloesem
L
arge language models (LLMs) such as the ones used by Choosing a Model
OpenAI’s [1] ChatGPT [2] are too resource intensive to Although it is tempting to use the biggest possible LLM with
run locally on your own computer. That’s why they’re Ollama, to prevent frustrations you should consider your
deployed as online services that you pay for. However, computer’s resources. The most important property is the
since ChatGPT’s release, some significant advancements have number of parameters in a model, because the number of
occurred around smaller LLMs. Many of these smaller LLMs parameters determines how much RAM you need. Indeed,
are open source or have a liberal license (see the “Licenses” before you can run a large language model, you need to load
box). You can run them on your own computer without having it completely into RAM.
to send your input to a cloud server and without having to pay Common sizes of LLMs are 7B, 13B, 33B, and 70B, where the
a fee to an online service. B stands for billions of parameters. You should have at least 8GB
Because these LLMs are computationally intensive and of RAM to run a 7B model, 16GB to run a 13B model, and 32GB
need a lot of RAM, running them on your CPU can be slow.
For optimal performance, you need a GPU – GPUs have
many parallel compute cores and a lot of dedicated RAM.
An NVIDIA or AMD GPU with 8GB RAM or more is
recommended.
In addition to the hardware and the models, you also need
software that enables you to run the models. One popular
package is Ollama [3], named for Meta AI’s large language
model Llama [4]. Ollama is a command-line application that
runs on Linux, macOS, and Windows, and you can also run it
as a server that other software connects to.
Installing Ollama
Installing Ollama on Linux is a one-liner:
a conversation with the model. When you’re finished, enter When you want to ask something about an image, include the
/bye to exit Ollama and unload the model. If, however, you path to the image in your prompt:
think you might want to start again with the same model with-
out unloading and reloading it, enter /clear. The /clear com- >>> Describe this image: /home/koan/U
mand clears the current session context, meaning that the Pictures/image20231029_093210782.jpg
Figure 3: Show all models you’ve downloaded. Using Ollama with llm
If you have installed Simon Willison’s
llm [13] command-line client for LLMs,
which I covered in an earlier Linux Mag-
azine article [14], you can also use it with
Ollama’s local models. You just need to
install the llm-ollama plugin [15]:
has some advantages. The Open WebUI documentation [19] has Add the following lines:
a good overview of its features and how to use them.
The preferred installation method is as a Docker con- [Service]
network interfaces, so Open WebUI’s Docker container can sudo systemctl restart ollama.service
Figure 6: Llama 3 answers a question about large language models and their popularity.
docker run -d -p 3000:8080 --add-host=U or Markdown-formatted documents. For example, when I up-
host.docker.internal:host-gateway U loaded a PDF file with information about the voltage range of a
-v open-webui:/app/backend/data U microcontroller product, Open WebUI saw the ~ in 2.6~3.3V
--name open-webui --restart always U as a strikethrough character, so it interpreted all text until the
ghcr.io/open-webui/open-webui:main next ~ as scrapped. So make sure to pre-process, convert, or ver-
ify files you upload before asking questions about them.
Then open the URL http://localhost:3000 in your web browser. For a multimodal model such as LLaVa and its derivatives,
You’re asked to sign in, but you don’t have an account yet, so the procedure is the same. Just drag an image to a chat in Open
click on Sign up. Enter your name, e-mail address, and pass- WebUI and start asking questions about it (Figure 8). However,
word. Note that you don’t have to register with an online ser- keep in mind that you’ll have to take this chat with a grain of
vice: This is a local account for Open WebUI. After you’re salt. Like any other large language model, a multimodal model
logged in, you’re greeted by the release notes. Click on Okay, has the tendency to invent stuff and give inaccurate results.
Let’s Go! to start.
Adding New Models in Open WebUI
Web Interface for your LLMs Open WebUI also helps you with managing models. Just click
Through Open WebUI, you now have a web interface to access on your user name at the bottom left, choose Admin Panel,
Ollama’s large language models. It immediately gives you some click on Settings, and then on Models. The first thing you can
suggestions for prompts (Figure 5). First select a model at the do is update all models you’ve downloaded by clicking on the
top, and then enter a question in the text field at the bottom. download icon next to Ollama’s URL. Downloading a new
After pressing Enter, you get Ollama’s answer. If you don’t model from Ollama’s model zoo is as easy as entering the
want to select a model every time, click on Set as default at the name in the text box below Pull a model from Ollama.com and
top to use the current model as the default. clicking on the download icon at the right (Figure 9).
The LLM’s answer (Figure 6) comes with options to edit, If you want to query a model about programming language
copy, or read the result aloud. You can also ask the LLM to con- tasks, try the granite-code:8b model from IBM. Open WebUI
tinue the response if it’s too succinct or regenerate the re- starts downloading the model (actually, Ollama is doing this in
sponse if you’re not satisfied. Another interesting addition be- the background), and after a while, the model is accessible from
comes clear if you click on the microphone icon: you can then a new chat. In my experience, downloading bigger models in
speak, and Open WebUI uses OpenAI’s Whisper [20] speech Open WebUI (such as Mistral AI’s Codestral 22B model, which
recognition model (running locally) to recognize what you say weighs 12GB) is error prone, with timeouts as a result. If this is
and put it in the text field. You can then optionally edit your the case, just running ollama pull followed by the name of the
question and send it to the LLM. Note that one of the icons model on the command line is a more reliable alternative.
under a response allows you to read the
LLM’s response aloud, so you can actu-
ally have a completely spoken conversa-
tion with the LLM.
It’s best to start a new chat for every
new topic you want to talk about, be-
cause a new chat starts a new session
from scratch without any context of the
preceding questions and responses. Just
click on New Chat at the top left, option-
ally change the model, and start chat-
ting. Note that it takes some time when
you switch the model, because Ollama
then needs to load the new model into
your GPU’s VRAM.
With a code LLM, Open WebUI even shows a Run button to some simple tests, the resulting code was usable, but not with-
run the code. Note that the code will run in the web browser, out having to remove some nonexisting or unneeded imports,
which probably doesn’t have all the required libraries. You can fixing some syntax errors, and doing some other minor
also copy the code and try it yourself on your computer. In changes. Clicking a few times on Regenerate also helps to reach
usable code, and you can also tell the
LLM how to fix the code by giving
instructions.
All in all, using a code LLM like this
can be helpful to start with a proof-of-
concept or a one-off script, but some-
times it feels like you’re teaching the
LLM to code and pushing it in the
right direction instead of the other
way around. In my experiments, Gran-
ite Code 8B was too frustrating to
work with and failed to write a work-
ing Bluetooth Low Energy scanning
script in Python, while the 22B big
Codestral was able to write it with a
bit of help (Figure 10). Your mileage
can vary. Bigger models are clearly
better, but they require a GPU with
more VRAM or more of your patience
when waiting for output.
Troubleshooting
If you get an error message, have a
look at Ollama’s logs with
Figure 8: The multimodal model thinks my Norwegian Forest cat’s
journalctl -xe -u ollama
breed could be “Angry Cat,” among other actual breeds.
The domain of large language models and their software is Regularly upgrading both programs is therefore recommended.
evolving rapidly, and this can lead to some compatibility prob- For Ollama, just rerun the installation command. For Open
lems. For instance, sometimes a model requires new features WebUI in the Docker container, pull the latest Docker image
that haven’t been implemented in Ollama or Open WebUI. with docker pull ghcr.io/open-webui/open-webui:main, stop
and remove the existing container with
docker stop open-webui and docker rm
open-webui, and create a new container
with the updated image using the same
docker run command as the one you
started with.
Conclusion
Ollama and its web interface Open WebUI
are helpful tools that let you experiment
with large language models on a local sys-
tem. You don’t need to depend on Chat-
GPT or other cloud-based LLMs and their
restrictions. Just find a model that suits
your purpose, download it, and run it on
your own computer. However, the world
of large language models is a fast evolving
domain. You’ll need to experiment a lot
and find the LLMs that suit your use cases.
By the time this Linux Magazine issue
reaches you, there might already be better
LLMs than the ones used in this article.
Have a look at the newest and most popu-
lar models in Ollama’s model library, and
give the innovative Ollama a try. Q Q Q
Author
Koen Vervloesem has been writing about
Linux and open source, computer security,
privacy, programming, artificial intelli-
gence, and the Internet of Things for more
than 20 years. You can find more on his
Figure 10: With a bit of help, Codestral can write and explain Python code. website at koen.vervloesem.eu.
Info
[1] OpenAI: https://openai.com [13] Simon Willison’s llm: https://llm.datasette.io
[2] ChatGPT: https://chat.openai.com [14] “Accessing ChatGPT from the Desktop or the Linux Com-
[3] Ollama: https://www.ollama.com mand Line” by Koen Vervloesem, Linux Magazine, issue 276,
[4] Llama: https://llama.meta.com November 2023, https://www.linux-magazine.com/Issues/
2023/276/ChatGPT-Clients
[5] AMD Radeon Drivers:
https://www.amd.com/en/support/linux-drivers [15] llm-ollama plugin:
[6] AMD ROCm: https://rocm.docs.amd.com https://github.com/taketwo/llm-ollama
QQQ
All-Rounder
numbers are obscured in bauh’s tables,
but other columns are perfectly legible
(Figure 1). In addition, a few of the
buttons on the right side of the main
window seem redundant (possibly to
accommodate varying user prefer-
ences) while, in an effort to avoid jar-
gon, the functions of some fields are
obscure. Fortunately, though, such
problems do not stop bauh from being
already functional. Package installation
and removal are already implemented.
In addition, bauh can also use Time-
shift for backup before making
changes and can be installed in the
system tray. Bauh already supports
custom themes. Written in Qt, bauh
supports all these features with a re-
sponsiveness that makes it usable even
in the early release stage.
E
be customized by editing the configura-
ver since package managers own commands for administration. For- tion file for either the system or the cur-
added automatic dependency merly known as fpakman, bauh [1] is rent account (Figure 2). Several other
resolution, installing software in designed to simplify package manage- options are detailed on the GitHub page:
Linux has been easy. The great- ment by using a single interface for all • Each packaging format can be set to
est difficulties arose from attempts to formats. In addition, bauh is one of the not display.
use different package formats, such as easiest interfaces available for package • The priority for each source can be
Photo by Curology on Unsplash
Debian’s Alien. These attempts were management either on the desktop or at changed. These sources depend on the
never fully successful and were widely the command line, despite the fact that distribution.
ignored. However, with the popularity some of the interface’s details need to • Custom themes can be created.
of universal formats such as AppImage, be improved. • Icons can be added to the system tray.
Snap, Flatpak, and web applications, Currently at release 0.10.7, bauh has Some of these customizations are also
package management has become more far to go before general release. As I available as command-line options (see
complex, with each format using its write, it supports Arch, AppImage, below). Users may find the default
Figure 1: Bauh’s interface has a few problems, but they do not affect functionality.
options satisfactory, especially in their Debian packages has settings whose the Install or Uninstall button on the
first explorations of bauh. exact meaning is sometimes poorly right (Figure 3). If you are uncertain
If you decide to keep bauh, you can labeled: what an installed package does –
upgrade from the user interface. • Software settings set by default to which is perfectly possible, consider-
Auto, which is not defined but proba- ing that a Linux system may have sev-
Post-Installation bly means those listed in /etc/app eral thousand packages – you can click
Orientation and Setup • An option for complete
The first time bauh runs, it takes a few removal of software (i.e.,
seconds to initialize. During this process, Apt’s purge option) set
it collects and categorizes all the pack- to No
ages installed on the system and displays • The time between syn-
its findings in the main window. The de- chronization of the local
fault display shows the packages with system with repositories
available updates, but it can be filtered (judging from the config-
at the top left of the window in several uration file, probably in
other ways, such as by apps, category, or seconds)
package type. A search field and a Refresh • App cache expiration,
button are also available. On the bottom presumably for bauh
right, you’ll find a variety of buttons itself and in seconds
which are not arranged in any obvious • Suggestions expiration,
order (from left to right, they are Sugges- presumably in seconds
tions, Themes, History, Settings, and The settings do have help
Credits). icons, but because online
Before you begin using bauh, you help is not implemented,
may want to do some configuration, al- they are only a promise of fu-
though it is ready to use with the de- ture explanations. For now,
faults. Suggestions provides mostly some of the settings should
websites for creating web applications, probably be done manually
but it also includes games, emulators, rather than automatically.
and a few standard multimedia apps
ranging from Audacity to Krita – a total Working with
of 53 overall. Settings is more practical. Packages in bauh
From its tabs, you can set the types of After so much configura-
packages that your bauh instance sup- tion, working with pack-
ports, as well as its general behavior, ages in bauh is straightfor-
such as whether the system should re- ward. Because bauh uses
boot after each installation, the scale intelligent defaults, it is
of the interface, or how bauh behaves ready to use immediately.
when installed to the system tray. Whether in the main or
There is also has a separate tab for Suggestions window, in-
how each package type behaves, al- stalling or uninstalling is
though settings are sometimes labeled as simple as selecting a Figure 2: Bauh’s configuration file, showing
obscurely. For instance, the tab for package and then clicking the default values.
Future Development
With support for Arch, Debian, and
universal packages, bauh is off to a
good start. However, the lack of sup-
port for RPM packages seems an over-
sight. Currently, the ability to down-
grade and to record a history of opera-
Figure 3: Installing a package. tions are mentioned on the project
page, but these options are not imple-
one button to view it or another button the system or a single account, but as mented for all package types. Perhaps
to read a technical summary (Figure 4). an added security measure, even instal- most importantly, developers are in-
Usefully, you can install still another lation for a single account requires a creasingly using additional installation
button to ignore updates for a package, password. methods for developing applications
read a history if it is a Flatpak package, Ordinarily, bauh can run without op- such as Git, Homebrew, and pip. As
or remove it completely if it is a Debian tions, relying on automatic settings if bauh moves nearer to its general re-
package. Packages can be installed for you choose. However, from the lease, some of Apt’s features might
also benefit users.
However, this wish list is overly im-
patient. Even with its present half-fin-
ished interface, bauh goes a long way
toward re-simplifying package manage-
ment. For that alone, bauh is a wel-
come addition to a modern Linux dis-
tribution. Q Q Q
Info
[1] bauh: https://github.com/vinifmor/
bauh?tab=readme-ov-file
[2] GitHub: https://github.com/vinifmor/
bauh?tab=readme-ov-file#installation
Author
Bruce Byfield is a computer journalist and
a freelance writer and editor specializing
in free and open source software. In
addition to his writing projects, he also
teaches live and e-learning courses. In his
spare time, Bruce writes about Northwest
Coast art (http://brucebyfield.wordpress.
com). He is also co-founder of Prentice
Pieces, a blog about writing and fantasy at
Figure 4: A detailed summary of each package is available in bauh. https://prenticepieces.com/.
QQQ
First Aid
SysLinuxOS puts an end to searching for the right tools for admin tasks. By Erik Bärwaldt
F
or many admins, Linux is the op- two ISO images on its homepage: A error reading sector message briefly
erating system of choice when it 5.1GB version uses the lean MATE desk- flashed in the GRUB boot menu on both
comes to tools for system manage- top, while a second 3.6GB version uses virtual machines (VMware, VirtualBox)
ment, monitoring, data recovery, Gnome as its desktop environment. Both and when stored on a DVD.
and rebuilding complete systems. But versions only run on 64-bit computers.
conventional distributions have limits in In addition to numerous standard ap- First Launch
this respect, because they typically only plications such as LibreOffice, Gimp, After starting SysLinuxOS, you are first
come with a few of the required tools. and Firefox, the system comes with a taken to a conventional GRUB boot
For admins, this means laboriously com- variety of smaller, desktop-specific ap- menu that only offers a Live option.
Lead Image © Kritiya Sumpun, 123RF.com
piling a toolkit yourself. SysLinuxOS [1], plications and an impressive collection However, you can install via the Live
based on Debian 12 “Bookworm,” steps of system administration tools, includ- system. After a short wait, a login screen
into the breach providing a sys admin ing both graphical and command-line opens, and you can log in as admin with
toolkit. tools. Instead of targeting a specific ap- a password of root.
plication scenario, SysLinuxOS’s devel- The graphical desktop environment
Strategy opers bundle a wide variety of tools for then opens (Figure 1). The developers
SysLinuxOS v12.3, released in early virtually any admin task you can have already integrated a large number
2024, comes as a hybrid Live system that imagine. of monitoring apps, which tends to
can be set to boot from various remov- In testing, the Gnome variant refused make the desktop a little cluttered. De-
able media. The project currently offers to launch in various environments. An spite this, the many, constantly
changing status displays makes for a Interface display data transfers on the network,
genuinely eye-catching user interface. In addition to a conventional panel bar as well as various small status displays
The interface is optimized for a mini- at the top of the screen, the MATE for CPU and RAM utilization in near
mum resolution of 1920x1080 pixels. desktop offers a Plank dock bar at the real time.
As a result, the individual status dis- bottom for launching more applica- Conky, a well-known system monitor,
plays partly overlap at lower tions. The panel bar also comes with is also onboard to keep you up to date
resolutions. several applets including some that with the most important system statuses.
Figure 2: SysLinuxOS also comes with lesser-known applications, such as the sparrow-wifi analyzer.
Conky runs two instances: the conven- Besides Firefox and Google Chrome, Mi- addition to free tools such as EtherApe,
tional vertical status bar on the right- crosoft Edge and the Tor Browser are also Ettercap, FileZilla, htop, Wireshark, and
hand side of the screen and several integrated as web browsers. Tor is actu- Remmina, you’ll also find Oracle’s Virtu-
graphical displays at the center. There ally downloaded from the Internet via a alBox 7.0, AnyDesk 6.3, and the Team-
are also some icons at the top that give script and integrated into the system the Viewer 15.49.2 client. There are also
you direct access to the corresponding first time you call it. other, less well-known free applications
directories on the local system and re- Thunderbird is the email client and such as the sparrow-wifi analyzer (Fig-
mote servers. personal information manager (PIM) ap- ure 2) or LinSSID for monitoring data
plication, and the developers have also transfer rates on wireless networks.
Software added clients for various communication In the Accessories submenu, you will
The Live system’s software features are platforms, including Skype, Zoom, find balenaEtcher and Raspberry Pi Im-
impressive. In addition to typical standard WhatsApp, and Telegram in the Internet ager for creating bootable removable
applications, it comes with many smaller submenu. The Cisco Webex [2] collabor- media. The Wine Windows runtime en-
applications and tools. SysLinuxOS in- ative client is also available. vironment is also fully configured, plus
cludes a very extensive selection of soft- The Networking submenu offers an there are two graphical front ends for
ware, especially for using the Internet. impressive selection of software. In configuring the firewall.
If you look in the System Tools sub-
menu, you will find BleachBit, a graphi-
cal program for freeing up storage space
on mass storage devices; the GParted
partitioner; Stacer for system monitor-
ing; and CPU-X for identifying various
hardware components.
Installation
To install SysLinuxOS, you need to se-
lect the Install SysLinuxOS option in
the System Tools submenu. After enter-
ing the password, you are taken to the
Calamares graphical installer, which
installs the Debian derivative on your
mass storage device in just a few steps
Figure 3: Calamares installs SysLinuxOS on the computer with just a (Figure 3).
few clicks. After the installation and a reboot, you
are taken back to a conventional GRUB
boot menu. Unfortunately, SysLinuxOS’s
GRUB boot manager does not automati-
cally find any other operating systems
you have installed, which means that
you will need to manually configure the
corresponding entries. After installing, it
makes sense to create a complete backup
of all operating systems already installed
on the computer to prevent accidental
data deletion and loss.
The installed instance has the same
software inventory as the Live system.
Package Management
Like Debian, SysLinuxOS uses APT and
DEB packages, but comes without an
additional app store. Instead, the sys-
tem integrates the Synaptic GUI front
end enabling the convenient installa-
tion of additional packages and pro-
grams with just a few mouse clicks.
Synaptic also makes it easier to update
Figure 4: The SysLinuxOS package manager also integrates third-party the system. The package sources also
repositories. include various repositories by
QQQ
REVIEW
Ubuntu MATE 24.04
Keeping It Simple
Ubuntu MATE is an intriguing option for users who want the steady predictability of Ubuntu
without the complexity and feature-bloat of modern-day Gnome or KDE. By Daniel LaSalle
T
he Ubuntu project supports a (Ubuntu with Xfce) are all popular al- MATE is often associated with Linux
constellation of different edi- ternatives to the default Gnome-based Mint, where it is one of the headline
tions or flavors that are all built configuration. If you’re looking to com- desktop options.
on the Ubuntu codebase. bine the power and reliability of Ubuntu It didn’t take long for the Ubuntu
Kubuntu (Ubuntu with KDE), Lubuntu with a simple and intuitive desktop en- community to show an interest in the
(Ubuntu with LXQt), and Xubuntu vironment, Ubuntu MATE [1] might MATE desktop. Ubuntu MATE
offer the best of both worlds. launched in 2014, and by 2015, it had
The Leader The MATE (pronounced ma-tay) proj- gained official Ubuntu flavor status.
ect was started in 2011 by developers (See the box entitled “The Leader” for
The Ubuntu MATE project leader, Mar-
tin Wimpress [4] (aka Wimpy), is a fam-
who disagreed with the direction of the a brief profile of Ubuntu MATE project
ily man and a full-time geek who some- Gnome desktop at the time of the leader Martin “Wimpy” Wimpress.) I
times finds the time to work on other Gnome 3 release [2]. They argued that first learned about Ubuntu MATE at a
cool projects. For instance, he devel- new Gnome Shell was unnecessarily local Linux Meetup [3] in 2016. My
oped his own retro arcade game called complicated, and they wanted to con- first impression was that the project
Antsy Alien Attack Pico [5] that took tinue with the Gnome environment they looked like solid work, and the team
second place at the Linux Game Jam had grown accustomed to with was well organized with an impressive
2023 [6]. Wimpy is also invested in Gnome 2. The developers forked the level of maturity and organizational
podcasting, streaming, and various Gnome 2 code to
other endeavors. In 2014, Wimpy and launch the MATE
Ubuntu MATE-cofounder Alan Pope
Lead Image © dirk ercken, 123RF.com
project. Since
had the brilliant idea to remix the then then, the MATE
Unity-based Ubuntu platform into a desktop has found
new spin-off based on the MATE desk-
a stable place in
top environment [7]. As of May 2024,
the Linux desktop
the Ubuntu MATE project’s Patreon
pantheon. Origi-
page [8] had over 300 registered mem-
nally launched by
bers and and was bringing in close to
the Arch Linux Figure 1: After installation, 16GB out of the originally
$500 per month in memberships.
community, today reserved 27GB were still available.
App Center (Figure 5). The App Center is software needs. Finally, Gnome Firmware improvement and development. Conse-
quite simple to use, making it easy for replaces Firmware Updater. quently, Ubuntu MATE 24.04 LTS offers
both newcomers and veterans to quickly Because Canonical is committed to five years of support, until June 2029.
become comfortable managing all of their Ubuntu, users can expect continuous Canonical provides up to 10 years of
Expanded Security Maintenance (ESM)
for the full stack and 12 years of security
fixes through its Ubuntu Pro program [11],
which is free for personal use with up to
five systems.
Got Tweaks?
With MATE Tweak [12], you can cus-
tomize the panel interface to resemble
your accustomed workflow. You can
choose from seven layouts, including the
default Familiar (offering the rustic feel
of Ubuntu MATE), Cupertino (featuring a
dock and menubar familiar to macOS
users), Mutiny (a lightweight alternative
familiar to Ubuntu Unity users), Red-
mond (familiar to Windows users), and
Traditional (the original Gnome 2 menu
layout as shown in Figure 6).
MATE Tweak also lets you easily
switch between window managers that
support (or don’t support) compositing.
While Ubuntu MATE 24.04 LTS only
ships with the Marco window manager
installed, you can install Compiz and set
it as the default.
Conclusion
The greatest thing about Ubuntu MATE is
Figure 5: The totally revamped and visually appealing App Center that it elegantly bridges accessibility and
offers a curated software collection. robustness. By pressing a few keys, it can
navigate into a fast and no-fuss work en- clean, structured, and friendly. Ubuntu [3] Quebec Linux Meetup:
vironment, making it a great choice for MATE 24.04 delivers an impeccable https://rencontres-linux.quebec/
students and professionals alike. In fact, it end-user experience while being mod-
[4] Martin Wimpress:
is so accessible that it even installed my ern, simple, and resource friendly, so
https://wimpysworld.com/
LAN printer without me doing any work. much so that it is a serious contender
Of course nothing is perfect. If you are for reinvigorating any old machine that [5] Antsy Alien Attack:
upgrading from Ubuntu MATE 23.10, is gathering dust or for anyone having https://github.com/wimpysworld/
version 24.04 might break your system lost all hope using computers. antsy-alien-attack
[14]. While writing this article, I was While most new distributions will not [6] Linux Game Jam: https://itch.io/jam/
only able to correctly upgrade one sys- stand the test of time, Ubuntu MATE cele-
linux-game-jam2023/results
tem (out of two) from version 23.10 to brates its 10th anniversary in 2024, a tes-
version 24.04. There have also been timony to Martin Wimpress’s work. Q Q Q [7] MATE Desktop Environment:
other issues with the upgrade [15]. https://mate-desktop.org/
However, these issues may be resolved Info [8] Ubuntu Mate Patreon page: https://
by the time you read this article. [1] Ubuntu MATE:
www.patreon.com/ubuntu_mate
Ubuntu MATE is about more than https://ubuntu-mate.org
[9] Year 2038 problem:
just good looks. Unlike many of its pre- [2] “Canonical Ubuntu Splits From
decessors, Ubuntu MATE keeps push- https://en.wikipedia.org/wiki/
GNOME Over Design Issues” by Joab
ing towards innovation and humanity, Jackson, PCWorld, October 25, 2010, Year_2038_problem
improving their game with each new https://www.pcworld.com/article/ [10] Ubuntu MATE 24.04 LTS Release
release while keeping their project 504223/article-3057.html Notes:
https://ubuntu-mate.org/blog/ubuntu-
mate-noble-numbat-release-notes/
[11] Extended support for Ubuntu Pro cus-
tomers: https://canonical.com/blog/
canonical-expands-long-term-
support-to-12-years-starting-with-
ubuntu-14-04-lts
[12] MATE Tweak: https://ubuntu-mate.org/
features/panel/
[13] Ventoy: https://www.ventoy.net/
[14] “Ubuntu 24.04 Comes with a ‘Flaw’”
by Jack Wallen, Linux Magazine, April
29, 2024, https://www.linux-magazine.
com/Online/News/Ubuntu-24.04-
Comes-with-a-Flaw
[15] Additional issues:
https://ubuntu-mate.community/t/
please-report-bugs/27974
Author
Daniel LaSalle was introduced to the
command prompt while in 5th grade, but
his addiction to technology spans over 30
years. In the past decade he’s been using
Linux every day and freelancing as an in-
Figure 6: Back when Gnome 2 was still king, people lived in a frastructure specialist. https://www.linke-
Traditional user interface world. din.com/in/daniellasalle/
QQQ
Control Your
Containers
LXC, a command-line manager for Linux containers, is quite tricky to use. Enter the LXD-UI
web interface to make life easier. By Martin Mohr
L
inux Containers (LXC) is an oper- Installation sudo systemctl daemon-reload
UI [1], an easy-to-use graphical web change this, you need to #### Install LXD
front end [2], lets you quickly and easily uncomment the Default- # snap install lxd --channel=latest/stable
set up and manage LXC. TasksMax parameter in the #### Enable GUI
Additionally, LXD-UI helps you to con- /etc/systemd/system.conf # snap set lxd ui.enable=true
figure the entire LXD system, including file, setting it to a value of #### Restart LXD
virtual networks, storage pools, and de- 16547 (DefaultTasks-
# snap restart --reload lxd
fault container settings. The bottom line Max=16547). After saving
#### Set HTTPS port for GUI
is that LXD-UI considerably simplifies the changes, reload the
# lxc config set core.https_address :8443
tasks related to Linux containers. service by typing
Getting Started
Once you have reached the interface,
first create a new certificate to secure the
connection in the future. Then follow the
installation instructions on the website
including the following command,
among other things:
Network Connection
The newly created container
does not currently have a net-
work connection. To set this up,
you first need to create a new
network. Normally this happens
automatically during the LXD Figure 3: LXD offers a large selection of installable images.
Local System
The hardware used in
the test was a slightly
older Raspberry Pi with
8GB RAM. In principle,
though, the hardware is
not particularly impor-
tant; just make sure that
you do not immediately
run into resource
bottlenecks.
Figure 4: Once created, a few clicks are all it takes to log in to the new system in a I used Ubuntu 22.04.3
terminal window. Server [4] as the operat-
ing system on my host.
install, but it did not seem to work in translation (NAT), you need an additional The installation already includes LXD,
testing with the Strato server. This could firewall rule on the host system (Listing 2, but it is an outdated version without the
be due to the fact that the V-Server itself line 1). To make a container’s port on the web GUI. Your only option is to delete the
already has a virtual network interface. host’s IP address accessible from outside, existing LXD and install the latest release.
To create a new virtual network for the you first need to set up port forwarding At the time of testing, this was version
containers, go to Networks | Create (Fig- on the host (Listing 2, line 2). 5.19 from the Snap Store (Listing 3).
ure 5). Enter the follow-
ing parameters and cre- Listing 2: Iptables Rules
ate a network: 01 # iptables -t nat -A POSTROUTING -o venet0 -j MASQUERAD
• Type: Bridge 02 # iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <Container-IP>:80
(standard)
03 # iptables -t nat -L -v -n
• Name: lxdbr0
• Ipv4 Address:
10.9.173.1/24
• Ipv6 Address:
fd42:7b3f:d2be:70c::1/64
To assign the network to
the container, stop the
container, switch to In-
stances | <Container
name> | Configuration |
Advanced | Network de-
vices in the settings and
assign the network to an
interface (Figure 6).
Then restart the
container.
In the current state,
only the containers on
the virtual network can
communicate with each
other; there is no access
to the Internet. To con-
nect the containers via Figure 5: To add a network connection to the container, you first need to create a vir-
network address tual network.
Conclusions
Once the LXD environ-
ment is set up, an LXC
container can be created
and managed with just a
few clicks using LXD-UI.
The setup will look
slightly different depend-
ing on the system de-
spite using an identical Figure 6: To use the network, it must be assigned to an interface.
QQQ
electerm
The modern electerm combines terminal, file manager, and remote connection functions into a
single app. By Bruce Byfield
L
inux is in an era of revisionism. terminal that replaces man pages with classic apps as Miguel de Icaza’s
Functionality that has been part of AI queries. On the other hand, experi- 30-year-old Midnight Commander.
Linux from the start – such as vir- ments such as electerm [1] merge termi- Electerm is too new to be found in dis-
tual terminals, file managers, and nals, file managers, and remote connec- tro repositories. However, the project’s
commands like ls and cd – is being re- tions into a single app with versions for GitHub page offers DEB, RPM, ARM64,
thought to take advantage of modern Docker and the web. Although few of ARM Beta, Snap, ArchImage, and tarball
hardware and better fit modern needs electerm’s functions are new, merging packages, as well as macOs and Win-
and expectations. These revisions vary these functions into a convenient single dows 10-11 versions. Electerm installs
wildly in quality. On the one hand, some app is such a logical move that electerm ready to use, but you can use the Setting
are eccentrically engineered, such as one seems likely someday to dethrone such icon in the sidebar on the left to
customize shortcut keys, bookmarks to Where convenient, there is some redun- Compared to desktop file managers such
open on startup, terminal scrollback, dancy, which increases ease of use. as Dolphin, electerm’s file manager is less
background image, a limited selection of Electerm opens in the terminal, which is convenient to use, but it compares favor-
fonts, and password encryption. By de- similar to those installed in most modern ably to other command-line file managers
fault, electerm opens in a white on black distributions, with files, directories, cur- and is certainly more useful than the ven-
theme, but you can choose from 32 pre- sors, and other display elements color- erable ls commands (Figure 2).
defined themes via the Terminal themes coded. It can be customized in Terminal Clicking on Bookmarks lets you import
icon, as well as define your own theme. themes. A right-click menu includes Cut, and export bookmarks, as well as create
You can also add your own bookmarks Copy, Paste, Search, and Split. Compared both bookmarks and categories for
via the New bookmark icon, not only to to many distributions’ default terminals, them. Bookmarks can be local or remote,
files and directories, but also network electerm’s terminal is perhaps rather basic, password-protected and encrypted, and
locations. but it is more than adequate for the most given their own environments and start-
common functions (Figure 1). ing directories. Electerm’s developers
Starting electerm File Manager is
Without options, the electerm command located to the
works with the local system. However, right of Terminal,
options can also make an external con- on the reasonable
nection, making it act as an SSH, Telnet, assumption that it
RDP, or VNC server, or connecting via is the second
serial port. Used as an SSH server, the most-used func-
command is electerm ADDRESS or tion. At the top
electerm PORT. Other protocols must left are icons to
be specified so that the command for toggle the display
Telenet would start with of hidden files or
directories, to
electerm -tp "telnet" -opts move up to the
next directory in
Under the -ops option, the host, port, the hierarchy, or
user, passphrase, or password are en- to create a book-
tered. For example: mark. The right-
click menu gives
electerm -tp "vnc" -opts '{U all the expected
"host":"192.168.1.1","port":3389",U options, although
"username":"root","password":"123456"}' the Edit function
only works with
In addition, temporary environmental the system editor.
variables can be set with To open a binary
file, you need to
--set-env VARIABLES use the less obvi-
ous Open. Figure 2: Electerm’s file manager.
From an already running instance, these
commands can be opened in a new tab
with -T NAME. Commonly used command
sequences can be stored in a CSV file
and loaded with
Subwindows
The electerm window is simple in design.
At the top, you’ll find the menu for the
currently selected functions. Below this
are tabs for Terminal and File manager. A
vertical icon sidebar on the left hosts the
basic functions with the Menu at the top
followed by New bookmark, Bookmarks,
History, Terminal themes, Setting, Setting
sync, and BatchOp (batch operation). Figure 3: The bookmarks in electerm are uniquely full featured.
have given careful consideration to a CSV file. It shows the values required bookmark and batch files. Both do more
bookmarks, and the result is more than for a remote and local batch file, as well than their counterparts elsewhere and
a mere link. For convenience, New as what each looks like. For convenience, are easier to use. However, electerm’s
bookmarks has its own icon, but it is an existing file can be imported and most useful accomplishment to date is
identical to Bookmarks (Figure 3). modified when a new file does not the organization of related but tradition-
In most shells, history is a compli- need to be written from scratch. Batch ally separate functions – notably the ter-
cated tool, a matter of scanning with files can be run from the Quick com- minal and file manager – into a single
arrow keys or remembering when an mands link at the bottom of the termi- workflow. True, the organization is not
entry was made. For this reason, many nal. BatchOP removes the need for a yet complete, and sometimes takes a
users tend to avoid it for traversing separate editor, at least for simple while to adjust to, but the trend is to
more than a few entries back. By con- scripts (Figure 4). bring the command line up to date.
trast, electerm’s graphical display Desktops users just might find that
makes its History more powerful than Progress Report electerm makes the command line a
most, for the simple reason that it is As I write, electerm is in early general re- less fearsome place. Q Q Q
easier to use. With a glance and a click, lease. I began working with the 1.39.88
electerm moves to the selection. release, and an upgrade came out just
BatchOp provides a basic editor for before I finished. At this stage, Info
preparing batch files and saving them as electerm’s original features are its [1] electerm: https://github.com/electerm
Figure 4: Written to CSV files, electerm’s batch files make scripting easy.
QQQ
Smart
Assistant
eBPF offers a powerful remedy for the complexity of Kubernetes, but it can be difficult to configure
and manage. Cilium provides easy access to eBPF’s revolutionary capabilities. By Roland Wolters
I
n the early 2010s, Linux had already the same time, the first container solu- programs, with many companies basing
begun conquering data centers, and tions appeared, placing even more de- products on it. A foundation [2] sup-
it was on the path to becoming the mands on the network. A new approach ports the ongoing development of the
standard operating system for serv- was needed. technology. The members of the eBPF
ers. At the same time, another data cen- Foundation include well-known names
ter trend emerged: Virtualization. To eBPF Revolutionizes Linux from the cloud and Linux environment
keep pace with the development of virtu- Alexei Starovoitov found a solution: He such as Meta, Google, Red Hat, Intel,
alized infrastructures, networks had to expanded the existing BPF kernel subsys- Netflix, Datadog, and Isovalent, whose
go virtual, too. tem, which was quite simple at the time acquisition Cisco announced at the end
Software-defined networks (SDNs) and had been developed in the 1990s as a of 2023. If you want to find out more
were the first step toward network vir- simple packet filter Starovoitov extended about the history of eBPF, watch the
tualization. The Open Networking BPF to include some foundational capa- 30-minute video documentary on You-
Foundation was founded in 2011 to fur- bilities, launching eBPF [1] in the Tube [3]. Cilium is an application built
ther disseminate and standardize SDNs. process. on eBPF that brings far-reaching moni-
Open vSwitch found its way into the eBPF acts as a kind of kernel VM into toring, extensive security operations,
kernel in 2012, the same year that VM- which generic programs are loaded at and a high-performance network to
ware bought SDN pioneer Nicira. The runtime and then executed. Thanks to Kubernetes.
pace of development was fast – too fast eBPF, it was suddenly possible to change
Lead Image © Dan Barbalata, 123RF.com
for the Linux kernel. Network technol- and extend the way the kernel worked A Brief History of eBPF
ogy requires high performance, which without rebooting, a revolutionary inno- eBPF is a technology that is used to run
for Linux means that it must be part of vation. Because eBPF code can interact programs in a sandbox at kernel level
the kernel. Code changes to the kernel with the kernel and operates on the (Figure 1). The programs are called by
often take many months, and after a re- same layer, it offers capabilities for de- events. These events call trigger hooks,
lease, they are slow to reach the distri- tailed monitoring, enhanced security, i.e., specific locations in the kernel.
butions as packages. This slow pace of and other very powerful features. They include specific function calls, the
change slowed the adoption of rapidly eBPF has now reached the markets. start or end of a function, important
developing network technologies. At It is used in a variety of projects and network events, and so on. You can
Figure 3: The interactive policy editor is accessible on the Internet. © The Cilium Authors, https://cilium.org
relationships. Basically, Kubernetes al- the outside or leaves the cluster for an traffic. This in turn makes it possible to
lows everything without these rules. outside destination. Cilium supports the use this stream of network traffic for
You could compare this with a city in Kubernetes Ingress Resource and there- monitoring purposes.
which everyone – from cars to bicycles fore TLS termination, load balancing, For example, Cilium can both ensure
to pedestrians – runs or rides around and HTTP on layer 7. Cilium also sup- that data exchanges only take place with
in a chaotic way. The network policies ports the newer Gateway API specifica- *.cilium.io and can count how often
bring order to the chaos, and K8s ad- tion, which extends Ingress to include connections to that destination are es-
mins can use them to control which Layer 4; it offers additional protocols, tablished. It has the ability to display
pod is allowed to communicate with along with HTTP, and includes ex- communication relationships and break
which service. tended functions such as A/B testing them down to the level of DNS names
Cilium understands both general Ku- and canary rollouts. Cilium also man- and HTTP paths. To display communica-
bernetes network policies and Cilium ages outgoing data traffic: For example, tion relationships, Cilium uses the Hub-
network policies. Normal network poli- the Egress Gateway function can ensure ble component (Figure 4), named after
cies enable control on layers 3 and 4 of that a specific endpoint outside the the well-known space telescope. Hubble
the OSI layer, whereas the Cilium net- cluster is always addressed with the is basically a user interface that provides
work policies also cover layer 7 – HTTP same source IP. This considerably sim- insights into the relationships between
paths, for example. (eBPF does not im- plifies integration into environments the services and the data traffic between
plement this L7 support directly, so with IP-based firewalls. those services.
Cilium uses a lean Envoy proxy.) In Cilium as a CNI has now firmly estab- Hubble displays relationships between
addition to this, Cilium lets you filter lished itself on the market. It is a Gradu- services as a service map, showing the
both by pods or namespaces, as well as ated Project of the Cloud Native Founda- matching data streams at the press of a
on the basis of DNS names, services, tion (CNCF), the only CNI with this sta- button. Hubble helps to answer ques-
endpoints, and more. tus. The major cloud providers rely on tions such as:
The interactive policy editor at editor. Cilium, including Azure CNI Powered by • Which services communicate with
networkpolicy.io (Figure 3) provides use- Cilium, AWS EKS and EKS-A, and the each other and how often?
ful insights into the various options for Google GKE Dataplane v2. Increasing • Which service does service X depend on?
Cilium and Kubernetes network policies. numbers of organizations are turning to • Are there any problems with network
The policy editor offers the option of Cilium. The Adopters page at the Cilium traffic? If so, where are connections
clicking together rules and displays the website [7] links to a large number of ex- blocked, and where are packets
result as Kubernetes and Cilium network perience reports. dropped? On which layer is there a
policies. You can download and deploy problem with the connection?
these rules on existing Kubernetes Cilium Hubble • For which services were connections
instances. Cilium can filter network traffic on Layer blocked due to existing rules?
A special case of network traffic oc- 7 because it natively understands the • What is the rate of 4xx (client error) or
curs when data enters the cluster from data stream associated with HTTP 5xx (server error) return codes?
Figure 4: Cilium using the Hubble component to inspect data streams on the network. © Isovalent, https://isovalent.com
This information makes Hubble invalu- whether compliance is maintained in Service Mesh
able for troubleshooting existing applica- day-to-day operations. Cilium can also When it comes to Kubernetes and net-
tions in day-to-day operations. Click- encrypt network traffic with Wireguard working, the service mesh is a must
House summarized this in a field report or IPsec. This ensures data confidenti- have. The service mesh is a software
[8] as follows: “I used Hubble to debug ality where networks are shared or are layer that facilitates communication be-
[the issues], to see network flows, how not under the control of a specific user. tween services in applications. Linkerd,
things are going, where it’s blocked, be- Both approaches have their advantages Istio, and Kong offer established solu-
cause we had problems with traffic for- and disadvantages: Wireguard offers tions – what is Cilium’s position? After
warding and it wasn’t clear. What is automatic key management, whereas all, it provides functions such as filter-
that? Is it a network policy or something IPsec shows better latencies and better ing at protocol level, a feature that is
else? When we initially installed Cilium, CPU efficiency in tests. normally associated with a service
we didn’t enable Hubble, but now we On the other hand, Cilium addresses mesh. And that is precisely Cilium’s
have it installed in every cluster because the issue of security with the Tetragon approach.
it is so useful for debugging.” component [9]. Tetragon (Figure 5) also Cilium offers various functions of a
But monitoring also benefits consid- relies on eBPF, but unlike Cilium, it does service mesh. These functions are either
erably from Hubble. You can export not target the data traffic between nodes, implemented directly in eBPF (like TCP
metrics to Grafana to visualize the data. but the nodes themselves. Where Cilium filtering) or in a minimized Envoy proxy
Typical graphs include the number and provides insights across the cluster, (such as protocol-native filtering), of
ratio of HTTP return codes, drop reasons, Tetragon deep dives, plumbing the which you need one per node instead of
HTTP latencies, and DNS errors. You depths of the kernel on the node. one per container. Familiar service mesh
don’t need to use the graphical inter- Tetragon monitors the system calls, the solutions usually start another service
face: Hubble offers an equally powerful namespaces, and so on. By doing so, mesh container for each container,
command-line interface. Tetragon can draw a complete picture of quickly increasing the overhead and
what is happening on a node. complexity. This is not necessary with
Cilium Tetragon One potential use case for Tetragon Cilium.
As the use of Kubernetes for business- is to monitor containers to see whether Cilium’s approach has other advan-
critical applications increases, the secu- new processes are still starting after an tages in addition to reducing complex-
rity and compliance aspects are becom- extended period of uptime. Because ity. Benefits include lower overhead
ing increasingly important. Can Cilium containers are immutable, a new pro- due to the lack of sidecars and a flat
also help with ISO 27000 information se- cess often indicates a possible break- learning curve because the Cilium ser-
curity management and basic in. GitHub uses Tetragon to assign net- vice mesh uses existing methods. What
protection? work traffic to individual processes on is probably the decisive advantage,
Cilium approaches these topics from the host to gain a deeper understand- however, is that you can switch on the
two sides. On one hand, the Cilium op- ing of which application in a cluster is required service mesh functions when
tions provide direct support in securing causing specific traffic. Tetragon not it suits you. Instead of evaluating a
systems. Detailed network policies only offers insights but can also block complete service mesh, testing it,
help to secure services and establish a events. For example, you can prevent training the team on it, and introduc-
zero-trust policy. Hubble handles veri- suspicious access to system files such ing it into testing and production with
fication tasks and continuously checks as /etc/shadow. a lot of effort and a big bang, Cilium
Figure 5: Tetragon provides insights into the inner workings of a node. © The Tetragon Authors, https://tetragon.io
Mesh allows you to switch on the re- management involves special chal- If this article has aroused your inter-
quired features during operation when lenges, particularly in the fields of net- est, your next stop should be Cilium
they are needed. This approach simpli- works, monitoring, and security. The Labs [10], where you will find interac-
fies the introduction of service mesh revolutionary eBPF meets those chal- tive programs that you can launch di-
functions. Teams often do not need all lenges, but it poses some challenges of rectly from the browser to get to know
the functions of a service mesh but its own. Cilium makes eBPF’s capabili- Cilium and all of its components. Q Q Q
only a small but crucial part. In such ties manageable, enabling comprehen-
cases, a native service mesh, as imple- sive management of networks in Ku- Info
mented by Cilium, offers an invaluable bernetes and also supporting interfaces [1] eBPF: https://ebpf.io
advantage. to the surrounding IT environment. [2] eBPF Foundation:
It seems that other projects are fol- The Tetragon and Hubble components https://ebpf.foundation
lowing the path taken by Cilium, add a wide range of monitoring and se-
[3] eBPF documentary:
transferring increasing numbers of curity functions. https://www.youtube.com/watch?
functions to the underlying network v=Wb_vD3XZYOA
layer or basing them directly on Cil- Author
[4] Katran: https://github.com/
ium. The service mesh might not be- Roland Wolters is Head of Technical
facebookincubator/katran
come the Kubernetes network of the Marketing at Isovalent where he and his
team are responsible for communicating [5] Kube proxy:
future, but it could simply merge with
the technical value of eBPF, Cilium, and https://isovalent.com/blog/post/
the underlying network layer and the why-replace-iptables-with-ebpf
Isovalent Enterprise for Cilium to
proxies over time, which would cer-
customers, prospects, and partners. [6] Cilium: https://cilium.io
tainly be a desirable outcome for ad-
His areas of expertise include security, [7] Adopters: https://cilium.io/adopters
mins who oversee Kubernetes
automation, and open source. He is a
infrastructures. [8] Case study by ClickHouse:
keen driver of Agile processes and
https://www.cncf.io/case-studies/
would be lost without his Kanban
Conclusions clickhouse
boards. Outside of work, he is usually
Kubernetes is here to stay as a way to most known for trying to frantically keep [9] Tetragon: https://tetragon.io
manage containers. But container up with his rambunctious young triplets. [10] Cilium Labs: https://cilium.io/labs
IN-DEPTH
Steganography
Nothing Here
Intruders and spies have ways of concealing information in image files, doc files, and other
innocuous locations. Welcome to the sneaky art of steganography. By Chris Binnie
S
teganography is the art of pass- on cryptography and steganography, dis- ancient times messages would be care-
ing secret information. Kapersky guised as a book about magic” [2]. fully concealed on the back of wax tab-
puts it this way: “Steganography This article describes how attackers lets, away from the primary message.
is the practice of concealing hide and extract potentially sensitive • Digital – changing the order of items in
information within another message or data. I will start by covering a sample of an array, converting pictures into sound
physical object to avoid detection. the types of steganography before look- files, adding messages to areas of a file
Steganography can be used to hide ing at common ways of concealing infor- that are usually ignored or used by
virtually any type of digital content, mation online. One common technique metadata, creating deliberate errors in a
including text, image, video, or audio I’ll describe in this article requires two word processor’s document using the
content. That hidden data is then ex- message types: a container and a secret. tracking feature that reveal a message,
tracted at its destination” [1]. The container conceals the secret from concealing messages in images, hiding
This secretive process, which appar- interception and ideally even conceals its data in streamed and on-demand videos,
ently dates back to ancient Greece, ap- existence. altering executable files.
pears to have been named much later. • Social – changing shared file descrip-
The first recorded use of the term stegan- Weaving Yarn tors or titles, purposely misspelling
ography was in 1499 by Johannes Trithe- Steganography covers multiple media words to circumvent keyword filters in
mius in his Steganographia, “a treatise types, including network protocols. oppressive societies.
Photo by Wes Hicks on Unsplash
Now that I have covered some of the example doesn’t give you a good reason installed. You’ll learn that Steghide
theory, I’ll describe some examples. to think before you next blindly cut n’ can use the JPEG, BMP, WAV, and AU
paste from a website, it is likely nothing file formats for the cover file and
The Bad Guys will. As you can imagine, all kinds of ex- there are no restrictions on the format
Nefarious payloads can be disguised in- ecutable payloads could be delivered via of the secret data. Steghide can use
side files that are viewed as innocuous. such a method! audio and image files to conceal se-
You won’t be surprised to hear that cretive messages. Apparently, it is also
many different applicable files, includ- Steghide powerful enough to work with other
ing video, audio, and text documents, One very popular tool used by security re- file types, too, but I haven’t confirmed
can contain malicious data. In addition searchers and attackers alike is called this.
to these file types, a web page can also Steghide [4]. You can install Steghide on I’ll start with a screenshot from my
act as the container for delivering se- Ubuntu and other Debian derivatives with laptop’s background, showing the start
crets to those who know how to look of the Steghide help output (using
for them. $ apt update; U --help), as shown in Figure 2. I’ve called
One of my favorite examples is de- apt install -y steghide the screenshot secret_inside.jpg after
scribed at the Life Plus Linux Blogspot quickly converting the format to JPEG
site [3]. The example provides an excel- Run the command man steghide to from PNG using the GNU Image Manipu-
lent reason to be extremely cautious study the manual once the package is lation Program (GIMP) package [5].
about what you copy-and-paste from
web pages. The page presents the Linux
command ls -lat, which serves up a
directory listing, including hidden files,
along with ownership and permissions
for each file. But pay attention to the sur-
reptitious whitespace before the hyphen
in the command.
The text for the payload is colored
white (as is the background of the web
page) so it is perfectly hidden from an
unsuspecting user. If you look at how
the CSS (Cascading Style Sheet) is con-
structed, it is configured to use this
setting:
Stegosuite
You can install the popular Stegosuite [7]
with the following command:
"secret_inside.jpg":
format: jpeg
capacity: 34.1 KB
$ stegosuite -c error_bar.png
Capacity: 2.8 KB
"hidden_dir.zip"
three small text
files (with what Notice the warning in the output stating
adding: hidden_dir/1.txt (deflated 16%)
might be a secret that there’s an unusual 1,743 bytes
adding: hidden_dir/2.txt (deflated 16%) code inside each) somewhere in normal.png. To avoid loose
adding: hidden_dir/3.txt (deflated 16%) and then saved ends, look at this directory listing, which
them inside the shows precisely where that amount of
hidden_dir/ direc- data came from:
$ cat blurry_secret.png hidden_dir.zip > normal.png # This
tory, as so:
creates the file "normal.png"
$ ls -al blurry_secret.png
Data
Retention
To see when clients are joining and leaving the
wireless network, Mike Schilli writes a command-line
utility that uses an object-relational mapping interface
to store metrics in SQLite to later display historical
data. By Mike Schilli
“W
hat I don’t know won’t included with every good Linux
hurt me,” as the saying distribution and knocks on the
goes, but the reverse door of all potentially usable IP needs to run as root. This is annoying
is true for my wireless addresses in a subnet to see if a host in two ways: First, you have to use
network. What are all my household gad- responds. On a typical 192.168.0.0/24 sudo to call any programs wrapped
gets doing? After all, no newly released de- subnet of a router for home network around it, which means entering the
vice seems to be able to manage without a use, you can use 255 IP addresses, and root password in a shell session, at
wireless network connection nowadays. nmap scans them with a barrage of least for the first call. Second, this
Or are there actually some devices that I probes at lightning speed (Figure 1). opens up attack vectors; after all, who
don’t even know about? This definitely knows whether a complex Go program
worries me and keeps me tossing and Better Safe than Sorry with all kinds of features is pro-
turning in my sleep. For nmap to be able to discover details grammed to be 100-percent watertight
On top of that, I am interested in more such as the MAC addresses of the de- or whether it offers a loophole for
than the current situation. Curious by na- vices found on the wireless network, it attackers?
ture, I would like to know how long a de-
vice, once discovered, has been operating
on the network, when it joined the net-
work, and whether it is permanently ac-
tive or occasionally lets its assigned IP ad-
dress lease expire and then picks up a
new one later. Let’s build a data logger in
Go to find out.
To detect active devices on the wire-
less network, it makes sense to call up
the nmap scanner. This hacking tool is
Author
Lead Image © Sergey Nivens, 123RF.com
02 02
03 import ( 03 import (
04 "bufio"
04 "fmt"
05 "fmt"
05 "os/exec"
06 "io"
06 )
07 "os/exec"
07
08 "regexp"
08 const subnet = "192.168.0.0/24" 09 "time"
09 10 )
10 func main() { 11
attempts to examine its content with two later in Listing 4), and sends it up to the relational database for the measured
regular expressions: ipRegex for the octets output channel (outCh), where the caller datapoints. The first table, named
of IPv4 addresses and macRegex for the picks up the incoming objects for process- probes, contains the IP addresses with
hex values of MAC addresses. nmap deliv- ing them downstream. timestamps along with references to en-
ers these values in consecutive lines. In tries in the devices device table, where
line 49, the simple state machine checks Object-Oriented Database the MAC addresses and product names
whether the two values are present, pop- Two tables in SQLite (see Figure 2) are of the wireless network devices are
ulates the probe type structure (defined the obvious choice as the schema for the stored. This means that probes does not
have to repeatedly duplicate the recur-
ring data in the main table.
Now it wouldn’t be difficult to botch
up a schema with SQL commands and
insert new entries or query existing
ones. A join of the two tables turns two
into one, and the result would be both
Figure 2: Two SQLite tables function as the schema for the database the metric and device data for each
containing the metrics. measured value. Instead, I’ll try
Listing 4: gorm.go
01 package main 37
03 import ( 39 }
04 "gorm.io/driver/sqlite" 40
13 } 48 }
14 49
19 DeviceID uint 54 }
21 } 56 }
22 57
25 } 60 Select("min(rowid), *").
26 61 Group("IP, device_id")
31 } 67 if err != nil {
34 if err != nil { 70
36 } 72 }
Definitely Fast
The uniqueIndex tag of the MAC field in the
Device structure in line 11 stipulates that
the mac table column of the devices table
must contain unique values later. This
speeds up the search for devices that may
already be registered. Two hints are then
needed for gorm to link the two tables,
probes and devices, to allow the use of a
foreign key in SQLite later to reference a
device in devices from a row in probes.
Firstly, the Probe structure starting in line
15 is given a field of the type Device, and
secondly, the foreignKey:DeviceID tag stip-
ulates that the foreign key in probes must
be taken from the device_id column. The
conversion from uppercase to lowercase
and CamelCase to underscore takes place
automatically like in comparable ORMs.
These definitions alone enable the
ORM to create the required database ta-
bles with AutoMigrate() in line 33 and to
execute elegant object-oriented Create/
Read/Update/Delete (CRUD) functions
under the hood later. The .schema com-
mand in the SQLite shell in Figure 3
shows us that the SQLite engine has now
actually created the tables after the first
program run.
Objects to Tables
The Add() function starting in line 41
in Listing 4 adds a new datapoint to
Figure 3: The monitor metrics are stored in an SQLite database. the wifiwatch.db database. It expects a
discovered device’s IP address, its
To do this, the MAC and vendor name, and a time-
gorm library from stamp. Line 43 then uses Where() to
GitHub uses Go search for a potential device entry al-
structures such as ready existing in the devices table and
Device and Probe uses FirstOrCreate() to return a device
in Listing 4 and that has already been found or creates
examines their a new one. Armed with the device
tags for clues to entry, line 50 then creates a new struc-
how the individ- ture of the Probe type and calls Cre-
ual fields will ap- ate() in line 55 to inject it into the da-
pear in the data- tabase. All of this takes place quickly
base later. For ex- without using SQL directly.
Figure 4: The tree() function returns historical IP ample, the nu- The gorm package is not even fazed by
addresses of devices on the wireless network. meric field ID in more complicated queries. The Probes()
line 10 with function starting in line 58 is designed to
something different. Other languages `gorm: "primaryKey"` shows the map- return all datapoints for which the IP has
feature object-relational mappers per that the id column in the devices changed for a MAC address. This saves
(ORMs) that convert data structures table (automatically derived from the the display from having to deal with
into relational database models in more lowercase plural of the Device structure countless identical results later; although
or less elegant ways. To do this, the name) acts as the primary key. Later they exist in the database, they are irrele-
mappers run the required SQL com- on, the SQLite engine converts this vant because the IP address was exactly
mands under the hood without the user into an integer value that is automati- the same as the first time.
having to worry about them. Let’s see cally incremented for each new row Packing this into traditional SQL re-
what Go offers in this respect. that is inserted. quires the subquery starting in line 59,
which only returns the first match for a results from the join of both tables with Google router in first place, an intelligent
group of unique IPs for a device entry Find(&probes) later. Pure magic! remote control (Logitech) in second
using min(rowid) as a trick. Line 65 uses place, a surveillance camera (Smart In-
the virtual sub_probes table to nest this Tree on the Terminal novation) in third place, and the recently
subquery within the main query. The Based on the scan results stored in the introduced Ulanzi display [2] (listed
main query’s ORM interface has already database, the tree() function starting in under its network card brand Expressif)
called preload("Device") to join the line 9 of Listing 5 displays the historical in fourth place. The latter apparently
probes and devices tables up front. This activity on the wireless network as a tree refreshed its IP from *.22 to *.23 on
means that gorm only has to collect the in the terminal (Figure 4). You can see the 29.5.2024. Big brother is truly watching!
02 02
03 import ( 03 import (
04 "fmt" 04 "flag"
05 "github.com/gdamore/tcell/v2" 05 "time"
06 "github.com/rivo/tview" 06 )
07 ) 07
08 08 func main() {
09 func tree() {
09 update := flag.Bool("update", false, "update db")
10 db, err := NewDB()
10 flag.Parse()
11 if err != nil {
11
12 panic(err)
12 if *update {
13 }
13 updater()
14
14 return
15 root := tview.NewTreeNode("Wifiwatch v1.0").
15 }
SetColor(tcell.ColorRed)
16 tree()
16 tree := tview.NewTreeView().SetRoot(root).
SetCurrentNode(root) 17 }
17 oldMAC := "" 18
33 node.AddChild(n) 35 }
35 } 37 }()
36 38
40 } 41 }
41 } 42 }
C
ounting coins is a problem that a small ramp and pass several cut-out
was solved decades ago, but I slots. If the coin is the correct size, it
was wondering whether I could falls through the slot. The required
come up with a solution of my width of the slot depends on how fast
own. While I may not have the same set the coin is rolling past whereas the
of sophisticated tools that a parking meter height of the slot needs to be slightly
manufacturer has, it should certainly be larger than the actual coin while still
possible to create an electronic coin coun- being smaller than the next largest
ter using just a Raspberry Pi Pico and coin. In my case, the slots were ap-
some common components. Writing soft- proximately twice the width of the coin
ware that can count is trivial, but how do (see Figure 1).
you detect what type of coin was in-
serted? If you assume that only legal US Table 1: Diameters of US Coins
coins will be used, the easiest way to rec- Coin Metric Imperial
ognize them is by measuring their diame- Penny 19.05mm 0.75in
ter. Table 1 lists the diameters of US coins,
Nickel 21.21mm 0.835in
both in millimeters and in inches [1].
Dime 17.91mm 0.705in
I decided to sort the coins using dif-
ferent sized slots. The coins roll down Quarter 24.26mm 0.955in
Lead Image © Andrey Burmakin, 123RF.com
Figure 1: Each coin slot needs the right height and width so that coins
will fall through the correct slots.
Displaying Amounts
A coin counter is not very useful if it
cannot display the amount counted. To
output the values of the coins counted I
used a four-digit seven-segment display:
That is perfect for numbers as it can dis-
play up to four digits but it is also possi-
ble to add a decimal point to the right of
any of the digits.
The seven-segment display has this
name because it composes each digit of
Figure 2: Gravity will make coins roll down this ramp. seven individual lines (Figure 4, left)
each of which can be turned on or off.
It is not difficult to draw a small rect- slots, but it does not count them. Count- Those seven lines are enough to form
angle, but it is tricky to try and cut it out ing requires detecting when a coin falls the digits 0 through 9. If you accept a
with straight edges that accurately fol- through a slot. This can be done using a mixed usage of uppercase and lowercase
low the rectangle. Making a cardboard TCRT5000 module [2] which uses an in- characters, you can also show hexadeci-
prototype was no problem, but it took frared (IR) sensor to sense distance and mal digits A through F (Figure 4, right).
some more effort to cut the slots out of color. The module includes both an IR With clever usage, you can write simple
particleboard. transmitter and a receiver. It continu- words, such as CLOSE or PAUSE. These
The ramp that the coins roll down ously generates an infrared signal. When displays are common in consumer elec-
needs to be slightly tilted to one side an object is present, the signal reflects tronics such as microwaves and DVD
(see Figure 2). This tilt fulfills two func- and the IR receiver detects it. The value players. Some letters need a little creativ-
tions: First, it ensures that the coin will is read directly from the pin without ity, for example it is hard to show an
fall through when it reaches the correct needing to use either I2C or SPI. (See the “M” with only seven segments.
slot. Second, it creates friction that pre- “TCRT5000 Variations” box about two There are two common types of seven-
vents the coin from racing down the types of TCRT5000 chips.) segment display. The first one is a so-
ramp at full speed and overshooting the Each coin slot must be fitted with a phisticated I2C controlled module. Such
correct coin slot. The ramp has a 10 per- TCRT5000 module (Figure 3) and the a device supports the I2C protocol, a
cent slope, and the entire board is tilted main software loop will check each mod- small bit of memory, an address (by
10 percent. The only problem with this ule to see if it has detected a coin. The which it can be individually referenced),
ramp is that it should have had more TCRT5000 is a very simple device. Un- and quite often also a multiplexer chip
space above each of the coin slots. I had like other I2C devices, it requires no that controls the display. When you use
originally planned to have a small strip setup. Simply apply power and read the this kind of module you can simply pass
of wood across the top. However, be- data pin. The downside is that it has no the value you want to display to the
cause the board was not tall enough, it memory – it is a “dumb” device. The module with a specific address. Each
prevented quarters from fitting through. module needs to be polled to detect a display has its own address, so multiple
coin falling through the slot, and once it identical displays can be easily
Recognizing Coins has detected a coin, continuous polling controlled.
This particleboard structure can be used
to separate the coins into their individual
TCRT5000 Variations
During this project, I discovered that
there are two different types of the
TCRT5000 chip. I have used the module
with three pins: power, ground, and
data out. The three-pin module returns
1 when the object is detected and 0
when no object is detected.
There is also a four-pin module which
returns both an analog and a digital
value when an object is detected. The
four-pin module is often used in line-
following robots but can also be used
for collision detection.
Figure 3: A TCRT5000 module has been affixed below each coin slot.
14 dime_cnt = dime_cnt + 1 27 # i = i + 1
Listing 4: Updating the Seven-Segment with Totals into left and right digits of dollar and cent
01 # get each of the digits, display each one briefly,
amounts (lines 5-8 of Listing 4). For exam-
02 # do it 20 times.
ple, if total is 123 which corresponds to
$1.23, then I need to display 0, 1, 2, 3
03 def drawdigits(amount):
from left to right, and I set
04 # get amount digits, right to left
are falling through one of the coin slots. total via the seven- 07 # select the right draw_? function
The code is fairly repetitive, as each of segment display. It 08 draw_x = functlist[numberdig]
the four coins is processed in the same splits the total 09 draw_x()
way (lines 8-23). For example, when the amount counted so
10 time.sleep_ms(duration)
function detects a quarter (line 8), it will far (which is the
11 whichdigit.low()
enter an inner loop for further number of cents)
QQQ
MakerSpace
PiJuice HAT for battery-powered Pi Zero
Out in Space
The Raspberry Pi Zero is a frugal little computer. But without
a power socket, you might be surprised how quickly it can
drain a battery. Active power management is the order of
the day. By Bernhard Bablok
A
Raspberry Pi Zero (W) can reports it to the Pi. A monitoring pro-
require upwards of 100mA – gram can then shut down the computer
depending on what it is doing. in good time, which in turn protects the
This may not sound like much battery from deep discharge. In both ex-
at first, but given a standard industrial amples, there is also a requirement for
LiPo cell rated at 2,200mAh, that computer sophisticated charging management. In-
won’t even last a day. This makes it all the stead of replacing the battery, in the sec-
more important to use the battery’s energy ond case a solar panel typically re-
sparingly. HATs (Hardware Attached on charges the battery, while the UPS uses
Top) by PiJuice, which have been around the power grid for this task.
for some time, have the circuitry to help Finally, the HAT must also be able to
you do this. In this article, we take a look disconnect the Raspberry Pi from the
at the PiJuice Zero [1], a pHAT that is opti- power supply after shutdown, because
mized for the Raspberry Pi Zero (Figure 1). all Pis prior to the Pi 5 still consume far
too much power even after shutdown.
Use Cases Similarly, an automatic wake-up (which
But first, let’s take a brief look at poten- means reconnecting the battery) may be
tial application scenarios for a power
management HAT: A Raspberry Pi that
is connected to a power outlet but
needs to run continuously requires UPS
protection (UPS being an uninterruptible
power supply). If worst comes to worst,
the back-up battery can step in at light-
Lead Image © Anton Brand,123RF.com
necessary, for example, timer-controlled manufacturer’s original batteries; the even control the wake-up function via
at sunrise or when the battery is re- only source of supply we were able to the IO2 pin if required.
charged. A Pi that runs for one hour a find in the EU was Botland.de, a Polish
day instead of 24x7 will extend battery distributor. Fortunately, the thermistor is Software
life from less than one day to almost optional, and batteries without this pro- The basic functions such as UPS or bat-
three weeks. tection work just as well. Nevertheless, tery operation are completely autono-
protection is recommended for unmoni- mous, irrespective of whether you install
Setup and Commissioning tored long-term use. the additional software. However, the
Important information for a quick start Apart from this hurdle, commissioning software offers options that can turn out
can be found in the Quick Start Guide [2], the basic functionality is child’s play: Just to be essential, or simply more practical,
while a detailed description of the hard- connect the HAT to the Pi and the battery for many applications. A clean shutdown
ware and software is available from the to the HAT. If the Raspberry Pi is con- at the push of a button is just one of
manufacturer’s GitHub repository [3]. You nected to the mains, you can use its micro many features. For example, you can use
will need a suitable rechargeable battery USB socket and the matching socket on the software to configure the buttons if
for the pHAT; connect it to the matching the HAT. As an alternative to the USB you want to reduce the button hold time
socket on the right (with pins marked socket on the HAT, you can use the J4 for shutdown compared with the default.
VBAT, GND, and NTC; see Figure 1). The connection directly to the right of it: You The software is open source and avail-
pHAT supports batteries with a built-in can feed in up to 10V that way, which is able on GitHub [3]. You do not need to
thermistor. If the battery becomes too ideal for connecting solar panels. download and install it manually, be-
hot during charging, the HAT switches Pressing the SW1 button on the left- cause it is also included in the operating
off for safety reasons. hand side of the pHAT tells it to switch system’s standard package sources. The
However, protected batteries are not the power on. Pressing and holding it for packages you need are pijuice-base
necessarily easy to buy – of the usual 20 seconds triggers a hard power down. (which is required for headless opera-
suspects, only Conrad had them on offer The system shuts down after 10 seconds, tion) and pijuice-gui.
in my country. No one here sells the provided that you installed the appropri- The GUI app has been excellently in-
ate software. Con- tegrated into the desktop, and that in-
nection J5 for an cludes an area in the status bar (Fig-
additional button ure 2). The battery status is shown on
(called SW2 in the the left, and the icon to the right
software) is lo- launches the GUI. The user interface it-
cated slightly self is made up of a series of tabs, each
lower down. of which configures different aspects.
The P3 header As an example, Figure 3 shows wake-up
also plays an in- time configuration. But be careful:
teresting role. You Times must be configured in UTC.
Figure 2: The PiJuice GUI application adds icons to could connect In headless mode, you can use a termi-
the desktop’s status bar. your own micro- nal-based, menu-driven configuration
controller here, or program (Figure 4). But there is not much
even just a sensor cause for you to rely on this, because you
that can commu- can choose either a Python module for in-
nicate with the tegration with your own programs or a
chip on the HAT command-line tool for querying and
via the two IO1/ changing important values. Alternatively,
IO2 pins. A micro- you can create a configuration on a Pi
controller could with a desktop, save it to a file, and then
Figure 3: In the GUI configuration program, you can Figure 4: A terminal-based configuration tool lets
define wake-up times, for example. you use headless Pis, too.
load it on the headless computer. The which matches the data from the docu- With all these HATs and breakouts on
command line helps you with handling mentation. The only problem was cur- offer, you will definitely want to take a
the last two steps. All of this is exemplary rent peaks that cause a sudden voltage look at the software before you buy. This
and leaves nothing to be desired. drop – the HAT was unable to absorb is what separates the wheat from the
Although the manufacturer has thought them via the LiPo cell. In other words, chaff, and the best HAT is ultimately of no
of everything, the software falls short of the PiJuice cannot work miracles. use to you if the software does not support
perfection. This is partly due to the nature As expected, a circuit board with so your specific use case. Q Q Q
of the matter: The hardware is complex many components is not cheap. The
and has many functions. It is not always pHAT comes at £30 / $38 (plus VAT). Info
possible to reflect this consistently in the There is also a larger HAT for regular [1] PiJuice Zero pHAT: https://uk.
software. While there is a detailed descrip- Raspberry Pis that will set you back £70 / pi-supply.com/products/pijuice-zero
tion of each setting, it is not always clear $90 (plus VAT) [4]. It comes with a bat- [2] Quick Start Guide:
what exactly it will do. But this is nit- tery which puts the price difference into https://learn.pi-supply.com/make/
picking, considering the fact that other perspective. You should also consider pijuice-zero-quick-start-guide/
hardware manufacturers often leave delivery charges. But price alone is not [3] GitHub repository:
users out in the cold without any docu- the decisive factor – having a working https://github.com/PiSupply/PiJuice
mentation. I would recommend planning overall system consisting of hardware, [4] PiJuice HAT: https://robosavvy.co.uk/
some time for the configuration work and software, and additional components is pijuice-hat-raspberry-pi-portable-
extensive testing of your use case. more important. The manufacturer not power-platform.html
only sells its HATs, but also matching
Test Run and Conclusion batteries and solar panels. Even if you go Author
The pHAT completed a small trial run for a complete system, the price is still Bernhard Bablok retired from Allianz
with power cuts, time-controlled wake- likely to be south of £150 or $200. Technology SE as an SAP HR developer.
up, and charging of the LiPo cell without If you only need a subset of the func- When he is not listening to music, riding
any problems. The current consumption tions, you can shop around for cheaper al- his bike, or walking, he focuses on Linux,
from the battery when switched off and ternatives. There is a whole range of UPS programming, and small computers. You
without USB was approximately 0.5mA, and RTC HATs with wake-up function. can reach him on [email protected].
INTRODUCTION LINUX VOICE
TCPFQOGTTQTUUWEJCUCOKURNCEGFDKVVJKU
CPEKGPVVQQNEQWNFUVKNNDGQHUGTXKEG
FOSSPicks 82
Nate Drake
6JKUOQPVJ0CVGNQQMUCV6JG$CVVNGHQT
9GUPQVJ9KPG-G[RWPEJ(QNKQ.KDTG1HƒEG
<GFCPFOQTGБ
Tutorial – Map Machine and OpenStreetMap 88
Marco Fioretti
7UG/CR/CEJKPGŨUKEQPUVQOCMGVJGOQUV
QH1RGP5VTGGV/CRFCVCCPFUJQYCUOCP[
OCRHGCVWTGUCURQUUKDNG
MADDOG’S
Jon “maddog” Hall is an author,
educator, computer scientist,
and free software pioneer
who has been a passionate
DOGHOUSE
With all the benefits of high-level languages, there’s still good value in
advocate for Linux since 1994
when he first met Linus Torvalds learning assembly- and machine-level languages today. BY JON “MADDOG” HALL
and facilitated the port of
Linux to a 64-bit system. He
serves as president of Linux
International®. Language Skills
ast month I talked about low-level assembly and ma- A rule of thumb in the early days was that a good assembly
Switchboard
Netcat is the Swiss Army knife of networking for admins. Socat takes
this principle one step further, offering multiplexing, TLS-secured
channels, pipes, Unix sockets, and executables. BY THOMAS REUß
etcat is undoubtedly a useful tool for On node A, then use tar to pipe the files in ques-
Listing 4: Bind Shell with Netcat Listing 5: Bind Shell with Socat
1 tre@raspi02:~$ nc -lvp 9876 | /bin/bash 1 tre@raspi02:~$ socat -d -d TCP4-LISTEN:9876 EXEC:/bin/bash
2 -sha256 -days 3650 -nodes -keyout raspi01.key -out raspi01.crt -subj "/CN=raspi01" -addext "subjectAltName=DNS:raspi01"
really only presented familiar techniques. But we to it on the host using Telnet, but from any other
are well away from the end of the line, because node on the network. Instead, you can use the
Socat can do far more. command from line 1 of Listing 8 to tell Socat
to launch a TLS listener on port 9988 itself and
Encrypted connect the legacy application as the target.
If you want to use ad hoc connections on untrusted You can then use Socat on node B (line 2) to
networks, it makes sense to use encryption. This is send the standard input to node A through the
where Socat’s OpenSSL capabilities come into play. TLS tunnel.
As a prerequisite for an encrypted connection, you
will need a TLS certificate, although it can be self- Conclusions
signed. In the constellations discussed here, the Socat is an extremely powerful tool that clearly
certificate is only used for encryption and data in- outstrips the old Netcat. The features men-
tegrity. Authenticity cannot be guaranteed, because tioned here only shed light on a small selection
there is no authentication mechanism. If you are of the tool’s capabilities. In addition to TCP, file
setting up bind shells or reverse shells that can be descriptors such as STDIN and STDOUT and
accessed off the Internet, you must be prepared OpenSSL sockets and files can be used as ad-
for potentially unwanted visitors. dress types, but Socat also supports raw inter-
To open an OpenSSL connection, you first faces, pipes, or pseudo terminals (PTYs). The
need to create the certificate (Listing 7, line 1). possibilities opened up by Socat are far too
Then launch Socat on raspi01 in OPENSSL mode diverse to list here. It is therefore definitely well
with a reverse shell (line 2) and dock to this shell worth perusing the tool’s man page [3] in more
on raspi02 (last line, Figure 4). detail. Q Q Q
QQQ
Check It!
cksfv and the CRC32 algorithm can’t compete with modern methods as a way to
look for intruders, but if you’re just checking for random errors such as a
misplaced bit, this ancient tool could still be of service. BY DANIEL LASALLE
yclical Redundancy Checks have been with other systems.” The fact that md5sum [3]
CRC32 checksum value. To validate a file against Listing 1: Creating CRC32 Checksums
a previously stored checksum, use the -f switch $ ls
followed by the SFV file that contains the stored -rw-rw-r-- 1 dls dls 36 Aug 14 10:25 1.txt
checksum: -rw-rw-r-- 1 dls dls 648 Aug 14 10:26 2.txt
lowed by the path to the SFV file (Listing 3). 1.txt D5AD97E0
In the event that several SFV files share the 2.txt 74FF6F6A
work through them by adding -r, however, you $ cksfv *.txt > cksfv.txt
with the parent path (Listing 4). The -C switch -rw-rw-r-- 1 dls dls 36 Aug 14 10:25 1.txt
changes the working directory to wherever the -rw-rw-r-- 1 dls dls 648 Aug 14 10:26 2.txt
-rw-rw-r-- 1 dls dls 21 Aug 14 10:39 2.txt ; Generated by cksfv v1.3.15 on 2024-08-14 at 10:41.08
drwxrwxr-x 2 dls dls 4096 Aug 14 10:39 3 ; Project web site: https://gitlab.com/heikkiorsila/cksfv
1.txt D5AD97E0 $
cksfv.rs
Listing 3: Validating Files cksfv.rs [6], created by Martin Larralde [7], is a new
$ pwd
version of cksfv written in Rust. The project’s GitHub
/var/log
page claims that cksfv.rs is “A 10x faster drop-in re-
$ cksfv -g /home/dls/Documents/CV/cvlist.sfv
implementation of cksfv using Rust and the crc-
--( Verifying: /home/dls/Documents/CV/cvlist.sfv )-----------------------
32fast crate.” The other positive thing about this port
CV_3-7.odt OK
is that it can be installed at the user level via Rust’s
CV_5-0.odt OK
Cargo package manager instead of the usual re-
CV_5-1.odt OK
quired sudo access to apt.
CV_5-2.odt OK
I ran a comparison test on a 40GB file. Using
CV_5-3.odt OK
cksfv, the creation time was 2m13s and the
CV_5-4.odt OK
checking took 1m47s. On the other hand, execut-
CV_6-0.odt OK
ing the same steps using the original implementa-
CV_6-1.odt OK
tion took 1m12s for creation and 1m14s for
CV_6-2.odt OK
validation.
CV_6-3.odt OK
------------------------------------------------------------------------
Conclusion
Everything OK
The SFV format has been kicking it strong for
$
well over 2 decades, and it is still relevant today
in some limited contexts. Don’t try to use cksfv
Listing 4: Changing paths for cybercrime protection or other security is-
$ cksfv -C ./Documents -rq sues, but if you’re looking for data errors caused
cksfv: CV_5-3.odt: Has a different CRC
by software bugs, data transmission, or file copy,
cksfv: CV_6-3.odt: Has a different CRC
or if you are interacting with legacy tools that re-
List of sfv files with broken files (or broken sfv files):
quire CRC32 checksums, cksfv is still an avail-
/home/dls/Documents/CV/cvlist.sfv
able option for Linux users. Q Q Q
$
Info
Listing 5: Specifying Files [1] Wikipedia on Simple File Verification:
$ cksfv -f cvlist.sfv CV_3-7.odt CV_6-0.odt https://en.wikipedia.org/wiki/Simple_file_veri-
--( Verifying: cvlist.sfv )--------------------------------------------- fication
CV_3-7.odt OK
[2] cksfv ChangeLog:
CV_6-0.odt OK
https://gitlab.com/heikkiorsila/cksfv/-/blob/
------------------------------------------------------------------------
master/ChangeLog
Everything OK
$
[3] Forging SSL Certificates:
https://www.schneier.com/blog/archives/
2008/12/forging_ssl_cer.html
[4] NIST Retires SHA-1 Crytographic Algorithm:
https://www.nist.gov/news-events/news/
2022/12/nist-retires-sha-1-cryptographic-
algorithm
[5] cksfv Binary: https://zakalwe.fi/~shd/foss/cksfv/
[6] cksfv.rs: https://github.com/althonos/cksfv.rs
[7] Martin Larralde, “Althonos”:
https://github.com/althonos
The Author
Daniel LaSalle was introduced to the
command prompt while in 5th grade, but
his addiction to technology spans over 30
years. In the past decade he’s been using
Linux every day and freelancing as an
infrastructure specialist. https://www.
linkedin.com/in/daniellasalle/
Figure 1: cksfv command-line options.
Compatibility layer
Wine
his July, Wine celebrated data structures in shared mem-
D&D lexicon
Libellus
hy don’t dragons eat encompasses both Linux users
W paladins? Because
they taste lawful! This
Dungeons & Dragons dad joke
and D&D players, on first launch
it’s clear that the developer has
put a lot of effort into making the
heralded my one and only entry world of D&D easy to navigate.
into the world of D&D in 1996. The main window contains a
The funny part (if it can be called comprehensive list, topped by Libellus is a one-stop
that) centers on the “Alignment” the main classes of players such lexicon for all things Black Dragon.” Each page con-
attribute of various heroes and as Bard, Druid, and Warlock. You D&D such as classes, tains a comprehensive “Actions”
monsters in the D&D universe, can click on any of these to view races, spells, magic section, which is where I discov-
which includes terms such as their attributes such as skills and Items, and equipment – ered that said dragon spews acid
“Lawful Good” and “Chaotic Evil.” starting equipment, which are including stats for the in a 60 foot line, melting anything
If, like me, you find such terms neatly laid out and sometimes “Adult Black Dragon.” in its path. Overall, Libellus is a
and attributes bewildering it may even accompanied by a helpful il- niche product. Still, if you are a
be time to install Michael Ham- lustration. Libellus uses tabbed budding Dungeon Master plan-
mer’s Libellus, currently available browsing, so it’s very simple to ning a campaign you can do
via Flathub. The program acts as scroll through multiple creatures worse than having an easily
a virtual database of all classes, and equipment at the same time. searchable lexicon of every per-
races, spells, magic items, equip- You can also bookmark pages son, creature ,and item players
ment, and monsters to be found for later reading, as well as use can encounter.
in D&D 5th Edition. Assuming the search bar to find a specific
you fall into the center of the item. I did this to display some Project Website
Venn diagram that truly terrifying stats for the “Adult https://libellus.hummdudel.de/
Typing tutor
Keypunch
oyal Linux Magazine read- 30 seconds the program displays
System installer
Calamares
hen it comes to Linux also highly configurable through
Launch calendar
Space Launch
f you have yet to boldly go “TBD,” such as a rocket due to
Markdown editor
Folio
his self-described WYSIWYG Markdown rendering.”
T “beautiful Markdown
note-taking app” is a
fork of another Markdown edi-
This was largely borne out when
I created my first note. In the first
place, any text you highlight can
tor Paper, which is no longer in be automatically converted to
active development. Folio is “plain” or one of various heading Folio lives up to its description as an elegant WYSIWYG Markdown
written in Vala and is available styles using the drop-down text editor, with easily searchable notes saved in .md format.
in a variety of formats including menu at the bottom left. The bot-
Flatpak, Snap, or AppImage. tom pane also contains buttons commands such as block quotes. This is largely
After installing the Snap ver- for further text editing including unnecessary, though, because the WYSIWYG ed-
sion, I was impressed to see bold, italics, strikethrough, and itor lives up to its claims. By default notes are
that Folio’s simplistic interface highlighting. Other buttons are saved in Markdown (.md) format and can be lo-
encourages users to create a devoted to inserting hyperlinks, cated using the Gnome search bar.
virtual notebook with a custom programming code, and even a The Preferences pane includes options for
name and color. You can also horizontal rule. changing both the Note and Monospace fonts.
choose how it will appear in the If you need more exotic Mark- From there you can also display line numbers, as
sidebar of the main window. down features but can’t quite re- well as display a three-pane layout that expands
You can have the app show just member how to format text, you the notebook lists to include the full notebook
the first few title characters, or can also click the info button at names. The Files section also lets you change
you can use initials (e.g., “Code the bottom right. From here you the note storage location.
Book” becomes “CB”). can scroll through Folio’s “cheat-
The project GitHub page de- sheet” of common Markdown Project Website
scribes Folio as “Almost commands as well as less used https://github.com/toolstack/Folio
Office suite
LibreOffice
he LibreOffice suite has
Writer comes with a number of upgrades, including a more intuitive Navigator and support for Project Website
different comment text styles. https://www.libreoffice.org/
Video player
Celluloid
his popular graphical isn’t moving. Eager to test this is
Code editor
Zed
ack in June 2022, GitHub If you choose to do so, you’ll
OpenStreetMap Maximized
Use Map Machine’s icons to make the most of OpenStreetMap data and show as
many map features as possible.
BY MARCO FIORETTI penStreetMap (OSM) [1] is an open source Machine to create small digital maps that you can
Vector tiles, instead, are raw geographic data them. You can also use just the first function to
that must still be rendered, but have the great generate an ordinary digital image of a static map.
advantage of yielding the maximum resolution at Internally, the renderer is a Python application built
any desired size. This happens because, unlike on two important open source projects called cairo
raster images, which are bundles of predefined [4] and GEOS [5]. Cairo is a multiplatform 2D-graph-
pixels, vector images are (to simplify) sequences ics library designed to produce PostScript, PDF, and
of instructions to draw all the parts of an image. SVG images, or to display them consistently on all
A vector image can be thought of as a recipe con- output media. GEOS is the “Geometry Engine, Open
taining commands such as “draw a red line from Source” C/C++ library of algorithms used in geo-
the top left corner to the bottom right one” or graphic information systems (GIS) software.
“draw a blue solid circle in the image center, with
diameter equal to one third of the available Installing and Using Map Machine
space.” By their very nature, those instructions To use Map Machine, you must first install the de-
will work without any degradation to the image veloper versions of the libcairo2 and libgeos librar-
no matter how big the output device is (screen or ies, and then the actual map-machine Python mod-
paper, it’s the same). A common vector graphic ule. On Ubuntu and other Debian-derived distribu-
format is Scalable Vector Graphics (SVG). tions, you can do so with these two commands:
In practice, digital maps can be made of both
kinds of tile images, but only the vector tiles will sudo apt install libcairo2-dev libgeos-dev
never lose resolution. You can easily see what I pip install git+https://github.com/enzet/U
and any other graphic elements, from shape of ar- 48.860,2.290,48.865 --output figures/U
two numbers passed to --boundary-box are the rendering, drawing all the roads (ways) and specific
longitude and latitude of the southwest corner of features (nodes), from intersections to monuments
the area of interest, and the last two the same co- or single shops. Of course, in the process it also
ordinates for its northeast corner. adds all the Röntgen icons that are needed.
Please note that I said southwest and northeast Running map-machine as in Listing 1 will create
only to highlight a trap you may fall into. Those a cache directory for OSM data in the same di-
terms would not be valid for every place on Earth. rectory where you ran it. That folder stores all
In general, those four numbers must represent, in the raw OSM data you may need for future
this order, the minimum longitude, minimum lati- maps of the same area, in the XML format of
tude, maximum longitude, and maximum latitude Listing 2.
of the area to map. Figuring out why and how, for The XML file, with extension .osm, is named
example, the first two numbers would be the after the coordinates of the area it contains:
“southwest corner” of a map of France but not of, with the same parameters passed to --bound-
say, Argentina, is left as an exercise for the reader. ary-box. Listing 2 is just a very short excerpt of
You can easily see the point of using Map Ma- the actual file that contained more than 1,900
chine by comparing Figure 2 with Figure 3, which tags (i.e., single elements to be placed on the
shows the same area in the OpenStreetMap web- map)! The tags can include links to images or
site with the default rendering. Colors aside, there the Wikipedia description of a place (the Chail-
are many more icons that allow the user to iden- lot and Place José Marti locations), as well as
tify different kinds of places and services. specific infrastructures (such as “traffic sig-
Listing 1 shows an excerpt of the actual textual nals”). It is by looking at those tags that Map
output of Map Machine, but it’s enough to summa- Machine discovers which icons it should add to
rize how this tool actually works. First (with the INFO the map and in which positions.
Getting line), it downloads all the raw data for the The behavior of Map Machine is configurable in
requested area from the central OSM database several ways. For convenience, you may define
using the Application Programming Interfaces any folder to be the cache by passing its absolute
(APIs) developed just for these purposes. Once it path with the -cache option. Similarly, you can set
has that data, Map Machine performs the actual the zoom level (-z, default 18.0) or the size in pix-
els (-s) of the final image.
Listing 1: Map Machine Output
#> map-machine render --boundary-box 2.284,48.860,2.290,48.865 --output
Finding the Right Coordinates
figures/esplanade_du_trocadéro.svg At least for generating static, single-image
INFO Getting https://api.openstreetmap.org/api/0.6/map... maps, Map Machine is simple enough to use
INFO Constructing ways... that the main problem for novices may very well
INFO Constructing nodes...
be how to determine which coordinates they
should give it to map just the area they want.
INFO Drawing [stuff]...
Luckily, finding those numbers is quite easy
INFO Writing output SVG to figures/esplanade_du_trocadéro.svg...
with both OSM and Google Maps. On the OSM
Figure 2: What Map Machine maps look like. Figure 3: The same area of Figure 2, with standard OSM rendering.
Figure 5: The Google Maps way to show the coordinates of any point.
Figure 4: The “Where is this” string in the search box of OSM gives you the Figure 6: A map centered around the Pantheon monument in Rome,
coordinates of any point you select. created without explicitly specifying its corners.
run. If you tried, you would get error messages part of the PNG tiles generated for zoom level 18.
similar to this: Figure 8, in which I renamed four of the same tiles
just to make my file manager arrange them in the
Cannot download data: too many nodes U right order, shows how they are indeed parts of
(limit is 50000). Try to request smaller area. one continuous map, without gaps.
Tile generation can be customized with several
Tile creation and serving are separate activities options, the most interesting ones being --mode
that one instance of Map Machine cannot do at and --buildings. --mode allows you to set other
the same time: This software can only serve tiles drawing styles besides the default one, normal,
that were prepared before it was launched. To which is used in this tutorial. --buildings sets
create the tiles of a certain area – which in all the the drawing mode of buildings, which may be,
examples that follow is the part of downtown for example, none or flat.
Rome right around the Pantheon – you should
launch Map Machine in tile mode: The Map Machine Tile Server
Once you have made Map Machine generate all the
map-machine tile -b 12.4772,41.8982,U tiles for a certain area, for all the zoom levels you
12.4779,41.8999 -z 16-20 need, you can use Map Machine to serve those tiles
to any web page in which you want to embed a
This command shows the compact version (-b) of slippy map of the same area – a map that viewers
the --boundary-box option to define the map bound- of your page may drag around and zoom in or out
aries, and a new but predictable use of the zoom just as they would on OSM or Google Maps.
(-z) option: To make a map actually zoomable, you On the server side, you just have to launch Map
must provide one full set of tiles for every zoom Machine in server mode:
level you want. With the command above, Map
Machine will therefore create five different sets of map-machine tile -b 12.4755,41.8970,U
tiles, one for every zoom level from 16 to 20. Had 12.478,41.8997 -z 16-20
I wanted only the 16, 19, and 20 zoom levels, I map-machine server --port 8081 --cache $CACHE
browser at the address 127.0.0.1:8081 (replace the Leaflet library (the capital L in L.map('map')), that
8081 with whatever port number you chose to is centered on the point of latitude 41.8994, longi-
bind Map Machine to). tude 12.4770, indicated by the arrow in Figure 9, with
As easy as it is, what I just explained is just the initial zoom level 18. The geographical coordinates
server side of making slippy maps with Map Ma- should correspond, more or less, to the center of the
chine, and it’s hardly useful without a browser area for which you previously built the tiles.
that, executing the instructions it finds on a prop- Right after that declaration, the tiles constant
erly written web page, connects to that server, specifies where to ask for the tiles that are needed
fetches all the tiles, and then draws the map with to draw the map. That must obviously be the IP ad-
them in its own window. dress and port number of the Map Machine server,
To build a web page with those properties, take which will be http://127.0.0.1:8081 if, as in the exam-
inspiration from Listing 3. That is the full web page ple, the server runs on the same computer as the
loaded in Firefox in Figure 9, which as you can see browser. If that is not the case, you must substitute
has, besides the Map Machine notice in the bot- the numeric IP address with the correct one, or the
tom-right corner, two buttons on the opposite cor- corresponding domain name (e.g., http://example.
ner to zoom in or out. com/mymaps/). The part after the port number is
That page’s source code is a mix of the example just Map Machine’s already mentioned folder hier-
on the Map Machine home page, which for some archy: tiles/tile_<zoom level>_<x>_<y>.
reason didn’t work at the time of writing, embedded The other parameters passed to the script are
in another demo page, namely the one from the the attribution, which is written together with the
“Quick Start Guide” of the Leaflet JavaScript library Leaflet parameter to the bottom of the map, and
for mobile-friendly interactive maps [7]. The the tile size and zoom offset. The final .addTo(map)
stylesheet and script src are the source links in statement is what tells the browser to actually put
the head section that tell any browser that loads the tiles downloaded from the Map Machine
that page to download the Leaflet code and CSS server into the map.
stylesheet that will be used to manage the tiles. If you click on the plus and minus buttons in the
The lines between the <style> and </style> tags top-left corner, your browser will fetch from the
set the margins for the whole page and for the sec- server the corresponding set of tiles and redraw
tion (the leaflet-container) that will include the the whole map. If there are not enough tiles to fill
map and state that the container should occupy the window with a certain zoom level you will get
the whole page (100% height and width). something similar to Figure 10. Figure 10 shows
The body of the page only contains two ele- the same map shown in Figure 9 zoomed out to
ments: a header (“Map Machine test for Linux level 16, with the arrow indicating to the same
Magazine”) and the HTML division called map that point in Figure 9 to give you an idea of how two
includes, of course, the map. What happens inside levels of zoom change the picture. If you want to
it is much simpler than it may seem at first sight. avoid the empty zones shown in Figure 10, you
In fact, that division contains just a small JavaS- must generate more tiles with successive runs of
cript script that declares a map object as defined in Map Machine.
Figure 9: There it is! A fully working slippy map [6], courtesy of Map Figure 10: At the minimum zoom level, the map will not fit the whole win-
Machine! dow, but it will still work.
Finally, Figure 11 shows what you get when images, the maps at all levels are slippy; you can
zooming in as much as the available tiles would drag them around to center them on a particular
allow. Even if it’s not possible to show it with static location or to see whatever could not fit in the
browser window. Also, please note how, as the
zoom level increases, the map remains sharp, be-
cause it uses the right tiles for that level, rather
than enlarging other tiles.
Conclusions
There are other ways to embed parts of Open-
StreetMap in any web page. In the past, for ex-
ample, I have used uMap [8] with great satisfac-
tion, because it’s very intuitive and doesn’t re-
quire you to install anything. Map Machine, how-
ever, is simple to install and use, carries along a
great library of icons, and you can always use it
with the greatest possible speed, regardless of
your Internet connection. Once you have gener-
ated the tiles, in fact, nothing prevents you from
Figure 11: Zooming in, the resolution does not change. downloading the Leaflet script and CSS files
from their website and changing ac-
cordingly their links in Listing 3. If you
Listing 3: The Simplest Map Machine-Compatible Web Page You Can Write
do that, the entire map generation
<!DOCTYPE html>
<html lang="en"> process – from tile rendering to tile
<head> serving and displaying – will run en-
<base target="_top">
tirely inside your computer, even with-
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
out any access to the Internet, always
<title>Testing Map Machine</title> as fast as your processor can run.
<link rel="shortcut icon" type="image/x-icon" href="docs/images/favicon.ico" /> Not bad, isn’t it? Q Q Q
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css"
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/>
<script src="https://unpkg.com/[email protected]/dist/leaflet.js" Info
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin="">
</script> [1] OpenStreetMap:
<style> https://openstreetmap.org
html, body {
height: 100%; [2] Map Machine: https://github.com/
margin: 0; enzet/map-machine
}
.leaflet-container {
[3] JOSM map editor:
height: 400px; https://josm.openstreetmap.de/
width: 600px;
[4] cairo graphic library:
max-width: 100%;
max-height: 100%; www.cairographics.org/
} [5] GEOS: https://libgeos.org/
</style>
</head> [6] Slippy maps: https://wiki.
<body> openstreetmap.org/wiki/Slippy_map
<h4>Map Machine test for Linux Magazine</h4> [7] Leaflet: https://leafletjs.com/
[8] uMap:
<div id="map" style="width: 600px; height: 400px;"></div>
<script>
https://umap.openstreetmap.fr/en/
const map = L.map('map').setView([41.8994, 12.4770], 18);
const tiles = L.tileLayer('http://127.0.0.1:8081/tiles/{z}/{x}/{y}', {
maxZoom: 20,
The Author
attribution: 'Map data © ' +
Marco Fioretti (https://mfioretti.
'<a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> ' +
'contributors, imagery © ' +
com) is a freelance author, trainer,
'<a href="https:/github.com/enzet/map-machine">Map Machine</a>', and researcher based in Rome, Italy,
id: 'map_machine', who has been working with free/
tileSize: 256, open source software since 1995,
zoomOffset: 0 and on open digital standards since
}).addTo(map);
2005. Marco also is a board mem-
</script>
</body>
ber of the Free Knowledge Institute
</html>Lupicatae voluptatio ium qui inient doluptam as exped que odit peliquiam soluptia (http://freeknowledge.eu).
NEWSSTAND https://bit.ly/Linux-Magazine-catalog
Linux Magazine is your guide to the world of Linux. Monthly issues are packed with advanced technical
articles and tutorials you won't find anywhere else. Explore our full catalog of back issues for specific
topics or to complete your collection.
#286/September 2024
Git Ready
The Git version control system is an integral part of the Linux environment. If you’re looking
for a better foundation in Git, or if you already know the basics and are ready to start building
Git into your own custom apps, we’ll make you Git ready.
On the DVD: openSUSE Leap 15.6 and Tails 6.4
#285/August 2024
Kernel Expoilts
Is Linux secure? Only if you keep up with the patches. This month we take a close look at how
intruders attack unsafe versions of the Linux kernel through known and well-publicized exploits.
We’ll show you how to set up your own out-of-date kernel to practice on, and we’ll introduce
you to some of the tools and techniques attackers use to gain root access.
On the DVD: AlmaLinux 9.4 Boot DVD and Fedora Workstation 40 Live
#284/July 2024
Laptop Security
In the scary world of the Internet, “more secure than Windows” still isn’t secure enough. If
you want to keep your traveling systems safe from the clutches of the espionage economy,
you’ll need some extra help. We show you how to outfit your laptop with the extra defenses
you’ll need for life on the road.
On the DVD: Ubuntu Budgie 24.04 LTS and Rescuezilla 2.5
#283/June 2024
AI Tools
Everyone is fascinated with AI right now, but at the end of all the articles and interviews and
research, it is fair to ask, what can I do with it really? This month we highlight some AI-based
tools that will help you build your own chatbot, sharpen photo images, and more.
On the DVD: Nobara 39 and Manjaro 23.14 Gnome
#282/May 2024
D-Bus
The D-Bus architecture creates a powerful channel for applications to communicate. A
deeper understanding of D-Bus will help you with troubleshooting. Also, if you know how
D-Bus works, you can customize the interaction of audio tools, text editors, and other apps
to save time and simplify your life.
On the DVD: Kubuntu 23.10 and Clonezilla Live 3.1.2-9
#281/April 2024
Virtual Memory
The classic vision of random access memory is just the beginning of the story. Modern hardware –
and modern operating systems – manage memory in ways that old-school programmers could
only have imagined. This month we take a look at virtual memory in Linux.
On the DVD: elementary OS 7.1 and Mageia 9
FEATURED EVENTS
Users, developers, and vendors meet at Linux events around the world.
We at Linux Magazine are proud to sponsor the Featured Events shown here.
For other events near you, check our extensive events calendar online at
https://www.linux-magazine.com/events.
If you know of another Linux event you would like us to add to our calendar,
please send a message with all the details to [email protected].
Events
MSP GLOBAL Oct 9-10 Barcelona, Spain https://mspglobal.com/
All Things Open 2024 Oct 27-29 Raleigh, North Carolina https://2024.allthingsopen.org/
State of Open Con '25 Feb 4-5 London, United Kingdom https://stateofopencon.com/
Images © Alex White, 123RF.com
Contact Info
WRITE FOR US
Editor in Chief Linux Magazine is looking for authors to write articles on Linux and the
Joe Casad, [email protected] tools of the Linux environment. We like articles on useful solutions that
Associate Editor
Amy Pettle
solve practical problems. The topic could be a desktop tool, a command-
Copy Editor line utility, a network monitoring application, a homegrown script, or
Aubrey Vaughn anything else with the potential to save a Linux user trouble and time.
News Editor Our goal is to tell our readers stories they haven’t already heard, so we’re
Jack Wallen
especially interested in original fixes and hacks, new tools, and useful ap-
MakerSpace Editor
Hans-Georg Eßer plications that our readers might not know about. We also love articles on
Managing Editor advanced uses for tools our readers do know about – stories that take a
Lori White
traditional application and put it to work in a novel or creative way.
Localization & Translation
Ian Travis We are currently seeking articles on the following topics for upcoming
Layout cover themes:
Dena Friesen, Lori White
Cover Design • Cool Rasp Pi Projects
Lori White
• Linux Shortcuts and Hacks
Cover Image
© sdecoret, 123RF.com • System Rescue
Advertising
Jessica Pryor, [email protected]
Let us know if you have ideas for articles on these themes, but keep in
Marketing Communications mind that our interests extend through the full range of Linux technical
Gwen Clark, [email protected] topics, including:
Linux New Media USA, LLC
4840 Bob Billings Parkway, Ste 104 • Security
Lawrence, KS 66049 USA
• Advanced Linux tuning and configuration
Publisher
Brian Osborn • Internet of Things
Customer Service / Subscription • Networking
For USA and Canada:
Email: [email protected] • Scripting
Phone: 1-866-247-2802 • Artificial intelligence
(Toll Free from the US and Canada)
• Open protocols and open standards
For all other countries:
Email: [email protected] If you have a worthy topic that isn’t on this list, try us out – we might be
www.linux-magazine.com
interested!
While every care has been taken in the content of the
magazine, the publishers cannot be held responsible Please don’t send us articles about products made by a company you
for the accuracy of the information contained within
it or any consequences arising from the use of it. The work for, unless it is an open source tool that is freely available to every-
use of the disc provided with the magazine or any one. Don’t send us webzine-style “Top 10 Tips” articles or other superfi-
material provided on it is at your own risk.
cial treatments that leave all the work to the reader. We like complete so-
Copyright and Trademarks © 2024 Linux New Media
USA, LLC. lutions, with examples and lots of details. Go deep, not wide.
No material may be reproduced in any form Describe your idea in 1-2 paragraphs and send it to: [email protected].
whatsoever in whole or in part without the written
permission of the publishers. It is assumed that all Please indicate in the subject line that your message is an article proposal.
correspondence sent, for example, letters, email,
faxes, photographs, articles, drawings, are supplied
for publication or license to third parties on a non-
exclusive worldwide basis by Linux New Media USA,
LLC, unless otherwise stated in writing. Authors
Linux is a trademark of Linus Torvalds.
All brand or product names are trademarks of their Bernhard Bablok 69 Marco Fioretti 88
respective owners. Contact us if we haven’t credited
your copyright; we will always correct any oversight. Erik Bärwaldt 28 Jon “maddog” Hall 74
Printed in Nuremberg, Germany by Kolibri Druck.
Daniel LaSalle 32, 78
Distributed by Seymour Distribution Ltd, United Chris Binnie 52
Kingdom Vincent Mealing 73
Represented in Europe and other territories by: Zack Brown 12
Sparkhaus Media GmbH, Bialasstr. 1a, 85625 Martin Mohr 36
Glonn, Germany. Bruce Byfield 6, 24, 42
Linux Magazine (Print ISSN: 1471-5678, Online Thomas Reuß 75
ISSN: 2833-3950, USPS No: 347-942) is published Joe Casad 3
monthly by Linux New Media USA, LLC, and dis- Mike Schilli 58
tributed in the USA by Asendia USA, 701 Ashland Mark Crutch 73
Ave, Folcroft PA. Application to Mail at Periodicals Koen Vervloesem 16
Postage Prices is pending at Philadelphia, PA and Chris Dock 64
additional mailing offices. POSTMASTER: send ad- Jack Wallen 8
dress changes to Linux Magazine, 4840 Bob Billings
Parkway, Ste 104, Lawrence, KS 66049, USA. Nate Drake 82 Roland Wolters 46
October 4
Issue 288 / November 2024
Smart Home
Stalkernet vendors like Amazon and Google
would love to manage the appliances in your
home, but open source tools like Home Assistant
and OpenHAB offer an alternative for the privacy
minded. Next month we explore some free tools
for home automation.
Preview Newsletter
The Linux Magazine Preview is a monthly email
newsletter that gives you a sneak peek at the next
issue, including links to articles posted online.