LXF - 289 - June 2022
LXF - 289 - June 2022
LXF - 289 - June 2022
PLUS: HOW TO
Quickly clean up your
cluttered hard drive
Run your own email
server the easy way
Emulate the classic
Z80 Amstrad PCW
Mayank Sharma
Subscribe
I wouldn’t think of letting LTS releases
anywhere near my desktops. I used regular
& save!
Ubuntu releases for the longest time, but I’ve On digital and print
been a Fedora man for the past few years.
Fedora does a bang-up job of running a stable
– see p18
desktop, and has a wonderful update policy that suits me.
BULLET-PROOF
REVIEWS
UBUNTU 22.O4
Seagate EXOS 20TB HDD 20
Mark Pickavance is stunned by the storage
but not the endurance of this drive. The
cost is another matter altogether, mind…
Fedora 36 23
Mayank Sharma calls the latest Fedora
release just as boring as its predecessors.
But is that necessarily a bad thing?
A Musical Story 26
Fun, folk and funk are three things that
Management hate with a passion, so
ROUNDUP TOP OF THE FOSS
Tom Sykes has turned down his speakers.
Pi USER TUTORIALS
CURRENT AFFAIRS
S
ince last issue, more of the open source staff member stated that “GitHub’s vision is to be
community has spoken out to condemn the home for all developers, no matter where
Russia’s invasion of Ukraine and show they reside,” and it would instead comply with
support for Ukrainians. This includes Scarf “stringent new export controls aimed at severely
(https://about.scarf.sh), an open-source restricting Russia’s access to technologies and
gateway that helps distributes software and other items needed to sustain its aggressive
offers analytics for companies. military capabilities” instead.
In a recent blog post (https://bit.ly/ Red Hat, however, has announced (https:// Many open-source institutions are
lxf289scarf), Scarf’s co-founder and CEO Avi red.ht/3u9MaR7) that it’s ceased sales and having to decide how to react to
Press announced that Scarf will block package services in Russia and Belarus, and has Russian’s invasion of Ukraine.
downloads from the Russian Government. Avi discontinued partner relationships with
had discovered that “Scarf has fulfilled ongoing organisations based in those two countries. To its
software download requests from at least 17 credit, the company has also gone further, by
distinct sources that have been confirmed to organising buses that have “safely transported
originate from the Russian Government,” and several dozen of our
HARDWARE OPINION
F
or anyone who was upset when the page linked above), seem good, there are some
BeagleV StarFive RISC-V SBC (single odd choices as well. The bump in RAM is
board computer) was cancelled a few welcome, but the LPDDR4 memory is divided
years ago, there’s some good news. StarFive has into two 4GB units clocked at 2,800MHz, which
essentially resurrected it, with a collaboration will offer poorer performance than if it were 8GB Gabriel Krisman Bertazix
with Radxa repurposing the JH7100 dual-core of fully integrated RAM. is a senior software engineer
64-bit RISC-V processor for a brand new SBC: The release announcement at the end of last at Collabora.
the VisionFive V1. year (which you can read at https://bit.ly/
It features similar specs as the previous SBC, lxf289visionfiveannounce) certainly promises
although the VisionFive V1 increases the RAM big things, pointing out that the Neural Network While filesystems
from 4GB to 8GB, and also supports USB PD and Engine, NVLDA Engine and DSP of the device developers do their best to
Quick Charge with its USB-C power port. There’s makes it a “powerful piece of hardware for avoid corruption, it’s
some interesting specifications for this SBC, and human-machine interface, smart home tech, impossible to completely
a starter kit went on sale for $179 (around £140) surveillance, NAS, and even multimedia protect a system from
from https://bit.ly/lxf289 visionfive, although at applications.” It goes on to highlight the board’s accidental issues. Whether
the time of writing the starter kit has sold out, “H.264/H.265 video decoder supporting up to they’re caused by random
and you can’t buy the board on its own either, 4Kp60 and dual-stream decoding up to 4Kp30.” bit flips, disk crashes or
because that’s also sold out, too. software bugs, users don’t
However, the Advanced Kit is still available for enjoy losing their data for
$199 (around £150), which comes with a 32GB no reason. This is why
SD card with Fedora preinstalled (which also filesystem developers put
comes with the Starter Kit), as well as a power a huge effort in not only
The
supply and cable, 40-pin header extension and testing their code, but also
VisionFive
an acrylic case. This SBC can also run other V1 is a single
in developing recovery
Linux distros, and is compatible with the U-Boot board PC tools. In fact, all persistent
and GRUB2 bootloaders. As Electronics-Lab based on filesystems deployed
points out (at https://bit.ly/lxf289e-lab) while a RISC-V in production are
the specs (which can be seen on the product processor. accompanied by some
support infrastructure.
When an error happens,
HARDWARE administrators and recovery
daemons must be notified
ASAP so they can begin
A
pple’s M1 processor is one of the The ability to run Linux on these new Mac watch over a large quantity
most interesting products the devices is exciting because the ARM-based M1 of machines, like in a cloud
company has made in recent times, chips offer excellent performance and battery provider with hundreds of
and the Asahi Linux project (https://asahilinux. life. However, it’s still early days, and while there’s machines, a reliable
org) brings a customised remix of Arch Linux a growing number of features that now work, monitoring tool is essential.
ARM with the Plasma desktop to M1-powered including Wi-Fi, screen and built-in keyboards, This is why we worked on
Macs and MacBooks. there’s also a huge amount that doesn’t work, a new mechanism based
As the release notes reveal (https://bit.ly/ including DisplayPort (when do they ever work?– on Fanotify for closely
lxf289asahi), Mac and MacBooks that use the ED) connections, Bluetooth, GPU acceleration monitoring volumes and
M1 chip, or the more powerful M1 Pro and M1 and the webcam. There are also plenty of bugs, trigger warnings in real-time
Max chips are supported. However there’s no so this is best left for testers at the moment. when an error occurred. The
mention of the brand-new M1 Ultra chip (which The wait for a more stable release could prove feature, merged in kernel
is essentially two M1 Max chips connected frustrating, however. A post on the r/linux 5.16, won’t prevent failures
via a low-latency connection), and the subreddit (https://bit.ly/lxf289reddit) shows from happening, but will
announcement says that the new Mac Studio, how compiling code is around twice as fast on an reduce their impact by
which is currently the only product to use the M1 Mac running Asahi Linux compared to the ensuring any listener
M1 Ultra, is not currently supported. same Mac running MacOS. receives the message.
OPINION DISTROS
A
new community remix of Ubuntu However, caution is advised because Ubuntu
Keith Edmunds has been announced (https://bit.ly/ isn’t designed as a rolling-release, and Rolling
is MD of Tiger Computing Ltd, lxf289rollingrhino). Unlike some Rhino relies on testing versions of the distro,
which provides support for more straightforward remixes, Rolling Rhino which can come out at random times, and can
businesses using Linux. essentially turns Ubuntu into a rolling release also introduce bugs and issues.
distro such as Arch Linux and OpenSUSE Support may also be hard to get hold of
Tumbleweed, using a script to install Ubuntu’s due to the niche nature of this release, so we
We were once asked daily images from the devel branch. recommend that this is only tried out by anyone
to look at a Linux firewall It’s certainly an interesting new way of getting who’s confident about what they’re doing, and
that was in place at a Ubuntu, and the brave souls trying it out will be has methods to roll back to a working release if
Premier League football receiving cutting-edge features and bug fixes. something does go wrong.
club. The firewall wouldn’t
boot, so no one had any
internet access, and that’s
why they called us.
SOFTWARE SOFTWARE
As is often the way, the
firewall has been put in
place by “somebody who
has left.” That somebody
Fedora drops 32- Drawing 1.0.0
had set up the firewall to
PXE boot – that is, to
download its bootable
bit app support released
image from somewhere Others are likely to follow the The open-source MS Paint
else, which in this case
was a file server.
mainstream distro’s actions. alternative hits a milestone.
My first thought was,
W D
“Why on earth would you hile support of 32-bit hardware has rawing is a simple-to-use art tool that’s
set up a firewall to PXE been abandoned by many major considered to be a great open-source
boot?” And hot on the heels distros, none have stopped supporting alternative to Microsoft’s iconic MS
of this question was the 32-bit applications, until now. While Fedora Paint, and it’s now hit a major milestone with
answer: because it’s clever. stopped supporting 32-bit PCs in 2019, version 1.0.0 released. In a Reddit post
Never mind that the developers are now being asked to stop building celebrating the release (https://bit.ly/
firewall now depended upon i686 versions of packages that don’t have any lxf289drawing), rendering performance has
another, unrelated, server to dependencies – also known as “leaf packages”. been improved (although as the post explains,
be able to boot. Look how As a wiki entry (https://bit.ly/lxf289fedora) editing large images using integrated graphics of
clever I am! No disk needed explains, as long as the packages aren’t some CPUs is “still kinda bad but, huh, less than
in the firewall! (Although it depended on by other i686 packages, before.” New keyboard shortcuts have been
had one anyway: it just developers are asked not to put in “significant added, and the Scale tool has also been
didn’t use it.) Oh yes, I investment of time or resources” to support improved, as has zooming. Download the latest
thought, this a clever i686 architecture, and this will no longer be version at https://bit.ly/lxf289drawingdownload.
solution… right up to the considered a breaking change. This could cause
point when it stopped issues for proprietary software such as Steam,
working. Technology is which still features 32-bit games. We’ll be
complex enough without keeping an eye on
adding to the equation. the community
People who work with response to this.
Linux tend to love tech.
That’s fine, but let’s make Fedora is paving the
sure that we keep the way to drop support for
solutions we build as simple 32-bit applications, and
as possible. That’s other distros are sure Drawing 1.0.0 is a great tool for simple and easy image
what’s really clever. to follow. creation and editing.
Distro watch
OPINION
EVENTS ARE
What’s down the side of the free software sofa? BACK, BABY!
Q4OS 4.8
This Debian-based distro has a new version out, and is
now based on Debian 11.3. This includes the latest stable
kernel, along with security and bug fixes. The installation
process has also been upgraded to offer a more polished
experience when you’re setting up the distro. As the Q4OS 4.8 is available to download with a Matt Yonkovit
release announcement states (see https://bit.ly/ much-improved installation process. is the head of open source
lxf289q4os), language and localisation support has been strategy at Percona
improved in the API library for various tools as well.
KERNEL WATCH
OPINION
A.OUT WITH
THE OLD
Jon Masters summarises the latest happenings in
the Linux kernel, because someone has to…
L
inus Torvalds announced the release land in the upcoming 5.18 release. At the time of
of Linux 5.17, saying “we had an writing, the merge window is closed and Linus
extra week at the end of this release has posted several release candidates. These
Jon Masters has been involved cycle, and I’m happy to report that it was very include a number of typical “big ticket” items, as
with Linux for more than 22 years. calm indeed.” The latest kernel includes many well as smaller internal changes.
new features, such as support for “Compile The kernel random-number generator has
The end may finally be Once, Run Everywhere” or “CO-RE” BPF been overhauled by RNG (Random Number
nearing for the venerable programs that enable developers to ship Generator) maintainer Jason Donenfeld. The
“a.out” file format. With the BPF (Berkeley Packet Filter, a kind of JITable first of these is that there is now no difference
removal of support from the last small program that’s loaded directly into the between /dev/random and /dev/urandom. The
two architectures that still kernel on behalf of a user) portably without second is a new mechanism to handle the case
implemented it, it’s just a matter recompiling for each target machine’s kernel. of duplicated (at runtime) virtual machines,
of time (perhaps next release). Another new feature is support for a new enabling entropy to be injected in such a way
There aren’t many users of AMD P-State driver, replacing the legacy ACPI that two identical virtual machines nonetheless
“a.out” left out there and readers
P-State driver with an ACPI CPPC-enabled generate different random numbers.
would be forgiven for wondering
one instead. The upshot of this is that those This might happen, for example, if the
what this is. Several decades ago,
before there was ELF (Executable with recent Zen CPUs should see improved duplication were used as a means to quickly
and Linkable Format), there was power and performance management, start up VMs. Each were then personalised
“a.out” and it was the original with the kernel able to more precisely independent of the other and expected to run
way Linux handled binaries. communicate to the platform the desired different workloads, anticipating unique
The year was 1995. I was 13 level of responsiveness to particular randomness for the generation and use of
years old and had just been workloads. In turn, the underlying Zen private keys, and for other security purposes.
accepted into a local university platform is more able to communicate its If things go according to plan, we should
part-time while still in secondary own available capabilities to the operating be summarising the tail end of the 5.18
school. At the same time, the
system, similarly to the intel_pstate driver. development cycle and the preparation for 5.19
great Linux migration from
in the next issue. Which does make us wonder,
“a.out” to ELF was underway.
And it was messy. It was also Linux 5.18 merge window just how far away is 6.0. While it might only be
necessary. “a.out” statically With the release of 5.17 came the opening of symbolic, we’re likely to see a Linux 6.0 release
linked everything (including the “merge window” for new features that will in a few months, perhaps before Linux turns 31.
“shared” libraries) at a specific
virtual memory address,
requiring every library on a ONGOING DEVELOPMENT
machine to be precompiled
into its own location, and the
Catalin Marinas posted a patch updating with IMSIC) aims to improve this
maintenance of central registries
some Arm contacts since Grant Likely performance significantly.
of known locations so as to not
break applications. It was flimsy.
has taken a new role as CTO of Linaro. Byungchul Park posted version 3 of a
There was a better way (ELF), This author has personally known Grant patch series implementing DEPT (which
but it required an incompatible for many years and is very excited for his stands for Dependency Tracker”), a “tool for
“flag day” break with the past. new opportunity. detecting deadlock possibilities by tracking
The early Linux distros (Debian, Anup Patel posted some patches to clean wait/event rather than lock... acquisition
Slackware, Red Hat Linux, SuSE, up IPI (Inter-Processor-Interrupt) support order to try to cover all synchronisation
etc.) migrated as part of an for RISC-V machines. IPIs are commonly mechanisms.” A little feedback came from
upgrade from one GNU C library used for code running on one processor one intrepid tester, and some updates were
(libc4) to another (libc5).
core (“hart” in RISC-V) to signal another that posted, but nothing further just yet. Still, this
Everything needed to be
it needs to perform an action. An example of seems interesting as an extra means to find
upgraded at once – almost
akin to swapping out your entire
this is tearing down an address space that’s potential deadlocks.
disk/filesystem – otherwise been used by multiple other cores which Finally this month, an SVG version of
everything would break at once. may still contain cached data in their local Tux, the Linux logo has been added to
It was a very painful experience TLB (Translation Lookaside Buffer – a kind the kernel in a response to the request
for those who lived it and we still of cache structure). Traditionally, RISC-V had not to add binary artefacts as part of new
remember it today. a less-performant mechanism for IPIs, but documentation (SVG is a descriptive text
Fortunately, “a.out” is more of a new interrupt controller architecture (AIA format for images).
an historical relic, soon to
be museum material.
ON SALE
NOW
destdir\;
This finds all files of type file –
remember in Linux everything is a file,
but you don’t want to copy directories,
symlinks or any other file-like objects
– and passes them to the command
specified with -exec . The curly braces are
replaced with the name of the file and the
semi-colon marks the end of the -exec
command. It is escaped – putting a slash
before the command – because the semi-
colon would otherwise be interpreted by
the shell. So this command finds every file
in sourcedir, no matter where it is in the
directory structure of that directory, and
copies it to destdir. The problem occurs
if there are files with the same name in
different directories. Adding -i to the cp
command will cause if to stop and ask
before overwriting files.
To keep all the files you would need to Mkchromecast can mirror your desktop to any TV with a Chromecast dongle fitted or built in.
make sure each one has a unique name.
One way to do this is to use the full path of we want to replace is the directory I have seen some Ubuntu videos where
the file, replacing all directory separators separator, which is also a slash. However, they go to the Settings window and in
with a different character. We can do this we don’t want the shell to treat it as its window’s bar, at the right top cornet,
with a bash loop that reads all the files from part of the substitution structure, there is a SHARE button. With that they
the find command and acts on them: so we prefix it with a backslash. We now can share the screen, but it seems to be
$ find sourcedir -type f | while read F; do have the variable name, followed by two only a PC-to-PC VNC connection only,
mv “$F” “destdir/${F//\//-}” slashes to say replace all occurrences and not the Wi-Fi direct connection I’m
done of the next character, which is also a looking for here. Is there any easy to use
The first line runs find as before and slash, then another slash to specify the GUI software to do that?
sends the list of files to a pipe, where the replacement character. Chris Lawson
script reads each file into a variable and There are GUI tools available for moving
acts on it until there are no more files. The
mv command looks a bit messy, but it
and renaming files, such as KRename.
However, because they need you to select
A There are a number of ways to do
this, depending on the desktop and
takes advantage of the Bash shell’s built- files to work on, they generally handle one software you have installed. If you’re
in text replacement options. If you have a folder at a time. running a recent enough version of
variable X, then $X gives the contents of GNOME (at least GNOME Shell 3.34) you
X, ${X/y/z} gives the contents of X with the
first y replaced by z . Add another slash
Q Mirror, mirror on TV
How can I mirror my screen to
can install the Cast To TV extension. It’s a
somewhat fiddly process, but it does allow
like this – ${X//y/z} – and all occurrences a TV in Debian? I can do that easily mirroring video and audio from the full
of y are replaced. The way that we’re using in Windows, but in Debian I think it’s GNOME desktop. See the instructions at
it here look messy because the character missing the necessary software to do so. www.linuxuprising.com/2020/04/how-to-
cast-your-gnome-shell-desktop-to.html.
A simpler option is to use the Chrome
A QUICK REFERENCE TO… TMPFS browser. This used to make use of a Cast
extension, but now it’s built-in. Press the
Linux has more filesystems than you files are stored in memory only, tmpfs is “hamburger” menu button and there
can shake a stick at. There are the fast – much faster than a spinning disk will be a Cast option. When selected, it
traditional disk-based filesystems such and also faster then an SSD. You create will give a list of available devices. If you
as ext2/3/4 and XFS. Then we have a tmpfs from the command line with select one of these now, it will cast the
the all-in-one filesystems and volume $ sudo mount tmpfs /mountpoint -t current tab, with video and sound, to the
managers like ZFS and btrfs, not to tmpfs selected device. If you want to cast the
mention the virtual filesystems using in or from /etc/fstab with a line like entire desktop, press the Sources button
/proc, /sys and /dev. tmpfs /tmp tmpfs size=50% 0 0 at the bottom of the popup to pick desktop
So here’s one more: tmpfs. This is a The size option sets the maximum instead of the default of the current tab.
filesystem that exists only in memory. size of the filesystem, either in bytes or This is a simple solution that only has
When the computer is switched off, its as a percentage of total RAM: 50 per one significant drawback: casting the full
contents are gone – forever. This makes cent is the default. This doesn’t mean desktop doesn’t mirror sound to the TV.
it useful for data that you don’t want that mounting a tmpfs will eat up half There is a third option – a program
hanging around. It’s most commonly of your memory. This is the maximum called Mkchromecast, which is available
used to mount the /tmp directory size; it only uses as much space as it from https://github.com/muammar/
because that’s supposed to be wiped needs to store files. When you unmount mkchromecast. There is a package for
when you reboot anyway. Because the the filesystem, all memory is returned. Debian that’s included in the official
repositories. You you only need to run
Q Meddlesome modules
I have two modules that are
causing me problems. They are filling
up my syslog with errors. It’s my fault
because I installed them to keep time on
an Odroid C2 [a 64-bit quad-core single
board computer] in between reboots, but
the battery piece was ripped off and now
I have no use for the modules.
The two modules are aml_i2c and rtc_
pcf8563. I know that I can temporarily
remove them with modprobe -r but they
come back after a reboot. How can I
remove them for good? In addition to making full disk backups, Clonezilla can create a restore disc tailored to your backup.
Billy Howell
and install the latest version from an Clonezilla to create a single bootable image
A If these are “out of tree” modules
then those are not part of the kernel
ISO image.
Alex Dyer
file that contains the backup. Put this on a
USB drive and in the event of disaster, you
package. This means that you can uninstall can boot and restore from the same drive.
them in the same way they were installed –
with your distro’s package manager. If
A Having spent many years mastering
custom ISO images for the Linux
There’s a full tutorial on this on the
Clonezilla web site. The process may seem
you’re using a distro based on Debian or Format DVDs, we can say that what you a little involved, but after you’ve done it
Ubuntu then the easiest way to find out want to do is possible, but not easy. For one once, it should be straightforward to do it
which package installed a file is to search thing, you can’t safely create an install ISO again for the following backups.
for it at http://packages.debian.org. from a running system. Files will change One problem with full disk backups
However, the module names you give during the process, so you will have to boot like this is that they mean not having your
correspond to the ones that are installed from either a live distro or another distro system available while backing up, which
with the kernel. While it’s possible to installed on your hard disk. Second, the discourages frequent backups. We would
remove the module files and rebuild the remastering process is time-consuming, recommend using a traditional backup
module database, this is likely to cause often taking several hours for a run. This program. There are plenty to choose from
more problems than it fixes, and they will was when creating ISOs of 2-4GB for the to run scheduled backups, preferably daily,
only reappear when your kernel is updated. DVDs. Once you start including data from in between your full imaging sessions.
Instead, it’s simplest to leave the your home directory, you could end up with
modules where they are and tell the a much larger image, possibly exceeding GET HELP NOW!
system to not load them at boot time, or the ISO specification and difficult to write
at any later time. To do this create a file in to a suitable medium for booting. We’d love to try and answer any questions Subscriptions: for magazine issues email help@mymagazine.co.uk
/etc/modprobe.d. The name must end Because you’d have to boot from a you send to lxf.answers@futurenet.com,
in .conf and should make it clear what it’s live distro to create the image, you may no matter what the level. We’ve all been
for, so something like /etc/modprobe.d/ as well use one specifically designed for stuck before, so don’t be shy. However, we’re
blacklist.conf. Add a line to blacklist each creating total system backups, such as only human (although many suspect Jonni
module, like so: Clonezilla (https://clonezilla.org). This is is a robot), so it’s important that you include
blacklist aml_i2c available as a live image that can be written as much information as you can. If
blacklist rtc_pcf8563 to a CD or USB stick and boots to a menu something works on one distro but not
This will prevent the modules from that provides options for backing up and another, then tell us. If you get an error
being loaded, but something on your restoring hard disks. In contrast to using message, please tell us the exact message
system was asking for them to be loaded the likes of dd to image a disk, Clonezilla and precisely what you did to invoke it.
in the first place. It could be worthwhile images only the parts of the disk in use, so If you have, or suspect, a hardware
finding out what this was. Searching the it produces smaller images. It can write to problem, let us know about the hardware.
output of dmesg after boot should give a local medium, such as a USB drive, or to Consider installing hardinfo or lshw. These
some clues. network storage. programs list the hardware on your
When backing up a complete drive, it machine, so send us their output. If you’re
Q Instant reinstallation
Do you know any tool to create
saves the partition table and bootloader as
well as filesystem data, so you can easily
unwilling, or unable, to install these, run the
following commands in a root terminal and
an ISO image of your system as is and restore your system back to the state in send us the system.txt file too.
then be installable, with your users, which it was at the time of the backup. uname -a > system.txt
configuration files and everything else? Clonezilla’s ace up its sleeve as far as your lspci >> system.txt
I want to be able to make backups and needs are concerned is that after creating lspci -vv >> system.txt
in case of loss of data or configurations, your backup image, you can then use
Neil says…
Thanks for the feedback. It’s always good to have
specific pointers on what to look into with distros. While
I understand people will be defensive of their projects
and when we come to review and compare anything we
have to be objective, I would say a number of the things
you point out we didn’t actually do, in the LXF287
Roundup that I think you’re referring to.
I don’t think we even mentioned that Moshka was
green (we did that for Linux Mint), plus we specifically
highlighted a benefit of Bodhi is that it is indeed
lightweight while offering plenty of visual bling. In a
Roundup we’re always going to end up skipping over
specifics of what makes a project great, which I can
imagine is frustrating, but we’re limited on space so lots
Helpdex
SUBSCRIBE
Sign up today and get your
AUSTRIAN AUDIO
YOUR
GIFT! Hi-X15 Over-Ear
WORTH
Do
£89
n’t miss out,
e now!
Headphones
subscrib
Product features
Low-impedance headphones, ideal for
low-power outputs like mobile devices
Soft memory foam earpads to keep you
comfortable during long listening sessions
Foldable all-metal hinges for easy storage
– uncommon at this price range
Detachable 1.4m cable
Designed and engineered in Austria
SUBSCRIBE NOW!
www.magazinesdirect.com/lin/a33x
Call 0330 333 1113 and quote A33X
18 LXF289 June 2022 www.linuxformat.com
Save money today! SUBSCRIBE
Terms and conditions: Offer closes 31 May, 2022. Offer open to new UK subscribers only. Pricing is guaranteed for the first 12 months and we will notify you in
advance of any price changes. Please allow up to six weeks for delivery of your first subscription issue (up to eight weeks overseas). Your gift will be delivered
separately within 60 days after your first payment has cleared. Gifts only available to subscribers on the UK mainland. Gift not available with a digital subscription.
The full subscription rate is for 12 months (13 issues) and includes postage and packaging. If the magazine ordered changes frequency per annum, we will honour
the number of issues paid for, not the term of the subscription. For full terms and conditions, visit www.magazinesdirect.com/terms. For enquiries please call
+44 (0) 330 333 1113. Lines are open Monday to Friday, 9am to 5pm UK time, or email help@magazinesdirect.com. Calls to 0330 numbers will be charged at no
more than a national landline call, and may be included in your phone provider’s call bundle.
Endurance Crazy amounts of storage and better than the IronWolf Pro
We had concerns about IronWolf Pro 20TB and its 20TB due to an increased workload.
300TB per year workload. These are addressed to a
point by the 550TB per year workload offered by the Rating 8/10
EXOS 20TB. Doing the same calculations that we did for
HostGator
A basic website hosing option for small and medium businesses
that Shashank Sharma thinks should be on your short list.
B
ased in the US, HostGator
IN BRIEF offers a range of solutions
Thanks to its including shared hosting,
economical VPS hosting, dedicated hosting,
pricing and cloud hosting or even reseller
offerings, hosting. While the dedicated hosting
HostGator plans give the choice of Windows
should appeal to and Linux as the underlying
most beginners, operating systems, all shared
and even hosting and VPS plans are Linux
professionals based. HostGator defaults
and SMBs. The to CentOS 7 for all its Linux
website builder, installations, but you can request
offered as part CentOS 6 if that’s more your speed. cPanel gives you everything you need to control and manage your site.
of the shared The shared hosting plans start at
hosting plans, $2.95 per month for a three-year subscription and might plans include a 45-day money-back guarantee, and you
makes it easy to seem tempting because of the unmetered disk space can also utilise $150 credit for GoogleAds.
deploy a basic and bandwidth. However, the hosting provider will ask The HostGator Dashboard provides quick access to
website in you to scale down usage of the resources if your needs frequently used features such as cPanel, set up email
almost no exceed 25 per cent of the total available resources. accounts, install WordPress and more. The panel on the
time at all. Unlike many other hosting providers that allow left features additional categories such as Hosting,
backups out of the box, with HostGator you must Marketplace, Email & Office, Domains and Billing.
separately purchase the CodeGuardBasic service Unsure how to do something? Begin typing in the
for $2 per month. The service provides daily automatic search box and the site displays matching articles.
backups, 1GB storage space and three restorations per There’s a lot of content that’s sensibly organised, but if
month, and you can also restore the entire site, or any you need extra help, support is available 24/7/365 via
file, to a previous state with a single click. live chat and telephone (toll-free in the US.)
Although the plans include a website builder as We used the service Uptime.com to check the
well, it’s rather limited, and you’d have to purchase a availability and response time of our HostGator site for
separate plan for it if you want to assemble a complete a week. Our site was never down during the monitoring
website spanning multiple pages. period. That’s what we would expect after only a week
of testing, but it was still good to see. Response times
Pleasant surprise averaged 378ms, which is at the slower end of the basic
All shared hosting plans include some of the most used shared hosting market (most providers average
features, including a free email account. This is quite between 200 and 400ms.) There’s better news in
surprising as most hosting providers insist that you HostGator’s ‘worst case’ time. In more than 2,000 tests,
shell out extra for a professional email address that the slowest response logged was only 556ms,
matches your chosen domain name. considerably better than many hosts (the current
HostGator also widely promotes its WordPress average for our last 30 reviews is 891ms).
hosting plans. The cheapest Start plan priced at $5.95
per month for a three-year subscription, with each
renewal at $9.95 per month. The Start plan enables you
VERDICT
to deploy a single website, and limits the number of DEVELOPER: HostGator
monthly visitors to 100,000. Also included is a free WEB: www.hostgator.com
domain name, professional support and SSL certificate. PRICE: From $2.75
Users looking for more resources on their server
must opt for either VPS or dedicated hosting. HostGator FEATURES 8/10 EASE OF USE 8/10
offers three VPS plans, starting at $19.95 per month PERFORMANCE 8/10 VALUE 7/10
(renews at $79.95 per month). It’s also not possible to
customise the plans to your needs, so you must opt for Although the pricing of the shared hosting plans make them
the next closest plan. HostGator’s Baby plan includes a a great starter option for SMBs and professionals, you can
free domain for a year, unmetered disk space, free site opt for VPS or dedicated plans as your website grows.
migration, free email account, SSH access, and one-
click installation of dozens of applications using Rating 8/10
Softaculous package manager and more. All hosting
Linux Mint DE 5
Whenever there’s a new LMDE release, Mayank Sharma can’t
help but think of the old adage: “It’s the thought that counts.”
L
MDE 5, codenamed Elsie, is
IN BRIEF the latest edition of Linux
LMDE stands Mint’s Debian-based distro,
for Linux Mint and is based on Debian 11. LMDE
Debian Edition, exists because Linux Mint needed a
and as its name fallback option in case Ubuntu made
suggests, such significant changes to the
sources its distro that it no longer became
packages from feasible to use as a base.
Debian. Unlike For this reason, LMDE is also
the main Linux one of Mint’s development targets,
Mint release, and helps guarantee that its
which is based homebrewed software work
on Ubuntu. In outside of the Ubuntusphere.
the project’s Given its objectives, LMDE strives
own words, the to be as similar as possible to Linux
distro exists to Mint. One of the reasons for Mint’s LMDE 5 is well stocked, and fully usable right-out-of-the-box, thanks to a host of desktop
ensure Linux popularity is its Cinnamon desktop software you won’t find on a stock Debian installation.
Mint continues environment, which sports familiar-
to deliver its looking desktop furniture, unlike the now-defunct Unity These quibbles, taken along with LMDE’s lack of
goodies, even if desktop, and even the new-fangled Gnome 3 desktop original distro-specific documentation, and the project’s
Ubuntu were that’s the default on Ubuntu. own raison d’être, leads us to believe that perhaps the
to disappear. The similarities don’t end with the Cinnamon Linux Mint project itself looks at LMDE as more of a
desktop. In fact, with LMDE 5, Linux Mint has tried to showcase, rather than something you’d want to run
SPECS replicate the desktop experience of the latest edition of on a production machine.
Linux Mint 20.3, with some noticeable differences. The one key difference between LMDE and Mint
CPU: Any x86 The first is the mechanism for transferring the ISO to is that the former is available for 32-bit machines as
processor a USB drive. According to LMDE’s release notes, the well. This leads some to suggest that LMDE is a good
Mem: 4GB distro’s ISO uses a different structure than the ones distro for older machines. We have our doubts though,
recommended used by other distros, such as Linux Mint, which means because LMDE chooses to ship only with the Cinnamon
HDD: 100GB that it isn’t compatible with multiboot tools such as desktop. Although Cinnamon isn’t as resource hungry
recommended Yumi, and has to be manually dd’ed onto a USB. as Gnome 3 or KDE 4, it also isn’t as lightweight as Mate
Build: 32- Another difference is the installer. LMDE doesn’t use or LXDE, that both offer a lot more bang for the buck on
and 64-bit the installer it does on Linux Mint, but it’s just as easy to older, underpowered machines.
navigate. The only real difference is the partitioning step. There’s no denying that LMDE is an important distro
While both the Linux Mint and LMDE installers support for the Linux Mint project, but from the looks of it, LMDE
automatic partitioning, if you need to manually partition isn’t worked on with the same urgency and priority as
your disk, LMDE fires up Gparted instead of handling the main edition. We have no issues with that, but it
this within the installer, like Linux Mint. does prevent us from recommending the distro for any
real use case beyond satisfying one’s curiosity.
Proof of concept
The other differences aren’t as innocuous. For starters,
LMDE hardly has any documentation of its own. The
VERDICT
project relies on documentation from the main distro, DEVELOPER: Linux Mint
which is fine for the most part since the distros are so WEB: https://linuxmint.com
alike. However, for tasks such as upgrading drivers, the LICENCE: Various
instructions don’t work in LMDE because the distro
doesn’t include the driver manager. FEATURES 7/10 EASE OF USE 8/10
Furthermore, LMDE is only offered with the PERFORMANCE 8/10 DOCUMENTATION 5/10
Cinnamon desktop, unlike Mint that comes in several
flavours. Then there’s the fact that LMDE 5 comes about Unless you’re a Linux Mint developer, we’d suggest you stick
seven month after the release of Debian 11. Even then to the project’s main release, which is where all the action is.
the developers haven’t yet published the steps for users
of LMDE 4 (LMDE doesn’t have point releases) to Rating 7/10
upgrade to the latest release.
Fedora 36
Mayank Sharma calls the latest Fedora release just as
boring as its predecessors. But is that a bad thing?
enerally speaking, it’s
IN BRIEF
One of the top
G difficult to become excited
at Fedora releases. And
RPM-based that’s a good thing. Unlike its often-
desktop distros, fidgety peers, the Fedora developers
Fedora also toils quietly keep cranking out releases.
hard to ensure it Usually there’s hardly any noticeable
delivers the best difference, and most of it can be
Gnome desktop. attributed to the Gnome desktop
Supported by environment. The majority of
Red Hat, which changes in Fedora usually happen
employs several behind the scenes, and manifest
Fedora core themselves in the nooks and
developers, crannies of the userland in very
Fedora serves as subtle, but important ways.
a playground for And the developers don’t intend Fedora 36 is the latest Linux distribution to offer users a dark mode interface that can be
bleeding-edge to change this winning formula with switched on easily with a single click.
features to the Fedora 36 release. The most
mature before obvious evolutionary change in the distro is the Nvidia graphics, is that the release will use the Wayland
they make their inclusion of the Gnome 42 desktop environment, which server even on installations that use the Nvidia driver.
way into Red is also part of the Ubuntu 22.04 release (see page 34). Elsewhere, the rpm-ostree Fedora 36 variants, such
Hat’s enterprise However, unlike Ubuntu’s tweaked rendition, Fedora 36 as Fedora Silverblue, will now have the /var directory on
offerings. ships with a more or less pristine Gnome 42 release. a separate subvolume to help users maintain snapshots
The highlight of Gnome’s latest version is a system- of dynamic data separate from the system snapshots.
SPECS
wide dark theme, with wallpapers for both dark and light In the same vein, the RPM database has moved from
themes, and tweaks to the folder icon theme to bring /usr to the /var directory, which again will simplify
Minimum their appearance in line with the desktop. snapshots and rollbacks, especially for admins. This is
CPU: 2GHz The new desktop also brings an improved cache of being touted as one of those changes that come into
Memory: 2GB programs, many of which have been ported to GTK4. being in Fedora, and will eventually get replicated in Red
HDD: 20GB The move to GTK4, thanks to all the behind-the-scenes Hat Enterprise Linux, after it gets a shakedown.
Builds: x86-64, work, will add a spring to the step of these applications, All things considered, Fedora 36 is like any Fedora
AArch64 along with subtle changes to make them appear more release: pleasingly rock-solid and stable. In fact, we’ve
modern. The most noticeable change is the new been tinkering with the code-complete Beta release,
interactive screenshot tool that can now also record which came out after missing a couple of deadlines
screencasts of the screen or a part of it (in the WebM (another testament to Fedora’s insistence on stability
format), in addition to taking static screenshots. The over anything else). We didn’t encounter any bugs
release also brings a replacement to the Gedit new text during our testing on real and physical hardware, and
editor. The new one’s simply called Text Editor, and in are confident the Beta bears a very strong resemblance
addition to the improved UI, the GTK4-powered tool to the final release, which at time of writing is currently
also includes useful new features, such as auto-save. scheduled for release before the end of April.
VERDICT
DEVELOPER: Canonical
WEB: www.ubuntu.com
LICENCE: Various
KDE users can experience the advantages of the latest LTS release Rating 8/10
through Kubuntu 22.04, which ships with KDE 5.24.3.
A Musical Story
Fun, folk and funk are three things that Management hate
with a passion, so Tom Sykes has turned down his speakers.
uitar Hero is about the
SPECS
Minimum
G fantasy of being a rock
legend, but A Musical
OS: Ubuntu Story is about the reality. There can
18.04 64-bit be no whiffing of notes here, and no
CPU: 1.5GHz strutting around your living room like
64-bit a rock god. This is a tough, unusual
Memory: 4GB rhythm game that insists on
GPU: Integrated perfection for each of its instrumental
HDD: 3GB songs. That’s perfection through
repetition, through learning each
rhythm and getting a feel for the The story element of A Musical Story
is told through classy animation.
music. It’s probably a more accurate
representation of the process of
learning a song. Real rock stars don’t get a timeline Even if you master the music, you’ll never get to play a
showing them when they need to hit each note. full song. You only perform brief snippets in A Musical
So it goes in A Musical Story, a game where the Story. You’ll do a bass loop, then maybe the drums and
timeline has (mostly) disappeared. Instead, you need guitar, before finishing things off with a dusting of lovely
to learn the tempo and rhythm of each tune. It’s an synth. To be fair, this is an approach that keeps the music
uncompromising rhythm game, and we like it for that. fresh and the challenge level high. But it also means that
After passing each exam-like song section, you’re when you’ve finally perfected that guitar riff or drum loop,
rewarded with another story chunk, which is told via mastery is essentially thrown away. You’re not given the
animation and (surely) the game soundtrack of the year. time to demonstrate, to enjoy your new skill before the
game shunts you on to something new.
We’re going on a road trip! It feels like A Musical Story is a game caught between
While you’ll flit between multiple instruments, the story two worlds, something immediately evident when you
follows the guitarist of a 1970s rock band, as the gang look at the screenshots. There are the cutscenes, and the
embarks on a road trip to the Pinewood music festival. gameplay, and they don’t meaningfully connect – so
But it’s much more a game about the guitarist’s drug much so that the story fades out, so as not to be a
addiction, as represented by the crows that begin to distraction. There’s a fantastic, varied soundtrack that
intrude upon his perception of reality. gels perfectly with the animation, morphing from one
There’s no dialogue, but it’s not needed thanks to genre to another, as best suits the scene.
the quality of the visual storytelling and the exceptional Despite these issues the rhythm mechanics are strong,
soundtrack. Funk rock gives way to folk and 70s synths, paring the genre down to its basics while still making it feel
and extended maths rock sections that will really test your like you’re playing a real instrument. A Musical Story wrings
ability to tap, and hold, in time to invisible tempos. a lot of challenge out of just two buttons or keys. You’re
Some help is offered in the form of a subtle position only ever tapping or holding one, the other, or both at once,
marker that activates if you fail repeatedly, and which but it takes skill to get the rhythm of each song down.
disappears when you improve. You’ll mess up a lot after We just wish the game knew what it wanted to be: a
the early chapters lull you into a false sense of security. story you experience, or a set of challenges you master.
As it is, it’s somewhere awkwardly in the middle.
VERDICT
DEVELOPER: Glee-Cheese Studio
WEB: www.glee-cheese.com
PRICE: £11.39
Rating 7/10
Roundup
AppCenter Bauh Discover
Gnome Software HaikuDepot
Alexander
Tolstoy
is going on a
shopping spree,
but this time it’s
to open source
software stores!
HOW WE TESTED…
First-launch
experience
Do the stores load quickly, so that
you’re not left watching the clock?
e performed cold starts of all our stores to see how fast
App description
How much useful information
is in each product card?
e compared the details that could be found once we
Task queueing
Can you tell your software store to batch-install new programs?
sing a software store occasionally to install just one The AppCenter store was definitely better than Gnome Software
Reliability
How stable are the software stores
that you want to rely on?
o one wants a software store to misbehave, crash or
Extra features
What else can each store do
and make you want to use it?
HaikuDepot can
oth Discover and Gnome Software support the fwupd handle OS updates
The Verdict
Open source app stores
nome Software is strong in so many areas that we
ALSO CONSIDER
We deliberately excluded various flavours and rip-offs of the is a matter of one or two commands to be copied and pasted
popular Gnome Software store. Ubuntu has its own version, to your terminal, so maybe there’s no need in a separate GUI?
which can be configured to use Snap packages, while Nevertheless, there are many lesser-known app stores for
System76 still relies on their own AppCenter fork known as Linux that we haven’t covered here. How about Souk, a Flatpak-
Pop!_Shop. All those forks are interconnected and generally only store written in GTK4 and Rust? Or maybe the Flutter-
have minor differences. If you still miss Snap support, take a based AppImage Pool that’s designed exclusively for that
look at the Snapcraft web store, which is perfect for browsing package format? There’s always a choice, so go ahead and
and discovering apps. Once you decide to install something, it find the best store for your needs and tastes.
CREDIT: @simonjbutcher
42 (although there are some loose ends from earlier
releases), a more polished Wayland experience and
we want to see how Canonical is pushing ahead with
its Snap initiative.
There’s only one problem. At time of writing, it hasn’t
been released. But that’s okay, because it will be by the
time you read this. And if we’re lucky there we won’t
have missed any last-minute additions or surprises. Ubuntu uses Wayland and (maybe) remember that The official
We’ve been testing the daily Jammy Jellyfish images for Active Directory can be set up from the installer. You’ll background is over
the page, but these
a couple of months prior to the official release. be aware that there’s light and dark versions of the Yaru
AI-generated
theme, and you’ll suspect (rightly) that these have been jellyfish by Simon
Minor niggles, begone! further tweaked. To be frank, if you’ve been using Butcher are
And we’ve seen quite a bit of change in that time, Ubuntu 21.10, then there’s not anything ground- something else.
particularly as parts of the recently released Gnome 42 breaking in 22.04. But that doesn’t mean you shouldn’t
start to find their way in. Indeed, as we write this we’re upgrade. You should, because if nothing else your
still about a week away from launch day, but since both interim release is about to be EOLd. Oh, and if you’re of
the Feature and UI Freeze have passed we don’t expect the ilk that gets excited by phrases like ‘modern design
any drastic changes. We do rather hope some minor trends’, then check out the new logo. It’s similar to the
niggles (such as stuttering and occasional crashes old Circle of Friends logo, but on a web3-friendly (stop
while dragging windows between monitors) get sorted baiting sensible readers! – Ed) rectangular background.
out, though. If you just want to see what Ubuntu is like, there’s no
If you’ve used either of the interim releases (21.04 or need to install it at all. Just follow our handy three-step
21.10) since the lasts LTS then you’ll be aware that now guide to downloading, writing and booting an Ubuntu
USB stick, or DVD (Sorry!–Ed) if you must.
DOWNLOAD AND BOOT UBUNTU
Escape Windows
Whether you’re a complete novice or Windows has driven
you to seek out other operating systems, Ubuntu can help.
indows 11 has been rolled out through the to be sure Windows won’t touch your Linux: unplug the
4
2
Customise Ubuntu
Discover new software. Change settings. Install a new desktop (or three).
buntu (and most other desktop Linux never heard of. You will, however, find the official Spotify
Installing the whole Kubuntu desktop package makes for a menu that, unsurprisingly, An ad-blocker and Mozilla’s container programs are essential for the
is rich in items that begin with K. modern Web. And switching the default search to DuckDuckGo.
ayland by default was tested in Ubuntu 17.10, headsets), you can install the PipeWire session with
A common Theme
Gnome themes have come under
the spotlight since the introduction
of GTK4 (inaugurated with Gnome
40). Did we say themes? Ah, we
meant theme, because custom
theming of Gnome applications is
now verboten. The default GTK3
theme was called Adwaita, a
Sanskrit word often translated as ‘the only one’, (literally The old Gnome Tweaks tool is still available in the Menus in titlebars.
Amazon search
‘not two’). But it wasn’t really the only one, because repo, but like the EGO website it can no longer manage results in the HUD.
developers could happily write their own CSS stylings. Gnome extensions. That’s okay, because it can do most Ubuntu 16.04 had
In GTK4 this theme has been promoted to a platform everything else, including cleaning up the mess our some crazy ideas!
library, libadwaita, which Gnome developers say will Gnome fonts ended up in post installation of KDE
guarantee conformance with their Human Interface Plasma. Tweaks also enables you to manage startup
Guidelines. And (like the characters often say in programs, change titlebar button visibility (or move
Highlander) there can be only one. GTK3 applications them to the left, MacOS style) and adjust legacy
will still respect custom themes, but GTK4 ones will only theming. You can install Tweaks with:
support the limited changes (for example, background $ sudo apt install gnome-tweaks
and accent colours) permitted by libadwaita. This will install a different Extensions tool, currently
For Ubuntu 22.04 this might be bad news, because in beta form. At the time of writing this doesn’t let you
at present it uses a mix of Gnome 42 applications install new extensions, otherwise we could do away with
(libadwaita-based) plus some from older releases (such the previous tool. For even more tweakability, try Just
as Files, which is based on GTK3 and libhandy). This Perfection, found in Extension Manager. It allows for
may change prior to release, otherwise there are going parts of the shell theme to be overruled (including
to be some cosmetic inconsistencies. If this bothers removal of the top bar) to make matters more minimal.
you, then you might want to run away from Gnome 42 We don’t go for Gnome extensions ourselves (despite
for the next little while, in which case there are some having two programs for managing them), let us know
suggestions in the box (see below). what we’re missing out on. Enjoy Ubuntu 22.04!
LOOKING ELSEWHERE?
Latterly there seems to have been a bit offer something which is hard to We’re excited to see more people
of a trend for Linux-leaning social media recreate on Ubuntu Linux, but ultimately trying Fedora. It’s now more accessible,
channels to announce they’re “no longer distros that depend on its packages, particularly as regards installing non-free
recommending Ubuntu” or other such infrastructure and documentation. software. Together with its rapid release
things. Reasons are varied, we suppose, Until now, perhaps. cycle this makes it a great platform for
but the triumvirate of Snaps, Wayland Mint’s latest Debian Edition (LMDE5) gaming. Well worth checking out if
and Gnome don’t seem to be to is rapidly gaining traction. Pop!_OS has Ubuntu is no longer serving you.
everyone’s taste. moved its PPA repositories away from
We’d still heartily recommend Ubuntu LaunchPad and is working on a new
to anyone, beginner or otherwise – as it Rust-powered desktop environment
“just works”. Even if you don’t like it, as (with a view to moving away from
we’ve seen it can be customised, Gnome). And Elementary OS has had its
extended or otherwise bashed around to own app store for ages and has likewise
your taste. Lots of the distros these sided with Flatpaks over Snaps. In sum,
channels recommend in Ubuntu’s stead if Ubuntu doesn’t do it for you, there are
are themselves based on Ubuntu – for plenty of derivatives you can switch to
example Linux Mint, Pop!_OS and without having to learn a whole new way Fedoras and the distribution of that name are all
Elementary OS. All great distros that of working. the rage right now.
Armbian 22.02
Jammy XFCE
Les Pounder takes a look at a distro that supports 64 different
Linux single board computers, and now he has to buy them all.
rmbian is a Debian-based distro designed as a
IN BRIEF
Armbian is a
A framework for many models of single board
computers (SBCs). Armbian is available for 64
framework from different SBC, some of which we’ve never heard of. No
which we can matter which SBC we chose, they all claimed to be
create our own lightweight, fast and secure. So with these bold claims in
distros for a mind, we fired up our trusty Raspberry Pi 4 for a test.
plethora of We chose the latest Armbian desktop release, Armbian
Linux SBC. 22.02 Jammy XFCE, which is based on Ubuntu 22.04
Supported by “Jammy Jellyfish” and uses the XFCE desktop
64 different environment. There’s another CLI release that provides
Linux devices, the bare minimum for a build. We tested Armbian on a As ever, YouTube playback on the Raspberry Pi 4 is bad. The best we
Armbian is a 2GB Raspberry Pi 4 running at stock speed, which is will get with 720p60 video is a slight stutter.
solid, no-frills 1.8GHz on our Pi because we have a later revision of the
distro that acts BCM2711 System on Chip (SoC). After updating the software repositories we set to
as a blank The boot sequence is typical Linux: just lots of text testing Armbian and because this is a Pi we wanted to test
canvas for our scrolling up the screen as the services and device drivers the GPIO. This is where we hit a problem. Raspberry Pi OS
projects. GPIO are loaded into RAM. The first boot sees a short users will be familiar with RPi.GPIO, PiGPIO pin factories,
support is interactive sequence where we create a root password, an but Ubuntu uses lgpio, which talks to Linux gpiochip
minimal and unprivileged user and a choice of shell: Bash or zsh. We devices and isn’t specific to the Raspberry Pi (remember,
streaming video chose the former. After a few moments the desktop Armbian covers 64 SBCs). Using lgpio with Python 3 we
is a slideshow, appeared and we saw the familiar XFCE desktop. Armbian can flash an LED, make connections with I2C devices and
but we get a comes fully loaded. There’s a web browser (Firefox) , a PWM. But for HATs and other add-ons that require
rock-solid base choice of terminal emulators (including Terminator, an old specific Python modules your mileage will vary. We used
to build from. favourite of ours), LibreOffice and typical desktop tools. our default test HAT – Pimoroni’s Explorer HAT Pro –
We ran a quick test of Big Buck Bunny, initially which uses a mix of I2C, PWM and digital IO, and this is
streaming the 1080p60 version that became a slideshow where things went wrong. The automated install script
as frames were dropped. Dropping the resolution to failed with multiple errors that we remedied, but Explorer
720p60 and it was a little better, 480p was great. This HAT’s dependence on RPi.GPIO killed our attempts.
issue isn’t linked to Armbian; even Raspberry Pi OS finds Don’t be put off by Armbian. It’s a solid base for
1080p60 a challenge. The desktop is rather utilitarian, but projects that don’t require the GPIO. Your embedded
that’s part of the charm. Armbian isn’t Raspberry Pi OS. systems will benefit from the stability. Build a server,
A simple, desktop Sure, we can use it as a desktop computer, and Firefox is appliance or kiosk with Armbian and you can port your OS
environment responsive enough even on our 2GB Pi4. We also did a to another SBC, and given the global chip shortage, this is
affords us a blank quick test of a 1GB Raspberry Pi 4, and the experience becoming more of a necessity than an option.
canvas from which
we can create
was less than stellar, with a lockup forcing us to reboot. A
our own custom
distributions.
2GB Pi should be the lowest spec to consider for the
desktop OS. CLI users should be fine with 1GB of RAM.
VERDICT
DEVELOPER: Armbian Team
WEB: www.armbian.com
LICENCE: GPL v2
Rating 7/10
Arducam Auto-focus
16MP Camera module
Quick-off-the-draw Les Pounder can’t shoot shots faster than this camera.
rducam’s latest crowdfunded camera features
SPEC
Sensor:
A the familiar official Raspberry Pi camera form
factor, but with an autofocus lens and a sensor:
Sony IMX519 Sony’s IMX519. This is even more powerful than the one
Optics: used in the official Raspberry Pi HQ camera.
Type 1/2.53 The case for the camera is sold separately, but if you
Sensor: can spare the extra £4.50 you’ll discover that it features a
4,656x3,496, 1/4-inch thread for tripods. The included CSI flat flex cable
16MP is the same as the one used with the official Pi cameras,
The Arducam is size-
Video: and it can be changed for either longer or shorter cables, compatible to the
1080p30, or used with converters if the Raspberry Pi Zero is your official Pi cameras.
720p60 device of choice.
F-stop: As you would expect from a Raspberry Pi camera, The same can’t be said for raspistill, raspicam and
1.75 the unit connects to the Camera (CSI) port alongside the PiCamera. They just don’t work with this camera, and
Focal length: HDMI port. In order for the camera to work, we need to that’s a real shame. Apparently a fix is in the works…
4.28mm follow a few simple steps to download and install a driver Arducam’s camera has much better focus than the
Focus: and then a tweaked version of libcamera. This has since fixed focus official V1 and V2 cameras, which have a 1-2m
10cm to infinity become the standard camera software on Bullseye, the to infinity focus range. So anything greater than 1-2m is
Size: latest Raspberry Pi operating system. sharp, but close up we get a blurred mess (unless you
26x24x18mm hack the lens). With Arducam and its autofocus we have a
Manually operated autofocus focal range between 10cm and infinity.
With the installation complete, we carried out a few During our comparison tests, we noticed an
tests, beginning with the “Hello World” test using unfortunate side-effect of installing the Arducam
libcamera-hello. We secured our camera into a tripod, software: it broke compatibility with the official Raspberry
pointed it at a suitable test subject, and saw that the Pi cameras. We tested our Bullseye and Buster test
image wasn’t focused. It transpires that the camera installations, both of which were running Arducam’s
focuses when the libcamera command is invoked with software, and sadly our official Raspberry Pi HQ camera
the --autofocus switch and it doesn’t constantly “hunt” wasn’t detected. There was a simple workaround, with an
or change focus as objects move around the frame. official fix out by the time you read this, so we’re told.
To refocus the camera we need to use an additional If you need the quality of the HQ camera and the size
switch: --keypress . Using this command we can arrange of the V1 and V2 official cameras, then Arducam High-
the subject to be captured, then switch to the terminal Resolution Auto-focus Camera is for you. The size and
window and press f then Enter to refocus the camera. shape of the camera mean that it can be a drop-in
Out of the box Raspberry Pi OS Buster couldn’t detect replacement for bird cams, wildlife trails and openCV
the camera and these commands fail. The same is true robotics projects. Autofocus, the key selling point, is great
with the popular Python PiCamera library. We performed and while it may not constantly set the autofocus, focus
the same install process as we did with Bullseye and time is fast. In fact we accidentally took a focused image
libcamera detected and used the camera with no issues. in 1/100th of a second, zoooom!
VERDICT
DEVELOPER: Arducam
WEB: https://shop.pimoroni.com
PRICE: £24
PIBRELLA
Build a Python-based
reaction game
Les Pounder goes back to the early days of the Raspberry Pi to
look at a board that made a big difference to his career.
will read “0” but when pressed they will read “1”, as
described by the following:
p1 = pibrella.input.a.read() Powering
p2 = pibrella.button.read() Pibrella should
We next use a conditional test that uses two if always be via the
conditions to check the value stored in the variables p1 onboard micro
and p2. If p1 (player one) variable is storing “1” then we USB port. This
know that they pressed the button first. If that is the provides power
case we’ll blink the yellow LED using Pibrella’s blink to the Pi and
Pibrella, while
function. We set the duration on and off to be 0.5
also providing a
seconds. Then the code will pause for five seconds small amount of
before we break out of the main loop. protection when
if p1 == 1: using high-
pibrella.light.yellow.blink(0.5,0.5) current draw
sleep(5) components
Pibrella makes electronics simple. We can even use it with ScratchGPIO
break such as motors.
to make electronics projects in a block-based coding environment.
The same test is performed for player two, but this
time the red LED will blink.
from time import sleep if p2 == 1:
import pibrella pibrella.light.red.blink(0.5,0.5)
import random sleep(5)
Create a variable, time, which will store a randomly break
chosen number between 5 and 10. This will make our Pibrella’s buzzer can produce simple sounds at
reaction game a little more challenging because we varying frequencies. It won’t produce high-quality
don’t know when the LED will light up. music, but with a little practice you can get a tune out
time = random.uniform(5,10) of it. Luckily for us the Pibrella Python library has two
Using the randomly generated number we tell the tunes – success and fail – that we can drop into our
code to sleep (pause) and then turn on the green LED, game. Now out of the while True loop, we’re going to
our trigger for the reaction game. play a “success” tone to signal game over.
sleep(time) pibrella.buzzer.success()
pibrella.light.green.on() To finish, we tell the code to pause for two seconds
Next, create a while True loop to continually run the before turning all the LEDs off, which will signify that the
code within. game has ended.
while True: sleep(2)
Now we read the two buttons for player one and pibrella.lights.off()
two, then store the values in variables p1 and p2. Player Save the code as reaction.py and then run the game.
one is connected to Input A, and player two is using After a random amount of time, the green LED will turn
Pibrella’s button. For both buttons we use the loop to on and then it’s “fastest finger first” to press your button
continually read the state of the inputs. By default they and win the game!
GET PACKING!
Keen to give back to the FOSS community, but don’t know where to start?
Mike McCallister shows you one way to do a good deed.
ave you ever seen a nifty on a cloud server (or their own server) and packages from a single source. Today OBS
so we’ve checked openSUSE 15.3 and Tumbleweed. Patch0: If the package includes a patch, include the
Just for fun, let’s pick Ubuntu too. URL for this patch.
Architecture: The architecture of the processor your
Here comes the paperwork! package will run on, such as x86_64 for a 64-bit OS.
Now comes the hard part: filling in the config files. We’ll Only if your code is compiled for a specific architecture.
start with the RPM. How does OBS know how to build BuildRequires: The packages needed to create the
your software correctly? You tell it in the SPEC file. build. If the program was written in a compiled language,
The SPEC file is a set of “directives” where you tell like C, you may not need to fill this directive if you only
OBS about your program and how it should run. It has need a shell/ubiquitous packages, to build the software.
two sections: a Preamble with metadata, and a body Requires: Another list of packages the user’s system
containing the build instructions. You’ll fill out the details needs to have for the package to run.
of your package’s SPEC file. This is best done on your The body of your SPEC file has just a few directives
system. SUSE contributed a way to generate a new for the build system.
blank SPEC file to use in packaging with OBS. Run %description: This is your marketing piece. Unlike
rpmdev-newspec <program name> and open the the one-line Summary in the preamble, here you can
SPEC file in an editor. include whole paragraphs of information.
The top of the file (the “preamble”) includes %Prep: A shell script or a set of commands to pull
descriptive metadata information important to the user your project from its archive and prepare it for building.
considering installing your software: %Build: Assuming your program is not just a shell
The first three fields, Name, Version and Release are script, use this directive to identify the right commands
required, and together form the elements of your to build the software to machine code or byte code.
package’s file name. %Install: How to copy your build artifacts from where
Selecting a
Summary: This single line offers a concise statement the build happens to /rpmbuild/BUILDROOT (more on
repository in OBS
equals building a of what your application does. this directory later).
package for that Licence information: What licence covers this %Check: Commands to run unit tests and other
distribution. The package, whether it’s the GPL, LGPL, MIT, or whatever. sanity tests before releasing the package.
distributions you URL: A link to the package’s website, where users %Files: The list of files to be installed.
can choose from
goes far beyond
can get more information on the program. There’s %changelog: If this package is an update/upgrade
OBS sponsor also more technical information in the preamble. from a previous version, list the changes here.
OpenSUSE. Source0: The path or URL that leads to your tarball. Here is what a complete SPEC file for a C language
program, from the RPM Packaging Guide: https://rpm-
packaging-guide.github.io/#working-with-spec-files
Name: cello
Version: 1.0
Release: 1%{?dist}
Summary: Hello World example implemented in C
Licence: GPLv3+
URL: https://www.example.com/%{name}
Source0: https://www.example.com/%{name}/
releases/%{name}-%{version}.tar.gz
Patch0: cello-output-first-patch.patch
BuildRequires: gcc
BuildRequires: make
%description
The long-tail description for our Hello World Example.
%prep
OBS PACKAGING RESOURCES %setup -q
%patch0
Want to learn more about packaging and the Open Build Service? %build
The OBS Documentation space (https://openbuildservice.org/help) make %{?_smp_mflags}
has manuals, videos and slide shows to help you use the system. %install
OpenSUSE’s Build Service portal (https://en.opensuse.org) %make_install
Portal:Build_Service offers information for new packagers and %files
developers. Do check out the Build Service Tutorial at https://en. %license LICENSE
opensuse.org/openSUSE:Build_Service_Tutorial, too. %{_bindir}/%{name}
The RPM Packaging Guide at Github https://rpm-packaging-guide. %changelog
github.io walks you through a standard process, minus OBS. * Tue May 31 2016 Adam Miller <maxamillion@
Red Hat offers a chapter of its manual on packaging and fedoraproject.org> - 1.0-1
distributing software. See https://red.ht/3vl0R3d. - First cello package
Debian provides help at https://wiki.debian.org/packaging/intro for Ubuntu (and Debian) packages are more complex to
packaging newcomers. Seven ways to set up Debian Unstable (aka create than RPMs. Instead of a single SPEC file, you
sid): https://wiki.debian.org/Packaging/Pre-Requisites. need a batch of text files that sit in a separate /debian
Finally, Ubuntu will also help you with its Packaging Guide at folder of the package. In the directory containing your
https://packaging.ubuntu.com/html/index.html. tarball, create a /debian folder. Open your editor and
create these required files:
The second and following paragraphs describe the 2 Click Software Repositories.
Package: The name of the binary package. The name 4 Choose Specify URL from the list. Click Next.
might be different from the source package name. 5 Type a name (My OBS Repo) and the complete URL.
Architecture: The architecture of the processor your Note that you can’t add the repo until there’s a package
package will run on, such as x64 for a 64-bit OS. Debian stored there.
works on about a dozen computer architectures in total, YaST will check your type of repository and check
so this architecture support is crucial. its license before adding it to your system. For Ubuntu/
Depends: The list of packages that must be installed Debian users, you can add your repository to the apt
for the program in the binary package to work. sources.list.
Description: The full description of the binary First, open your browser to identify the mirrors
package. As with its RPM counterpart, it should be where your repository is stored: http://download.
opensuse.org/repositories/home://<username>://
<project>/Ubuntu_22.04/Packages?mirrorlist
Pick a mirror from the list, and add it to /etc/apt/
sources.list. To install your new package, run your
package manager as you would for any other package.
And there you have it. You have joined the
community of Linux software packagers, and taken
the first step toward becoming a package maintainer.
Maintainers commit to keeping that package updated
for their distro by working with the upstream developers
to keep the software up-to-date. They are important to
The OBS shell client, osc, generates this SPEC file. However, you have any vital distribution, and often honoured members of
to fill in the values and upload it to your OBS project. the development team.
EPY
Credit: https://github.com/wustho/epy
Bringing stories to
the command line
Shashank Sharma knows that the Linux CLI, once seen as the domain of
the uber geek, also serves as the pathway to the myriad worlds of stories.
popular quote, often attributed to Albert formats, we’ll also discuss ebook-convert, (see below left)
Keybinding Function
t Open table of contents
c Change colour
n Go to next chapter
p Go to previous chapter
d Define word
b Add a bookmark
B List bookmarks
command epy princess opens the first book in the Even if you make
/ Regex search series, while epy swords opens the eighth book in the no changes, go
through the
M View metadata information classic pulp fantasy series.
~/.config/epy/
configuration.json
Start reading Configuration file for an idea of
The epy tool remembers your reading history, so you One of the greatest joys of reading is expanding one’s the features on
don’t have to specify the complete path to the ebook vocabulary. But this only works if you can quickly look offer, such as text
to speech and
each time you launch epy. Instead, you can run the epy up the meaning of new words in a dictionary. Thankfully, mouse support.
command, and the project automatically opens the last epy supports tools like dict and wkdict, which you’ll find
ebook you were reading, at the location where you left in the software repositories of most popular desktop
off. Even better, when you specify the path to a book, distributions. Once installed, you can edit the ~/.config/
epy will open at the position where you left off. For epy/configuration.json configuration file and make the
instance, if you’ve just started chapter seven of book A, necessary changes. Look for the "DictionaryClient": In addition
and then read three chapters of book B, when you open “auto”, line and change “auto” to the name of the to Project
Gutenberg,
book A again, epy will open it at chapter seven. dictionary tool you installed. Because we installed dict
there are other
You can access your reading history by running the on our test machine, we changed the line to
communities
epy -r command: “DictionaryClient": “dict”, . that provide
1 17% 11:29PM Apr 01: Works of Edgar Rice Burroughs When you now press d while reading a book, you’ll be access to public
- Burroughs, Edgar Rice... prompted to enter the word that you wish to look up in domain works.
2 3% 10:15PM Apr 04: Thuvia, Maid of Mars - Edgar the dictionary. See Global Grey
Rice Burroughs (/media/l... You can also change the default keybindings by Books (www.
3 20% 03:27PM Mar 27: The Gods of Mars - Edgar Rice editing the ~/.config/configuration.json file, which is globalgreye
Burroughs (/media/linux... also home to various other editable parameters. For books.com)
4 31% 05:57PM Apr 01: Swords of Mars - Edgar Rice instance, the epy tool utilises an animation when or Standard
Ebooks (https://
Burroughs (/media/linuxla... scrolling pages in the book. If you find the feature
standard
5 10% 03:27PM Apr 07: Llana of Gathol - Edgar Rice distracting, open the configuration file in your favourite
ebooks.org).
Burroughs (/media/linuxl... editor and change the "PageScrollAnimation": true, line If you’re
6 35% 03:27PM Apr 07: A Princess of Mars - Edgar Rice to “ PageScrollAnimation": false, . interested in
Burroughs (/media/lin... By default, the tool displays the reading progress at scholarly or
Each book in history is allotted a number. You can the top left corner, but this too can be turned off by academic works,
quickly open a book from the library using the assigned changing the "ShowProgressIndicator" line in the see HathiTrust
number with the epy <num> command. For instance, config file. (www.hathi
the command epy 4 opens the Swords of Mars book In addition to the variety of ebook formats, epy also trust.org), a
from our reading library. The epy -r command also supports working with URLs, so you can read books not-for-profit
collaborative
shows the progress as well as the date and time when directly from Project Gutenberg without downloading
efforts of
the file was last accessed. them first. The command epy https://gutenberg.org/
various
If you don’t like the idea of repeatedly looking up the files/1268/1268-h/1268-h.htm enables you to read Jules academic
reading history to confirm the assigned number before Verne’s The Mysterious Island without having to and research
opening a book, you can also use a match string to download an EPUB or MOBI format. Unfortunately, this libraries.
inform epy of the book you wish to read with the epy feature only works for books that have been properly
<string> command opens the book that matches the formatted in HTML, so you won’t be able to indulge in
specified search string. From our reading history, the fan fictions using epy.
CZKAWKA
Credit: https://github.com/qarmin/czkawka
of deleting them, this file will help you put back those before clicking Search. Again, files can be deleted or
files later if necessary. moved only. The Temporary Files search works similarly,
Click the Suppose you’re worried that deleting duplicates except it targets what the author describes as the
spanner icon could have ramifications for other applications. In that ‘most basic ones’ only. See the box (below) for his
to access
case, another option might be to replace unwanted recommended alternative for removing potentially
Czkawka’s
duplicates with symlinks or hard links, which will free up redundant system files.
settings.
If you’re drive space, but ensure no application loses access to At the bottom of Czkawka’s list of files it can fix are
nervous about the file. You’ll need to select at least two items in the tools for rooting out invalid symlinks and broken files.
accidentally group, and the first item in the list will be left unchanged, The Invalid Symlinks tool will display the symlink file
deleting the with any other selected items being replaced by name and folder, its destination path and the error type.
wrong file, tick symlinks or hard links as required. The good news is The Broken Files tool locates corrupt files and those
‘Move deleted that you’re not forced to apply one option to the entire with invalid extensions. Three file types are supported:
files to trash’ list. Simply select your target items for one action, images, archives and (if you’ve installed libasound2-dev)
and click Save process them, then move on to the next set of items. audio. Czkawka tests each file by attempting to open it,
configuration to
assuming if an error is generated, the file is corrupt or
add a fail-safe
step against
Locate empty items unsupported. Where errors are found, try opening the
a potentially Czkawka offers two options for locating – and removing file yourself because it’s not a foolproof tool.
devastating – empty files and folders, one for each type. As with
mis-click. duplicates, a list of any offending items appear, and you Weed out visually similar images
can then double-click to open them to verify they’re Digital photography may have eliminated weak photos,
empty before proceeding to delete or move them. If an but chances are that’s at least only partly true because
empty file is linked to an application you’ve not removed you’re smart enough to take four or five shots each
– such as an empty log file – use DuckDuckGo to make time, ensuring at least one will be usable. But it’s all
sure you won’t break anything by removing it. too easy to leave the unwanted photos in place, even
If you’re looking to free up space in a hurry, you’ll as your hard drive steadily increases.
want to target the biggest files in your collection. At some point you should take the time to go through
Czkawka’s Big Files search will list the 50 largest files it them all, eliminating the unwanted shots. And that’s
finds by default, but you can adjust this figure using the where Czkawka’s Similar Images tool comes in, enabling
‘Number of shown files’ field above the results pane you to group visually similar photos (such as resized
versions or those containing a watermark) to choose
which one to keep.
The walkthrough (opposite) reveals how it works:
Czkawka generates individual hashes for each image
file using your choice of hash type, hash size and resize
algorithm. All but one hash type resizes the original
image to produce a smaller cache according to the
hash size (8x8 by default, but up to 64x64, which
means more accurate comparisons, so fewer matches,
but larger cache files and slower scan times).
There are also four resize algorithms to choose from
when resizing your image hashes. Of these, the worst
by far is Nearest, but otherwise there’s not a huge
difference. For most people, the defaults (Lanczos3,
hash type gradient, hash size 8) are sufficient.
Czkawka enables you to experiment with different
scan settings. It keeps separate cache files for each
setup, so once the initial scan is performed for each,
Giving your system files a proper cleanout? Then consider pairing Czkawka with Bleachbit. subsequent scans are much quicker. The latest version
JOYCE
Credit: www.seasip.info/Unix/Joyce
Using CP/M
We used the standard xjoyce command to load a
windowed version. On first boot Joyce will ask us to
set up a boot disk. Select “Set up boot discs properly”
It may not look like much, but CP/M is an easy-to-use and powerful and then in the next menu select Disc File… Our disc
A multitasking
operating system for Z80-based computers. file is CP/M. OS for CP/M-
CP/M was the only operating system that came with based computers,
and was under-powered for the time. This was the last the PCW8256/8512 machines. Given the low spec of SYMBOS is
model of PCW released, and Amstrad focused more on the machines it’s a natural fit. CP/M is still under fantastic. It eats a
lot of RAM, but for
consumer tech until its purchase by Sky in 2007. copyright, despite being very old. You can find .dsk the “cool factor”
images for CP/M to work with Joyce online, but finding it can have all the
Emulating the Amstrad PCW them is left as an exercise for the reader. Copy the CP/M RAM it wants.
The best emulator that we found for this task was Joyce
(www.seasip.info/Unix/Joyce). Installation is tricky
because there’s no installation candidate in the
repositories and so installation involves downloading,
extracting and compiling the emulator, but it does have
a few dependencies that we need to address: SDL,
libpng and libxml2. All of the files are in the Ubuntu
repositories.Download Arculator 2.1 for Linux. We
couldn’t do this via a browser, so we used wget.
$ wget http://www.seasip.info/Unix/Joyce/joyce-
2.4.0.tar.gz
Extract the files to a directory. Navigate to the
extracted files directory via the Terminal, update your
repositories and then install the dependencies:
$ sudo apt update
$ sudo apt install libsdl1.2-dev
$ sudo apt install libpng-dev
$ sudo apt install libxml2-dev
In the same directory as the extracted files we
configure Joyce based on our specific system:
$ ./configure
Now look for the file, which has the extension BAS:
dir
To launch the code in BASIC all we need to do is use
the BASIC command and call our file.
BASIC test.bas
We can also load the file inside the BASIC interpreter
using the load command.
LOAD “FILENAME”
Then we need to use RUN to start the code. A
quicker way is to just use RUN.
LOAD “test”
Using BASIC on the PCW is not as refined as the CPC
464, but it’s still a great experience. If you’d like to know
more then the complete manual can be found online at
https://bit.ly/lxf289-mallard-basic-pcw.
Playing a game
Let’s be honest, the PCW range was not marketed as
video games machines. However, the Zilog Z80 CPU
and 256KB of RAM means that it could produce some
decent games. Games can be found online, typically
The Joyce
using the DSK file format. They can be loaded by around £100, but they are worth the expense as the
interface is a
pressing F3 from Joyce’s main menu, then navigating original discs become more fragile. nod to the era it
to the disk image. Games will typically autoplay. As ever with retro hardware, make an informed emulates. There’s
From the list of games we tested we found a version purchase. Do your research and learn what perils a hidden menu
of 2048, the sliding tile puzzle game that was written in await those who make a purchase carelessly. A simple for tweaking
our setup.
2018. That was an addictive half-hour away from Wordle. capacitor replacement is an easy job, but older tech
We then spent far too long playing Sky War, a clone of often has hardware that’s irreplaceable, so make sure
River Raid. Even on the rather limited graphics of the to check before you apply the soldering iron.
PCW the sprite work was detailed and bold.
The Amstrad PCW legacy
The Amstrad scene It was never a gaming machine, but it never claimed to
If emulation has whetted your appetite for the real be. What the PCW range offered was a home office setup
hardware, then there are some bargains to be had. If you on a budget. They were a charming presence in home
don’t mind a “fixer-upper” then you can pick up an 8256 computing, where we had just enough power to realise
for around £50. Models in better condition go for over our ambitions. Fanzines, magazines, spreadsheets and
£100. There are RAM upgrades available for the 8256, word processing may sound dull by today’s standards,
bumping it up to 512KB of RAM. but just like BASIC provided a grounding for bedroom
Because the supply of three-inch disks is finite, and coders, LocoScript et al provided the foundation for
bit rot is bound to claim more disks, there are floppy writing and producing our own content.
drive alternatives to be had. Gotek is the name to look
for and these drives provide a means to load disk
images from USB. They aren’t cheap, coming in at HISTORY OF THE PCW
The founder of Amstrad, Lord Alan Sugar, reportedly sketched out the
original Amstrad PCW as a low-cost replacement for a typewriter. It
was a single-box design with integrated portrait display and printer –
largely because the biggest use for computers at the time was for
word processing. PCW stood for Personal Computer Word-processor,
while the printer was spun out as a standalone unit and a traditional
(due to cost) landscape display ended up being used.
The original PCW 8256 shipped in 1985 with a separate keyboard,
printer and a main unit with a 12-inch green monochrome CRT display
with an unusual 32 lines of 90 characters. This diverged from the
normal 25x80 character displays of the time.
The PCW 9512 was launched two years later. This device moved to
a white monochrome display and offered a parallel port, enabling non-
Amstrad printers to be used. This model survived until 1991 when the
PCW 9256 launched with a standard 3.5-inch floppy drive. The last
gasp was the PcW16 in 1995, which still ran a Z-80 CPU but wasn’t
Swapping disks is easy. Press F9 to open the menu, F2 for Disc, eject compatible with the PCW. It was a flop.
the current and insert a new disk to load your application or game.
Quote the Product code shown above and have your credit or debit card details ready
SUBSCRIBE!
Don’t wait for the latest issue to reach your local store –
subscribe today and let Linux Format fly straight to you.
Faster, cheaper and with DRM-free archive access!
3 GREAT
WAYS TO
SUBSCRIBE
Print, digita
l-only,
and print+d
igital
bundles!
HOME ASSISTANT
Credit: www.home-assistant.io
Did you miss
parts one or
two? Turn to
as smart as possible
Exploring NFC tags, energy monitoring and the Wireguard VPN to add
further capabilities to your smart home with Matthew Holder.
Linux, Windows, iOS, Android and Mac OS. Some router be forwarded to the device running Home Assistant. This
firmware also contains support for the solution. differs for all brands of router, so DuckDuckGo will be
To be able to create a secure VPN connection your friend for this step. A static IP address will be the Visit www.
between the Home Assistant instance and another best option for the device running Home Assistant so mylocalbytes.
device, a few things need to be configured. First, the that there aren’t issues when the DHCP address com to buy
WireGuard add-on will need to be installed. To do so changes. Please note, that any port being forwarded smartplugs with
navigate to the Add-On store and install the WireGuard into your home network can be a security concern, even open source
add-on, making sure to set the Start at boot, Watchdog if being used with a VPN. A more secure method would firmware.
and Auto-update options. be to use Nabu Casa, but this is an option that requires
Start the add-on and then move on to the a paid subscription.
configuration. It’s likely that your home network has an
IP address range of something like 192.168.1.0/24. This Configure your client
means that there’s scope for 255 IP addresses on the The final step to getting the VPN fully configured is to
network, which should be fine for most. The WireGuard set up your client. For an Android phone, for example,
network will need a completely separate range to avoid download and install the WireGuard app from the play
any conflicts. The 172.27.66.0/24 range will be suitable store. From within the app, click the plus button and
in most cases and this is the range that will be select the option to start from scratch. Now, from within
described below. Part of the setup required for the VPN Home Assistant, open the Studio Code Server add-on,
is to configure a DNS server to use for the remote navigate to the SSL/Wireguard directory and open the
clients. This could be your home router, Google’s DNS client.conf file within the directory, which is named after
server or perhaps even an instance of AdGuard Home, the client being configured. Enter the details and then
which is another add-on that is available and can
provide DNS filtering to block ads and can support basic
filtering for other users in the household. TAKING THE TASMOTA ROUTE
Step two is to configure the “server” side of the
connection. Copy the below YAML into the configuration Tasmota is an open source project that provides alternative firmware
box of the Add-Ons configuration page and adjust the for ESP8366 and ESP32 devices. The project provides a way to run
text accordingly. firmware that ensures that all data is kept local to our networks. When
log_level: info installed, access is via a web browser, MQTT, web requests and serial.
server: The support for MQTT allows for very simple integration with Home
host: <DNSADDRESSHERE> Assistant. Upgrades are provided Over The Air (OTA) and are simple
addresses: to perform from the built-in web interface.
- 172.27.66.1 Support is provided for a wide range of hardware and the Tuya-
dns: convert project can be used to reflash devices that are produced
- 1.1.1.1 by Tuya and are sold as rebranded devices across the world. Tuya-
- 1.0.0.1 convert supported devices will most likely use the Smart Life or Tuya
peers: Smart mobile apps for configuration of the pre-installed firmware.
- name: <DEVICENAME> It’s important to note that there can be serious safety issues when
addresses: considering reflashing any devices that are connected to mains
- 172.27.66.2 voltages. A safer option is to purchase devices pre-installed with
allowed_ips: [] the firmware, such as smartplugs (see Quick Tip, above). Tasmota
client_allowed_ips: [] has built-in support for GPIO pins (both analogue and digital),
The peers section of the YAML above refers to a displays, IR communication, I2C interface, lighting of different types,
client and as many of these can exist as required. For temperature sensors, RF communication, Bluetooth and much more.
each of the peers configuration is generated. Each peer
or client needs an IP address assigned to it as well as a
name. The allowed_ips and client_allowed_ips section
provides a way of restricting IP ranges that the client
can access and vice versa. These can be left blank to
allow access to and from all devices. The server section
of the configuration requires an IP address to be set and
this needs to be on the same range as the clients. DNS
refers to the DNS server used and can be your home
router. Finally, the host section refers to an address that
can be used to reach the installation from the internet.
Assuming a dynamic IP is provided by your ISP, there
are multiple services that enable a client to report to a
web-based service and this can then provide a DNS
address to a changing IP. With this configured, the
next stage is to restart the add-on. This will force the
container to build a new config for any new peers that Tasmota MQTT
configuration
don’t currently have the relevant information available. (left) and
Before configuring the client, port forwarding will status page
need to be configured on your router so that traffic (right).
destined for your DNS name can arrive at the router and
first will detect when the power consumption rises for a albums, based on which tag is scanned. Imagine a book
number of seconds and it will then set the value of the of album covers, each containing an NFC tag. Tags can
Helper to InUse . The second automation will fire when also use QR codes, so experiment with these before NFC tags can be
the power consumption drops to a low value for a purchasing NFC tags as this may be as convenient. used to interact
number of seconds and will use a condition of the To create a QR code, navigate to Configuration>Tags with Home
Helper being set to InUse . When this second >Add Tag and give the tag a name. Once generated, the Assistant using
automation fires, the value of the helper can be set back QR code will be shown in the list and when the cog icon the phone app
www.home-
to NotInUse and then a notification sent to Telegram or is selected a QR code will show, which can be printed
assistant.io/
a Google Home/Nest device – see last month’s article and used anywhere around the home. An automation
blog/2020
for further details about verbal and textual notifications. can be created by clicking the icon of the Android, next /09/15/home-
Create the first automation and set the Trigger to be to the newly created QR code. When scanned, the QR assistant-tags/
of type Numeric State. Add the relevant entity, which will code will call a URL within the Home Assistant system,
be something like sensor.tasmota_energy_power. Set which will trigger the relevant Automation.
the For box to be 30 seconds. In the Above box, set a For this example, a notification will be sent to a
realistic value, such as 20. Set the condition to use the registered Google Nest device. When creating the
value of helper being set to NotInUse . In the Actions Automation in this manner, the trigger section is
section set the Action type to Call service, the service to already populated. Add any conditions and set an Action
Input select: Select and the entity to the relevant Helper. to call a service and assuming that last month’s tutorial
The Option box can be changed to InUse . has been followed, add the service type to be tts.
Create the second automation and set the Trigger to google_translate_say. In the Entity box select the
be of type Numeric State. Add the relevant entity, which relevant device and add a relevant message. Save
will be something like sensor.tasmota_energy_power the automation and then scan the QR code. Home
and set the For box to be 30 seconds. Set the Below box Assistant will then perform its magic and the automation
to be a reasonable value, such as 3. Set the condition to will fire and the message will be audible from the
use the value of helper being set to InUse . Under the relevant speaker.
Actions section, set the helper value to be changed to This is the final article in the series on Home Assistant
NotInUse . Now you can either set a further action to itself. There have been a lot of concepts introduced over
notify Telegram/Google Home/Nest device that the the past three issues, but this will hopefully have given a
device is no longer operating or, if you want to place good grounding into such a large project. Hopefully now
further conditions on when the notification is sent, you’ll find it straightforward to develop your own ideas
create a third automation with a Trigger of the Helper into captured data and automations.
changing from InUse to NotInUse with Conditions In the following two issues, projects will be discussed
containing the times that the automation should fire. that integrate nicely with Home Assistant. The first is
ESPHome (also developed under the NabuCasa
Automation debugging
4 NFC has revolutionised a number of industries
umbrella) and this provides a way of generating
firmware for small microcontroller devices, such as
from payments to file transfers to retail. RFID tags are the ESP8266 and ESP32 devices. This allows for
even used by some Bluetooth peripherals. With a “satellite” data collection devices to send data to the
smartphone or standalone reader these tags can also central Home Assistant server. The second article Using the clock
be used with Home Assistant. Tags are programmed will cover WLED, which is used to install on a icon next to each
automation,
and automatically registered with Home Assistant microcontroller board and provide a way of controlling
it is simple to
and automations can then be fired when devices are individually addressable sets of multi-colour LEDs. See troubleshoot
scanned. These tags can be used to arm an alarm, you next month! any problems.
send notifications, start timers and more.
The first step to using tags is to decide which ones
to buy. This author has used fairly basic MiFare tags
before, but before heading to your favourite online
marketplace, check which your chosen device supports.
It’s also possible to make your own standalone reader
using a PN532 circuit board and microcontroller
(https://github.com/adonno/tagreader).
Install the Home Assistant app from the app store and
register with your installation. When your new tags
arrive, make sure NFC is enabled on your phone and
open the Home Assistant app. Open the Configurations>
Tags option and add a tag. Give it a descriptive name,
select Create and Write and scan the tag. This will then
register the tag and when scanned a URL is visited in
Home Assistant, which can then be used. For example,
there could be a tag by the TV, so that when scanned, if
the sun has set, an evening scene can be activated to
dim the lights. Tags could also be used to play certain
WINE
Credit: www.winehq.org
Wine Prefixes
Wine gives some scope for taking advantage of its
facilities for remapping directories by using the
wineprefix environment variable. If we had run
$ WINEPREFIX=~/wineprefixes/nppprefix wine ~/
Downloads/npp.8.3.2.Installer.x64.exe installed, a desktop shortcut is typically created along The command
then a complete Windows file system would have been with an icon within the Windows application launcher. ‘wine explorer’
launches a simple
created in the ~/wineprefixes/nppprefix directory Wine simulates a similar setup, but how this is file manager,
before running the executable. There’s no need to make presented to you depends on the desktop environment which gives you a
your custom prefixes hidden directories (with a dot at that you’re running. Most of the time, the application clear view of the
front of the name) just because Wine defaults to that. that you’ve installed should be available from within file layout that
Wine sees.
The prefix feature is ideal for situations in which you the application launcher of your chosen desktop
want to set up a separate Wine environment with its own environment alongside your native Linux software.
settings and support files for a program or a type of In addition, a .desktop file is placed in the ~/Desktop
program such as games. Each prefix directory has its directory. This is a text-based file that’s sometimes
own configuration. You can browse the files within a worth examining in a text editor if you need to find out
prefix in the normal way by navigating your file manager where the program is located or how it’s launched.
to the prefix subdirectory, be it in the default ~/.wine
subdirectory or that of a prefix you created. Command Line
You can even place a Wine prefix on a completely Some Windows programs, such as some games, require
Some Windows
separate drive. For example, you may have a speedy command line flags to be passed to them. To do this,
programs come
SSD as your boot drive coupled with a larger navigate to the directory containing the executable and in the form
mechanical drive. To make a given prefix the default one, then pass the command flags at the end of the Wine of .msi files,
export the WINEPREFIX variable by adding a line to command. To discover the location and name of the which aren’t
your .bashrc in your home directory such as: executable of an installed Windows program, load the executables.
export WINEPREFIX=~/ext_drive/WindowsGames associated .desktop file from your ~/Desktop/ directory To run these
and look at the exec and StartupWMClass fields. installers under
Running Windows Programs If you had a game executable called game.exe and Wine use the
Once an application is installed, it should function as a you needed to pass the flag -disablenetworking to it, wine start
[name of .msi
normal Linux application in terms of how you access it. you would navigate to that directory from within a
file] command.
On a real Windows system, once an application is terminal and type:
ALTERNATIVES TO WINE
The most obvious alternative to running and resource hungry in themselves. compatibility are better under Wine
a Windows application or game under For playing video games, it’s a toss-up because the intensive hardware
Wine is to use a virtualiser such as as to whether performance and requirements that games require
VirtualBox or VMWare. Virtualisers such expose the weaknesses of virtualisers.
as these emulate the hardware of an In addition, in many cases a virtualiser
entire PC and can run Windows. In some is unable to expose as extensive a
cases, this gives a better chance of selection of graphics card facilities
running an application successfully as Wine.
because you’re technically running the Wine has been made possible due to
application under the operating system the fact the Windows API (Application
that it was designed for. Programming Interface) is well
In addition, aspects such as DRM can documented. ReactOS (https://reactos.
throw a spanner in the works when it org) takes things a step further by
comes to compatibility through Wine. reimplementing not only the Windows
You lose a lot of the integration API, but also implementing a Windows-
convenience of running an application compatible operating system and has
under Wine, and VMs are cumbersome ReactOS running in a VirtualBox virtual machine. taken great strides in recent years!
$ wine game.exe -disableworking that area of your system. Drive z: is linked to the root of
Remember that Windows applications make use the Linux filesystem, but with the same access
Note that Wine’s of a single dash character before a non-abbreviated privileges as a normal user. You can safely remove this
prefixes don’t command line flag, unlike Linux tools that would use a drive, but you’ll no longer be able to access Linux files
really constitute double dash instead. outside of the given Wine prefix.
a sandbox, Typically, you’ll end up trying a few different things
as such, before you find a command line sequence that correctly Winetricks
because Wine configures a Windows game. Going back to the .desktop Winetricks is a helper script that has different facilities
applications file, you’ll notice that it actually launches the desktop for improving the experience of running Windows
can still access link within the emulated Windows file system rather programs under Wine. It’s usually installed along with
the Linux
than running the executable file itself. Like a lot of Wine, but if not, search for it in the package manager.
environment.
Windows resources, these links aren’t flat text files. For Typically, when you run a specific Winetricks option it
this reason, although you can alter the link to add the will install libraries and other program resources under
command line option, it’s often easier to create a Bash the currently selected Wine prefix. Therefore, all
script. For example, you might create a launcher script programs that run from that prefix will benefit from the
in a text editor along the lines of: resources you added with Winetricks. Most Winetricks
cd ~/.wine/dosdevices/c:/Program Files/GreatGame/ usage examples run from the command line, but if you
wine greatgame.exe -skipintro run Winetricks without any command line options, it’ll
Save it with a .sh extension. You can leave it in your launch into a GUI. From here, you can browse through
home directory for easy access, but we like the location its various options to start building up a picture of what
of ~/.local/bin/ for user scripts because they’re Winetricks is capable of.
available from any location, they are backed up with Winetricks comes into its own when fetching and
backups of your home directory and root access isn’t installing resources needed to get programs working.
needed to create or edit them. It’s even possible that Windows users would regard
Just remember to run $ chmod +x [name of Winetricks with envy because they’re used to having to
script] on it to make it executable. hunt down packages by hand, downloading from what
they hope is a safe website and installing them manually.
Configuring Wine In many cases, you can find out what Winetricks
Rather than using text-based configuration files, Wine command sequence is needed by Windows programs
breaks with Linux tradition by storing configuration by searching the Wine Application Database (see box,
details in a binary file called the registry, a technological opposite). As a simple example, one of the first things
approach that it shares with Microsoft Windows. If you many users do to improve the look of Windows
find a tip for getting a specific program running that applications is to install the Corefonts package to their
involves editing the registry, you can invoke the registry Wine prefix. To do this, run the following command:
editor by typing wine regedit . However, most $ winetricks corefonts .
configuration of Wine is carried out using a GUI utility As often happens with Winetricks, this script takes
called Winecfg. If you run winecfg from the command a long time to complete, but it does hunt down the
line or an application launcher, it edits the configuration individual files that are needed and install them.
located in the default Wine prefix. It’s common to take Naturally, you can use a custom prefix with the
advantage of that fact when creating a new prefix. You Winetricks command so that you can have different
could create a prefix just for games by typing resources available to different setups on your system, a
$ WINEPREFIX=~/WindowsGames winecfg difficult thing to set up on a real Windows system.
Next, you’d place WINEPREFIX=~/WindowsGames As an alternative to using the GUI, type $ winetricks
before a command that launched the given Windows dlls list to get a list of all of the DLLs and frameworks
application. It’s usually worth the hassle of creating that Winetricks can download and install, a useful
separate prefixes for categories such as games. For one starting point if a program says it can’t find something.
thing, it means that you can back up your Windows For example, if a program complained that it couldn’t
programs and carry them between different Linux find a DLL relating to Visual Basic, you could type:
installations without having to reinstall them every time. $ winetricks dlls list | grep -i “visual basic”
The default font size tends to be a bit unpredictable for a case-insensitive search of the complete list. Type
when running Windows applications. This is something winetricks list for a list of all categories of things that
you can check and adjust by running Winecfg. Under the Winetricks can install.
Graphics tab, alter the ‘Screen resolution’ slider until the
example text provided is of comfortable size. Click Apply
or OK when you’re happy with your selection, but you’ll
have to restart Winecfg or running Windows software to
fully test out the selection.
As we mentioned earlier, by default, Wine sets up a
directory (~/.wine/drive_c) that simulates the C: drive
of a Windows system, and you can add extra drives
under the Drives tab of Winecfg. This is handy for
directories that you want to have within easy reach
of your Windows applications and games.
A word of warning here: every time you add a drive, Notepad++ uses a fairly typical Windows installer executable.
you’re potentially giving Windows programs access to In this case, we largely accepted the defaults and kept clicking Next.
SOFTWARE COMPATIBILITY
The Wine Project hosts a database where users can report their
experiences running applications and games under Wine (https://
appdb.winehq.org). In particular, it’s important to check the database
if you’re considering investing money in a Windows program. Even if a
program appears to launch properly when run under Wine, it’s worth
checking to see if there are any gotchas in store when you try to
access certain features.
The Winetricks GUI version is a good way to acquaint yourself with
Some reports feature tips and tricks to get the program going,
what it can do and browse its features. depending on the specific version too, and it’s well worth expanding
the Comments and How To/Notes sections at the bottom of the page
To investigate installing Windows games, we started for extra information about getting programs working.
with Fallout Tactics: Brotherhood of Steel (2001), which If you’re having difficulties running a particular program,
we purchased from the Good Old Games website (www. particularly one of an older vintage, it’s sometimes worth causing
gog.com). Good Old Games makes an effort to provide Wine to simulate an older, 32-bit version of Windows. Consider the
the games with the copy protection and DRM (digital following command
rights management) removed, and this is welcome on sequence:
Linux because DRM often causes more headaches than $ WINEARCH=win32
any other issue when running games under Wine. In WINEPREFIX=~/wine32
fact, ancient DRM systems often prevent older Windows winecfg
games from running on newer versions of Windows. This creates a new prefix
In the case of that particular site, it’s often possible called wine32 in the home
to download a .zip file containing the files for a given directory and specifies that
game. In this case we could only find an .exe installer. this prefix should be
Our experience with the GOG installer has been that it configured to simulate a
generally works under Wine, but tends to throw up the 32-bit version of Windows
odd error. Game installers often want to install various and then launches Winecfg.
extra resources, adding Lord-knows-what to the system Subsequently, it’s possible
– a fact of life that Windows users just have to learn to to select an older version of
live with – and this makes using a Wine prefix a good Windows, such as Windows
idea for games. Selecting a 32-bit prefix and then selecting an 95 under the Applications
We started by creating a Wine prefix on an older, earlier version of Windows in Winecfg. tab in Winecfg.
secondary hard drive to save space on our boot drive,
and then we launched the GOG installer for the game:
$ WINEPREFIX=~/olddrive/WinGames wine What we ended up with was a startup script that
setup_fallout_tactics_2.1.0.12.exe looked like this:
This installation took quite a while, and at one point, cd ~/olddrive/data/WindowsGames/drive_c/GOG/
another window popped up requesting to install some FalloutTactics/
Microsoft support files, which we allowed it to do. As WINEPREFIX=~/olddrive/data/WindowsGames/ BOS.
ever, we simply clicked OK when the Good Old Games exe
installer threw up some errors, with no obvious ill- Given the tactical nature of the game, it was worth
effects. A tip we can offer you here is to change the experimenting with running it in a window. Because it
default suggestions for installation directories as wasn’t an in-game option, we ran $ WINEPREFIX=~/
Windows installers love to add spaces to filenames, olddrive/data/WindowsGames/ winecfg and selected
which can be awkward to deal with. ‘Emulate a virtual desktop’ under the Graphics tab. This
One problem with installing a game to a custom runs full screen Windows applications in a window. In
prefix is that the launch icon isn’t added to the launcher our experience, setting the game resolution in the game
of the desktop environment. If you think about it, there’s itself overrides the resolution you’ve selected in this
no way it could because custom prefixes enable you to dialog, so don’t worry about getting an exact match.
install more than one version of a program at once. This
gave us some extra hassle of having to navigate to the Stop wineing
installation directory within the custom prefix we’d set Hopefully, we’ve given you an introduction to the basics
up. Once we in there, we ran: of operating Wine. It can sometimes require a bit of
$ WINEPREFIX=~/olddrive/WinGames wine FOT_ experimentation to get a Windows program working,
HiRes_Patch.exe and of course, it’s always better to use a real Linux
to apply the high-resolution patch that Good Old Games program that does the same thing, if it’s available.
provided with the game. It was smooth running from However, thanks to features like Wine’s prefixes and the
there on, and we found that a resolution of 1,280x768 Winetricks script, Wine can sometimes make working
provided the best compromise of graphics size while with Windows applications and games more organised
fitting on a modern, 22-inch monitor. than real Windows does.
RAINLOOP
Credit: www.rainloop.net
mail is the king of online communication. Even provider and carry on as normal.
the questions and select the domains for which you _dmarc.lxf.guru TXT v=DMARC1; p=reject;
want SSL certificates, and when prompted, choose rua=mailto:david@lxf.guru; fo=1
Set up different redirect to ensure that all HTTP traffic is redirected to This relates to the DMARC policies, and having a text
alias users HTTPS. Check that this has worked by visiting your record which states what should happen to emails
to give as an domains again and noting the presence of the tiny which supposedly arrive from your server but don’t pass
address to padlock in the URL bar. certain validation tests, means that your mail is more
shops, signups, likely to be successfully received.
and companies.
You’ll know
The easy bit... In this record, we have set instructions that if the
With the basic preparation out of the way, it’s time email doesn’t match our DKIM (Domain Keys Identified
who leaked,
when the for what would normally be the hard part – installing Mail) record and SPF (Sender Policy Framework), it’s to
address starts and configuring dovecot, postfix, openDKIM, and be rejected. Each email you send will cause the
catching spam, Spamassassin – but which, thanks to a handy receiving server to generate a DMARC report giving you
and can simply setup script, is now the super-easy part. its evaluation of your SPF and DKIM, and whether the
disable the user From your home directory, run: server is inclined to let your mail through or not.
when you no $ curl -LO lukesmith.xyz/emailwiz.sh You probably don’t need to read these reports, but
longer need If you want to see what the script does, and ensure that it’s good to be able to see if anything is going wrong. If
the account. you’re not dumping a bunch of malware on to your you do want to read the DMARC reports, change the
virtual machine, $ cat emailwiz.sh and take a look. We’ve mailto address to one that you’ll actually use.
read through it, and can assure you that at the time of In our new DNS record, we set _dmarc.lxf.guru as the
writing, the script is exactly what it appears to be. host, TXT as the type and then
Make the script executable with $ sudo chmod +x v=DMARC1; p=reject; rua=mailto:david@lxf.guru; fo=1
emailwiz.sh , then run it with $ sudo ./emailwiz.sh . as the value.
Choose Internet Site as the general type of mail Note: depending on your registrar, you may need to
configuration, and for the System mail name, put your delete the .your.domain from the host field, and use
domain name, for example lxf.guru. _dmarc instead of _dmarc.lxf.guru . Repeat for the
You’ll find that there’s just enough time to make a other two records and save. That’s it. Your email server
cup of tea as the emailwiz script does it’s thing, and is set up and ready to roll.
when you return, you’ll should find a success message, Adding email accounts is as easy as creating a new
along with some ASCII art spelling out NOW in big red user in the terminal and adding them to the mail group.
ASCII letters. Below this, you’ll see three lines of text. If, for instance your name was Fred, and you wanted
9.2 is a poor These are records which need to be added on your an email account on your spanky new themost.fun
score and results
from the lxf.guru
registrar’s DNS page, so head back over there, and server, you would pop into the terminal and type
being less than a select ‘Add a new record’. $ sudo useradd -G mail -m fred
fortnight old. For one of our records, the emailwiz output gives us: Create a password with $ sudo passwd fred and
you’re good to go.
If the fred user already exists then add it to the mail
group with:
$ sudo usermod -a -G mail fred
Remember that you’ll need to log out and back in
again to see new group memberships.
DON’T BE A SPAMMER
Official sources state that as of March being used as spam palaces by ne’er-do- both hourly sending limits and hourly
2022, spam emails constitute around wells. Gmail, for instance, will prevent BCC sending limits.
3,000 per cent of all internet traffic – you from adding more than 500 When you run your own email server,
encouraging users to purchase recipients for a single email and sending there are no such limits. You can send to
industrial-strength Indian Cialis and a more than 500 emails in a single day. If thousands of people at the same time if
range of other drugs, presumably to use you violate these limits then your Gmail you so wish. You can probably get away
while cavorting with all of the sexy account will be temporarily blocked, and with this exactly once before your
singles in our neighbourhood. if you repeatedly break the rules, you domain and IP address are blacklisted,
Large email providers take measures may lose your Google account entirely. meaning that you’ll never be able to have
to limit accounts on their servers from ProtonMail limits are even tighter, with anyone read your emails ever again.
MULTIPASS
Credit: https://multipass.run
techradar.com
THE BEST NEW OPEN SOURCE SOFTWARE ON THE PLANET
HotPicks
FireDM Mplayer Rnote Mailspring Airsane
Fbcat Topgrade Superdux Winterapples
Alexander Tolstoy
believes that we should
build better open source
applications instead of a
new iron curtain.
Casper-fs Zplora
DOWNLOAD MANAGER
FireDM
Version: 2022.2.5
Web: https://github.com
/firedm/firedm
ireDM aims to be the ultimate all-in-one suite
Mplayer is a
MEDIA PLAYER versatile player
that supports
almost any form
Mplayer of media.
Version: 1.5
Web: http://mplayerhq.hu
Take notes
NOTE-TAKING TOOL with ease and
comfort, add more
objects, scale and
Version: 0.3.5
Web: https://github.com/flxzt/rnote
R
unning Linux on a device with touch controls
reveals a whole set of extra usability
requirements. One of those is a high-quality
application for taking either hand- or finger-written
notes. We’ve been looking for a capable open source will looks as though they were made on paper. The
version, and have come to the conclusion that Rnote is program isn’t solely about writing, though – you can
perhaps the best option that’s available. It’s a sleek add pictures, too. Use any of the available selection
graphical tool that provides you with an endless canvas tools to move an object, scale or rotate it. Objects can
and some drawing tools. overlap but Rnote doesn’t enable you to either bring
We didn’t expect its set of tools to be that advanced, them to the front or push then into the background.
though. As well as a pen and a brush there are multiple To be fair, such functionality isn’t usually called for
selector tools, shapes, a dedicated marker tool, and of when taking notes.
course an eraser. The brush tool has extra settings that You can save your sheets in Rnote’s own format,
you may be interested in adjusting. For instance, there’s which isn’t XML-based and can be read again only by
the cool ‘textured’ mode, which activates the gear Rnote itself. The latest version of the program is 0.3.5 at
button below it with extra options such as density, the time of writing, and we failed to build it from source in
radius of dots and their distribution. Such fine-grain Fedora because it required the latest GTK 4.6 library.
controls seems more appropriate for a vector graphics Not a problem for a rolling distro with a bleeding-edge
package like Inkscape, or a drawing tool like MyPaint. GTK4, but if you don’t care about this then head over to
If you have a tablet with a digital pen, then you’ll have Flathub and get Rnote up and running with no delay. It’s
an even better experience with Rnote and your notes a really nice tool that’s worth a try!
Mailspring is
MAIL CLIENT compatible with
popular mail
services, and
AirSane
Version: 0.3.2 Web: https://github.com/
simulpiscator/airsane
A
irSane is an interesting piece of software
designed for use with image scanners. The
purpose is to let any device supported
by SANE and plugged into a Linux machine to be
accessible from MacOS and Android. In other words, if
you have a flat-bed scanner or a multi-function device
with a scanning feature that can be used with Linux,
you’ll also be able to scan over a network from other
operating systems (although not Windows).
AirSane’s target audience are people with several Mopria Scan app on Android. In addition, AirSane runs a AirsaneMake your
imaging devices shared across the home LAN using the web server at port 8090 for easy network scanning SANE-shared
scanner work
‘net’ backend of SANE. Indeed, scanning should work right from a web browser.
better with other
flawlessly between Linux hosts, but not for a Macbook Not every Linux user will own a flatbed scanner. operating systems.
or an Android phone. AirSane is a beautiful way to fix it. However, it’s good to know that there’s Linux support.
This software runs a server daemon, which publishes all AirSane is a great improvement on an already good
devices detected by scanimage using the Linux-native level of scanning support in Linux. For example, the
Avahi daemon via mDNS. The technology includes parts proprietary scanning tool VueScan for Linux won’t work
of the reversed-engineered AirScan communication with SANE-shared scanners right away, but thanks to
protocol used in Apple devices. Once AirSane is running, AirSane it will. Moreover, it’s possible to tweak various
all detected devices are exported and available for all colour settings by editing the /etc/airsane/options.conf
ImageKit-compatible tools on MacOS, and also for the file. Consult the AirSane documentation for details.
Fbcat
Version: 0.5.2
Web: https://github.com/jwilk/fbcat
he Linux text console may not look all that
O
ne of the well-recognised benefits of most
Linux systems is the streamlined and unified
update and delivery tools for managing
software packages, which also enable good
housekeeping with everything related to software
management. Let’s be honest, though: the situation and saved us from a lot of manual operations. As such,
isn’t that clear-cut these days because we have Snaps, it ran the updates for DNF, Flatpak, Rustup, Pip3, Docker,
Flatpaks, Appimages, plus a bunch of parallel package Firmware (fwupd) and Gnome extensions.
managers used by software developers, such as Pip, The list of items to update will vary depending on
NPM and Cargo. The problem is how to keep all that what’s installed on your system. Topgrade can handle
stuff up to date. The solution is Topgrade! most popular package managers, and it’s aware of
We were a bit sceptical about the usefulness of this tool dozens of modules, SDKs, managed repositories and
because unifying Linux distros, package managers, more. All of those work beyond Linux too, so that you
various frameworks and SDKs is a challenge in itself. can unify your upgrade procedures by switching to
However, Topgrade does a remarkably good job and Topgrade under Linux, MacOS and even Windows!
works very well. This tool detects every supported Topgrade is written in pure Rust, and therefore you’ll
package manager on your system and tries to run a need an appropriate toolchain to get it working. The
network update against it. It even doesn’t require any installation is simple. Run the following command:
arguments: the simple $ topgrade command does its $ cargo install --path .
job completely in auto mode. For instance, Topgrade did Then make sure you have $HOME/.cargo/bin in your
a lot of upgrade steps on our test Fedora Workstation PATH and you’re good to go.
Superdux
Version: GIT
Web: https://github.com/
snowymouse/superdux
uperdux is a new project for providing a
ARCADE GAME
Winterapples
Version: GIT
Web: https://gitlab.com/darkforce/winterapples
Casper-fs suggests
LINUX KERNEL MODULE a reliable low-level
way of hiding files
you don’t want
T
his isn’t the first time we’ve come across a file
management software intended to be used
inside a Linux terminal. There are lots of full-
featured file managers, like the classic twin-panel Far2l
(LXF280) and the VIM-style Ranger (LXF253). This time
we have a different tool that doesn’t run all the time, but $ xplora --extension .h --line-of-code
instead helps you on demand. This command will locate not just the *.h files in
Xplora enables you to sort and then display your current directory, but also in all subdirectories (add
files and directories structure. It sits between a super- -nr to run it in non-recursive mode). Xplora proved
charged ls and a tree-based file manager. The goal is to to be powerful and easy to fine-tune to specific tasks.
let you quickly assess the number of files and You can explicitly instruct it to ignore certain files
subdirectories and identify what’s using so much space. and even run a blacklist of such files (use -igp to
Normally Xplora displays the tree structure of the point to an .ignorepath file). Xplora’s output is neatly
current directory and then adds a table with some formatted and aligned. Subdirectories are displayed
relevant statistics, such as the number of elements and in green while files that match the filter are orange.
their total size. However, Xplora is capable of much To get Xplora, simply install the respective NodeJS
more once you become accustomed to its extra options. package from the public repository:
For instance, it can use filters based on file extension, $ npm install -g xplora
file size, date and time, and also calculate code lines. Be sure to explore the built-in help function and
The following example will reveal how many code lines discover even more features, including a custom start
are in header files: directory and more filtering options.
Develop Linux
Missed part
one? Turn to
page 62 to get
hold of it!
directory or a regular file. Our utility just prints This shows the
Rust code of
information on screen. So, compiling and using
which.rs that
fTypes.rs produces the following output: presents an
$ ./fTypes fTypes.rs implementation
fTypes.rs is a regular file. of the which
$ ./fTypes /tmp utility in Rust.
Rewriting UNIX
fTypes.rs is a directory. command line
$ ./fTypes /doesNotExist utilities is a great
The /doesNotExist path doesn’t exist! way to learn a
$ ./fTypes /dev/nvme0n1p2 new systems
programming
The first two commands generate the expected
language.
output when processing a regular file and a directory,
respectively, whereas the third command shows what
kind of output to expect when the provided path cannot
be found. The last command shows that you obtain no
output when the provided path is neither a directory
nor a regular file. the std::process::exit() function. Strictly speaking,
In the section that follows, we’re going to write a std::process::exit() terminates the current process – at
simplified version of the which utility in Rust. If you don’t this point our program has a single process only – with
already know about which, type man which on your the specified exit code. We also need a (mutable)
Linux shell to visit its manual page. variable that holds the final return value, which is
called ret_value.
Let’s code which! The final value of ret_value depends on the found
Which returns 0 on success and 1 on failure. We should variable: if an argument isn’t found, then the value of
be able to implement that in Rust to be fully compliant ret_value changes from 0 to 1 and can’t become 0 ever
with a copy-cat which command. The logic of which.rs again. You can learn more about it by visiting https://
If you are not
can be found in the next code excerpt: doc.rust-lang.org/std/process/fn.exit.html. familiar with Go
for argument in env::args().skip(1) { or Python, it is
let split_path = my_path.split(":"); How to copy a file good to know
for v in split_path { Let’s create a tool to copy a file, just like the cp utility that the use of
... does, but without supporting all of the options of cp. walkdir::WalkDir
} This means that you copy a file without writing any File is pretty similar
} I/O system calls – this is handled by Rust. Using File I/O to the filepath.
The previous code processes all command line operations to process a file will be cover in the Rust Walk() function
found in the Go
arguments apart from the first one because of the tutorial of next month’s issue of Linux Format. The name
Standard library
use of skip , and tries to find a match in the different of the Rust source code file is copy.rs. The core
and os.walk()
paths of the PATH environment variable, which has functionality of copy.rs is presented in the following found in the
been read previously and stored in the my_path code excerpt: Python library.
variable. How you check each file path isn’t that match fs::copy(input, output) {
important (see the screenshot, top right, for more) –
what’s important is making sure that you process each
command line argument the correct way. Bear in mind THE RUST STANDARD LIBRARY
that if you give multiple command line arguments to
which and one of them isn’t found, the return value is In Rust terminology, std is a crate, and everything under it is called a
going to be 1 – our utility implements that as well. Using module. It’s helpful to have a look at the following modules:
which.rs (remember that you have to compile it first) std::string is for working with the String data type. https://doc.rust-
creates the following type of output: lang.org/std/string/struct.String.html.
$ ./which sed std::vec contains the Vector data type. You can learn about it at
/usr/bin/sed https://doc.rust-lang.org/std/vec/struct.Vec.html.
$ echo $? std::net contains networking functionality related to
0 TCP/IP. https://doc.rust-lang.org/std/net/index.html.
$ ./which sed123 std::fmt contains utilities for printing strings – see
sed123 not found https://doc.rust-lang.org/std/fmt/index.html.
$ $ echo $? std::thread module is about native threads. See
1 https://doc.rust-lang.org/std/thread/index.html.
We use the echo $? zsh and bash shell command to std::os provides OS specific functionality. For Linux-related info see
examine the exit status of the previous Linux command. https://doc.rust-lang.org/std/os/linux/index.html.
As desired, the first command returns 0 whereas the std::fs contains filesystem manipulation operations. Its help
second command returns 1. This is really important page is at https://doc.rust-lang.org/std/fs/index.html.
when you want to include your Rust command line std::io, which is going to be used in the next tutorial, is all about
utilities into shell scripts, CI/CD jobs or other tasks File I/O. See https://doc.rust-lang.org/std/io.
that check the exit code of a command to determine You can learn even more about the Rust Standard Library at
its success or failure. https://doc.rust-lang.org/std/. Finally, visit https://doc.rust-lang.
The screenshot (top right) shows part of the code org/core/index.html to find out more about the core crate.
of which.rs. In order to return the desired value, we use
File permissions
In this section you’re going to learn how to get the
permissions of a file. The logic of permissions.rs can be
found in the next code excerpt:
let metadata = fs::metadata(input)?;
let perm = metadata.permissions();
println!("{:o}”, perm.mode());
First, we read the metadata of a file and then we
obtain its file permissions by calling metadata.
permissions() . Last, we print the file permissions as an
Octal value using {:0} in println!() . Using permissions.rs Here’s the code of copy.rs, which shows how to copy a file in Rust. The
produces the following output: core functionality is implemented by the fs::copy() function.
PYTHON
Credit: https://github.com/bashkirtsevich-llc/PyBlackJack
GAMEPLAY FUNCTIONS
Even though object orientated programming has been implemented
in this project, these individual functions have been used to help with
the gameplay of Blackjack:
imageLoad for loading an image resource.
soundLoad used to load a sound resource.
display this displays text on the screen.
playClick for playing a sound resource once loaded.
gameOver used to display the game-over screen.
shuffle use this to shuffle the deck of cards using the Fisher-Yates
algorithm, which helps eliminate the element of predictability.
We’ve added a Quit button to the game so the player can leave at any createDeck this creates the logical structure of deck of cards.
time. This saves the player having to press Ctrl+C to exit the program. returnFromDead when the main deck of cards has been emptied.
deckDeal used to shuffle the deck.
# Set Down Arrow Position hit for taking cards from the deck.
downArrowButtonPosition_X = (screenWidth-100) checkValue this checks the value of the hand of player and dealer.
downArrowButtonPosition_Y = (screenHeight-370) blackJack for seeing if blackjack has been achieved either by the
player or dealer.
# Quit Button Position bust used when player is bust.
quitButtonPosition_X = 100 endRound determines what happens with the cards at the end of
quitButtonPosition_Y = (screenHeight-100) a round.
You’ll notice from the code we’ve just written that the compareHands this is used at the end and beginning of a round to
X and Y position values are relative to the screen width compare hands of player and dealer.
and screen height, and are offset by a certain value to
position them on the screen. Now that our class has
been written out we now need to declare what’s known self.xPos = positionXIn
as an instance of a class, so that the properties of the self.yPos = positionYIn
class can be accessed. Before we do this, scroll down
to just under where there’s a comment that says def update(....)
INITIALIZATION BEGINS and type the following code: # 3. Pass the position values into the position
uiButtonPosition = buttonPositioningValues() self.position = (self.xPos, self.yPos)
The next step from this is to alter the existing class The first step in altering the class is to change the
constructors of the buttons used in the game program. constructor of the class as above to take in positionXIn
The below is example of what you’ll need to do to each and positionYIn . The rest of the changes are identified
button class. by comments in the above code example. Before
bbU = betButtonUp(uiButtonPosition. continuing with the tutorial, do the same to the other
upArrowButtonPosition_X, uiButtonPosition. button classes for the game program.
upArrowButtonPosition_Y) When you’ve done all the changes to each class, save
bbD = betButtonDown(uiButtonPosition. your changes and execute the program. You’ll see that
downArrowButtonPosition_X, uiButtonPosition. all the buttons have been positioned relative to the
downArrowButtonPosition_Y) screen resolution. Because there’s quite a bit of code to
As can be seen from this code, the class alter, check the python file lxf289ans.py. The answer
constructors of betButtonUp and betButtonDown source code is written in there to see if your code is
have been altered to accept X and Y positions for the consistent with the answer… no cheating though! The
relevant buttons declared in our button-positioning text that’s displayed in the game program is positioned
class. Before continuing with the tutorial, do the same relative to the button buttons (see lxf289ans.py).
for each of the other button classes. The button classes Finally, we need to add a button to quit the game
themselves also need to be altered for each button program rather than just pressing Ctrl+C. The image
featured in the game program. Below is an example of resource for a quit button has already been created in
how it’s done for the dealButton class: the image folder location. In the answer Python file,
class dealButton lxf289ans.py, there’s a class created called quitButton
... that’s used for the display and operation of the quit
button in the game. Going over what we’ve covered in
def __init__(self, positionXIn, positionYIn): this tutorial, see if you can work out how it’s been
pygame.sprite.Sprite.__init__(self) written, before looking at lxf289ans.py. To help you,
self.image, self.rect = imageLoad("deal.png”, have a look at the existing button classes that have
BUTTON_IMAGE) been written to see if it’ll provide you with any clues.
self.position = (positionXIn, positionYIn) Instead of scrolling through code in an IDE, use the
search facilities available to go direction to the function
# 2. Set the position values as part of class or variable directly.
LXF290
Email linuxformat@futurenet.com
EDITORIAL
Editor Neil Mohr
2022
Linux Format is available for licensing and syndication.
To find our more contact us at licensing@futurenet.com
or view our content at www.futurecontenthub.com.
HACKER’S
NEW SUBSCRIPTIONS & BACK ISSUES
Web www.magazinesdirect.com
UK 0330 333 1113 World +44 (0) 330 333 1113
EXISTING SUBSCRIPTIONS
Web www.mymagazine.co.uk
UK 0330 333 4333 World +44 (0) 330 333 4333
Subscription delays: Disruption remains within UK
MANUAL
and International delivery networks. Please allow up to
7 days before contacting us about a late delivery to
help@magazinesdirect.com
CIRCULATION
Head of newstrade Tim Mathers
PRODUCTION AND DISTRIBUTION
Head of production UK & US Mark Constance
Production project manager Clare Scott
Senior ad production manager Jo Crosby
Digital editions controller Jason Hudson
THE MANAGEMENT
MD, tech specialist Keith Walker
Discover Portainer England and Wales. Registered office: Quay House, The Ambury, Bath BA1 1UA. All
information contained in this publication is for information only and is, as far as we
are aware, correct at the time of going to press. Future cannot accept any
responsibility for errors or inaccuracies in such information. You are advised to
contact manufacturers and retailers directly with regard to the price of products/
services referred to in this publication. Apps and websites mentioned in this
Forget the mess that is Docker – we sip from the Portainer cup publication are not under our control. We are not responsible for their contents or any
other changes or updates to them. This magazine is fully independent and not
affiliated in any way with the companies mentioned herein.
and take Red Hat’s container system for a spin. If you submit material to us, you warrant that you own the material and/or have
the necessary rights/permissions to supply the material and you automatically grant
Future and its licensees a licence to publish your submission in whole or in part in
any/all issues and/or editions of publications, in any format published worldwide and
on associated websites, social media channels and associated products. Any
material you submit is sent at your own risk and, although every care is taken, neither
3D spaces and objects. We get to grips with FreeCAD. manufacture. The paper in this magazine was sourced and
produced from sustainable managed forests, conforming to
strict environmental and socioeconomic standards. The
manufacturing paper mill and printer hold full FSC and PEFC
certification and accreditation.