Linux Format - May 2024 UK
Linux Format - May 2024 UK
Linux Format - May 2024 UK
Subscribe
Michael Reed
Linux makes sense as a gaming platform,
& save!
and that opens many doors. The success of
the Steam Deck helps. There are many office
On digital and print:
scenarios where Linux and a free office suite see page 16
makes more sense than paying for software.
Windows is changing so much, and some people don’t want it.
LINUX
REVIEWS
WINDOWS
Join Nate Drake as he explores Linux’s
AMD Ryzen 5 8600G 19 infiltration of Windows. Have
This reasonably priced processor is the
CPU of choice for Chris Szewczyk and his
the barriers between operating
tight budgets. systems truly been broken?
See page 30!
Deepin 23 20
Nate Drake is in too deep with Deepin – is
this Chinese-made distribution a crouching
tiger or a hidden dragon?
CREDIT: Magictorch
ROUNDUP IN DEPTH
KaOS 2024.01 21
Nate Drake seeks to find some order
in KaOS – a distro incorporating the
CREDIT: Getty Images/iStockphoto, AMD
Pi USER TUTORIALS
41
There’s a reason this Bambu is shooting up
all over and Andrew Sink is more than
happy to help it out.
files, identifying wrong users, and more. OBS Studio, Moosync, PhotoCollage, on the planet?
Collector, Patool, Warpinator, Croc, S-tui, Barry Collins and
Mailserver 14 FreeDoom, LibreMines and QOwnNotes. Neil Mohr explain
Readers write in with reminiscences and how to make AI
queries, and Neil Mohr shares his wisdom. Next month 98 work for you.
OPERATING SYSTEMS
Linux is popular!
Linux has long been a favoured OS for servers and embedded
devices but is now increasingly popular for desktop machines, too.
ccording to data gathered by Regardless of the reasons, this raises the
A StatCounter, as of March 2024, Linux
accounts for 4.19% of all desktop
perennial question of whether 2024 (or some
other arbitrary date in the near future) will be
operating systems. This marks an all-time high the ‘Year of the Linux Desktop’.
for Linux desktop adoption. By some measures, this has
Naturally, these figures are nothing already happened. In 2020, for
compared to the Windows market share instance, Chromebook outsold
during the same period (72%) or even Mac OS MacBooks two to one.
(15.46%), but two years ago, Linux desktops According to StatCounter, in
only accounted for around 2% of users. 2024 Android accounts for
Assuming the Linux install base continues to over 71% of mobile operating
double every two years, Redditors have pointed systems – though, admittedly,
out jocularly that we can expect 100% Linux it’s not designed as a fully
adoption some time in 2033, or even sooner if fledged desktop distro.
you count Linux-based ChromeOS. The biggest driver of Linux adoption The Linux desktop market share is
All joking aside, this is a huge leap will most likely be further adoption and currently 4.19%, more than twice
considering that it took Linux over 30 years consolidation of web applications like Microsoft what it was two years ago. It took
30 years to break 3%.
to secure a 3% share of all desktop operating Office and Adobe Photoshop. Since these can
systems, a target it reached in June 2023. be accessed via browsers, users are then free to
There’s most likely a number of factors switch to alternative platforms to access them.
contributing to more Linux desktop users. It’s also likely that continued adoption of
We’ve previously covered how installing Docker containers will allow more widespread
the OS is a good alternative to junking use of DaaS (desktop as a service), meaning
non-TPM-2.0-compliant Windows 10 PCs. Linux will have greater support for proprietary
Sales of the popular Steam Deck handheld, programs. This could make a more convincing
which can run most Windows games in Linux case for Windows and Mac OS users to switch.
flawlessly via the Proton compatibility layer, Still, Linux has quite the mountain to climb,
might partly account for this spike in usage, particularly given the persistent belief that it’s
although it’s unclear how this links through to difficult to set up and use.
website browser statistics.
When reporting this story, other tech outlets
have emphasised Linux’s open source nature DATE LINE
CREDIT: StatCounter
DESKTOP OPINION
WINE FOR
WAYLAND FreeBSD moves to kill 32-bit
FreeBSD is deprecating 32-bit platforms; 32-bit binary
support in 64-bit kernels will remain, however.
reeBSD kernel hacker John Baldwin changes in the marketplace. While this initially
Alexandros Frantzis
is a senior software engineer
F has announced that version 15.0 of the
OS is unlikely to support ARMv6, i386
meant supporting i386 systems, this has long
since been superseded by x86_64.
at Collabora. and PowerPC platforms. FreeBSD 16.0 will He also correctly stated that the pool of
almost certainly not support ARMv7. 32-bit developers is shrinking each year, with
2023 was a great year He did reassure readers that it will be only the ARM7 architecture being used in
for the Wayland driver possible to execute 32-bit binaries on 64-bit recent system designs. The FreeBSD team
CREDIT: TechRadar
for Wine. The goal was to FreeBSD kernels and there are no plans to may, however, support 32-bit architectures
move forward from the remove this feature from the stable branch. on a case by case basis.
experimental phase and Baldwin has justified this decision by More information is available via the
make the driver a proper pointing out that FreeBSD has also adapted FreeBSD 14.0 release notes: www.freebsd.org/
upstream component. A to support various architectures based on releases/14.0R/relnotes/.
year later, after several
merge requests, many
people are now already
able to use the latest Wine
release to enjoy some of
OPERATING SYSTEMS LAPTOPS
PostmarketOS Framework 16
their favourite Windows
applications in a completely
X11-free environment.
Systemd
screen, maximisation and
resize, software rendering, Repairable, upgradable
Vulkan support, including
Direct3D through WineD3D/
model costs under $500.
Vulkan or DXVK, and basic Phone OS has tentative
support for HiDPI scaling.
While the recent release
support for Systemd. ince late February 2024, the first
of Wine 9.0 did bring an
experimental Wayland driver, ostmarketOS (abbreviated as pmOS)
S Framework 16 laptops have made
it into customers’ hands. The
our work is far from done.
Our upstreaming efforts will
P is an operating system primarily for
smartphones, based on Alpine Linux.
manufacturer’s claims are bold: from just
$499 for the bare-bones model, you can have
continue in 2024, with a One of the project’s ultimate aims is to support your very own customisable, repairable and
focus on multiple key the mainline Linux kernel on all phones. upgradable laptop.
features including emulation In early March, pmOS took a step further Framework devices largely follow open
CREDIT: PostmarketOS Wiki, Framework Computer Inc
of display mode changes towards this goal by providing a version of the standards, including open source firmware.
through compositor scaling, OS that builds on top of Systemd. The new expansion bay can attach PCIe
OpenGL support, improved At the time of writing, several-proof-of- components such as the AMD Radeon RX
positioning of transient concept images are available and developers 7700S, but this costs an extra $400.
windows (pop-ups, menus are free to build their own version. Although If you want a functioning laptop out of the
and so on) and even more Alpine Linux doesn’t ship Systemd, there are box, prices start at $1,399. Visit https://frame.
window management. currently no plans to move pmOS away from it. work to learn more.
If you’re curious to see
PostmarketOS The Framework 16
what all this progress looks
builds are now offers even greater
like, there are several videos customisability
available using
out there made by people due to supporting
Systemd, even
using the Wayland driver though its PCIe components,
(which is very exciting to parent OS Alpine as well as a
see), so I’ll let those Linux doesn’t reasonable bare-
speak for themselves. ship with it. bones price.
Distro watch
OPINION
FIXING
What’s behind the free software sofa? OFFICE 365
UBUNTU 24.04 LTS
Ubuntu 24.04 LTS Noble Numbat is currently scheduled for release
on 25th April. At the time of writing, we’re working with a daily build
and expect a full review next issue. Nevertheless, we discovered that
Canonical has announced this LTS release will be supported for up
to 12 years, assuming users opt for an Ubuntu Pro subscription. The Ubuntu 24.04 will be Italo Vignoli
Ubuntu installer now defaults to Minimal, but you can still choose Full supported for up to is a founder of LibreOffice and
as well as third-party codecs. Learn more at https://ubuntu.com. 12 years. the Document Foundation.
Kernel Watch
OPINION
HAPPY
BIRTHDAY!
Jon Masters keeps up with all the latest happenings
in the Linux kernel, so you don’t have to.
inus Torvalds announced Linux 6.8, slated to become the successor to the i915
Jon Masters is a kernel hacker
who’s been involved with Linux
L noting that the development cycle
had been calm over the trailing
driver. For now, you must explicitly enable it.
for over 22 years. couple of weeks, “just as it should be”. The Linux becomes its own CNA
new kernel includes many performance One of the most interesting developments
Canonical (the enhancements under the bonnet. Among came in an email from Greg Kroah-Hartman
company that these are support for variable (multi) sized (Greg K-H), in which he casually observed via a
sponsors Ubuntu) just Transparent Huge Pages (THP), meaning documentation patch, “The Linux kernel project
turned 20. Can you believe that the kernel can now automatically handle now has the ability to assign CVEs to fixed
it? The Linux distro began memory using much larger pages while issues, so document the process and how
life as ‘no name yet’ and allowing multiple different huge page sizes, individual developers can get a CVE if one is not
there were rumours of as opposed to the old-school approach of automatically assigned for their fixes.” CVEs, or
secret meetings in Oxford boot time selection (this is something that Common Vulnerabilities and Exposures, along
to kick it off back in early certain large workloads, such as databases, with an associated CVSS scoring process is
2004. I attended the first will enjoy). The new kernel also removes the industry standard for managing security
ever Ubuntu conference, support for the venerable SLAB memory vulnerabilities and tracking fixes to significant
which was really a large allocator, long since replaced by SLUB. problems. CVE numbers can be issued by CVE
meeting held in the autumn An allocator manages ‘arenas’ of memory for Numbering Authorities (CNAs), of which Linux
of 2004 in Mataro, Spain. I easier data structure allocation. is now one, meaning that other entities can no
recall having a lovely More user-visible changes include longer issue CVEs against Linux.
conversation or three support for Intel’s Trusted Domain The upstream patch adding the Linux CNA is
with Mark Shuttleworth eXtensions (TDX) Confidential Compute opinionated, noting “Over time, CVE numbers
(someone with whom I (CoCo), at least on the host side. This means were very often assigned in inappropriate ways
would later compete when I that (on suitable Intel hardware) 6.8 users and for inappropriate reasons.” The patch talks
joined Red Hat in 2006), can spin up encrypted guest VMs that are about “ongoing abuses” and states that “the
and being impressed by the resistant to attack from a malicious CVE assignment team are overly cautious and
tremendous passion held by hypervisor. Other architectures are in the assign CVE numbers to any bug fix that they
those within the community. process of gaining CoCo support. Another identify”. Reactions were mixed, with a number
It was refreshing to interesting change is the merging of an of distro developers concerned that this could
see a Debian-derived experimental driver with initial support for “DoS the system” (with the sheer number of
‘commercial’ friendly distro Intel’s Xe graphics. This driver can be used CVEs) or “flood” distros with “low quality CVEs
that ended up having legs. on Tiger Lake and newer platforms, and is which have no analysis or scoring”.
Some of us still fondly
remember Progeny Linux,
which was all too short-lived
as an earlier attempt at ONGOING DEVELOPMENT
building a commercial story
with Debian. And in spite of Pasha Tatashin posted “Dynamic Kernel that memory is allocated for every task
my affiliation for all things Stacks”, in a follow-up to a proposal from until it is used, which is useful for very
Fedora, I always had a the LSF/MM Linux Kernel Memory large systems.
healthy respect for the work Management conference. Traditionally, Matthew Wilcox posted “Rosebush, a
that went on within the user applications use a magic stack that new hash table”. Hash tables are very
Ubuntu community, and in automatically grows (usually downward) as common data structures, known for their
particular for good friends functions are called that perform local constant time access properties. As a
like Jono Bacon, who did a memory allocations. This is why you don’t result, hash tables are very widely used,
lot of heavy lifting in the need to do explicit memory management yet not all hash tables are alike. The hash
early years to build for data on the local stack (the kernel is function used to generate indexes and
community (he would later doing it on your behalf). But within the other attributes, such as cache awareness,
go on to write a successful kernel, this is not the case, and so each are critical to good performance at scale.
book on the subject). So, task has a (small – for example, 16K) fixed- Matthew claims Rosebush is cleverly
happy birthday Canonical, size stack. In the new world order, the optimised for cache friendliness. He does
you’re almost old enough kernel stack is still small, but not all of like his fun data structure names.
to drink a toast
where I live.
Ye olde Firefox
means you have not received security or
software updates for almost that long. We
Q Empty not empty
I am trying to delete a directory as
Q How do I update Mozilla Firefox would not be comfortable using such an root, but it won’t go away.
without losing my bookmarks? old system online. Ubuntu does provide $ rm -rf xyz/
I am running Ubuntu 17.04. Would the an upgrade path to update to a newer rm: can’t remove ‘xyz’: Directory not
latest version of Mozilla Firefox run on my version, but it will have problems with a empty
computer? It is 64-bit. seven-year jump – one or two versions $ ls -la xyz
Ian Learmonth is considered safe. Your best option is a $
(https://github.com/hanwen/go-mtpfs).
We have used mtpfs and jmtpfs with
decent success. They are all FUSE
filesystems and work in much the same
way. For example, with mtpfs, run:
$ mtpfs ~/mtp
This mounts the first MTP device
discovered at ~/mtp, or wherever you
choose to mount it. This assumes you
have only one device attached, which is
the usual scenario. If you are a glutton
for punishment and want to work with
multiple MTP devices, something like
simple-mtpfs may be more suitable. With
one device, the operation is the same as
mtpfs. With multiple devices, where X is
the number of the device from the list the
You can access the contents of an MTP device with GMTP, or mount it as a filesystem with a FUSE program. first command gives you, you can do:
$ simple-mtpfs --list-devices
As you can see, ls reports the directory that is not possible, maybe a background $ simple-mtpfs --device X ~/mtp
as empty. I am root, so it can’t be task has locked the file, you can pass the Whichever you use, once mounted you
permissions, so what is going on? PID to kill to force it to close: can access the contents from the terminal
Bradley Howarth $ kill <PID> or your favourite file manager. As all of
If lsof shows the file is still locked, it these filesystems use FUSE, they are all
A There’s a number of possibilities
here. Let’s get the least likely, but
is likely the process locking it has hung
and is not responding to kill’s request to
unmounted in the same way when you are
finished transferring files:
worst, option out of the way first. You terminate, in which case you can force the $ fusermount -u ~/mtp
could be infected by a rootkit that is hiding issue with: If you can’t run these commands as
files in there and has installed a modified $ kill -KILL <PID> your normal user, you could use sudo or
ls to pretend they are not there. The Only use this as a last resort as it check the ownership of the device created
easiest way to check this is to boot from causes an unclean shutdown of the when you plug in the player; you may need
a live distro and use ls from that to check. program. Alternatively, if you can’t to add your user to the relevant group.
This is unlikely, but if it has happened, you be bothered with all that, reboot the There are graphical options – GMTP
should reinstall your distro. computer – a guaranteed, if somewhat (https://gmtp.sourceforge.io) is one – as
Another possibility is filesystem brutal, way of releasing the locks. well as plugins for some file managers.
corruption, which can be checked with Gnome users need to install gvfs-mtp,
fsck. The filesystem needs to be mounted
read-only to run fsck fully, so if this is on
Q Music To Player
I bought a new MP3 player but it
while in KDE you should see your devices
in the Dolphin sidebar, as long as you have
your root filesystem, you need to boot a does not appear in disks and devices on the kio-extras package installed.
live distro to run fsck like this: my desktop. Neither do I see an icon to
$ fsck -f /dev/sda1 mount it. How am I supposed to get my GET HELP NOW!
Replace sda1 with wherever your music on to this hardware? My operating
filesystem resides. A third possibility system is Debian 11. We’d love to try to answer any questions
is that this is a mount point for another Jamie Tyler you send to [email protected], Subscriptions: for magazine issues email [email protected]
filesystem. Even if that filesystem is no matter what the level. We’ve all been
empty, it will not let you delete it, so
umount first.
A Most media devices do not present
themselves as USB mass storage
stuck before, so don’t be shy. However, we’re
only human (although many suspect Neil is
As you now realise, there are many devices these days; they use the Media a robot), so it’s important that you include as
possible causes, but a common and Transfer Protocol (MTP), which is an much information as you can. If something
elusive one is that a deleted file is still extension of the Picture Transfer Protocol works on one distro but not another, tell
locked. If you delete a file that is in use by used by digital cameras. There is support us. If you get an error message, please tell us
an application, that file disappears from for MTP devices in Linux, but we have the exact message and precisely what you
the directory listing but it is still there found it to be a little flaky at times. If you did to invoke it.
for as long as the application is using check the settings menu on your devices, If you have, or suspect, a hardware
it. It is automatically deleted when the you may find an option to use mass problem, let us know about the hardware.
application releases it (or terminates). storage instead of MTP. If you enable Consider installing hardinfo or lshw.
You can find such files with lsof: that, you should see an icon and have These programs list the hardware on your
$ lsof xyz | grep deleted the device mounted when you plug it in. machine, so send us their output. If you’re
This shows any files that have been Otherwise you need to install an MTP unwilling, or unable, to install these, run the
deleted but are still open. The first filesystem driver, and there are several following commands in a root terminal and
element on each line of output is the choices here, including mtpfs (https:// send us the system.txt file, too:
name of the process locking the file, the github.com/cjd/mtpfs), simple-mtpfs uname -a > system.txt
second is its process ID (PID). Knowing (https://github.com/phatina/simple- lspci >> system.txt
what is locking the file, you can go into the mtpfs), jmtpfs (https://github.com/ lspci -vv >> system.txt
application and exit it to release the lock. If JasonFerrara/jmtpfs) and go-mtpfs
Neil says…
Thanks for putting us straight on that one. Come find the distro that some random internet person thinks is best for you!
I’ve not come across Vaultwarden, so that’s
good to know about for the self-hosting types. of years. I’m looking for something that is business
Personally, I’m a big fan of Bitwarden and have no issue class and the budget is around £1,000. The idea is that
paying the $10 yearly fee to help fund it in some way. I the laptop should be suitable for multitasking and
can attest that moving from LastPass was utterly maintaining multiple terminals.
smooth, too, and if anything Bitwarden has a better Currently, I’m working from Ubuntu running on a HP
web interface. And although the Android app could do ProBook 450 G10 with an Intel Core i5-1335U and
with more polish, it’s certainly as good as LastPass. 32GB RAM. We are thinking of switching to Lenovo
Bitwarden is our ThinkPads or the Dell Latitude series, but are open to
go-to choice
for password
We mean business any model and distro that will work well together.
management I’m looking for a Linux distro and a laptop model that is Hava Halime
and protection. stable and will not start having problems after a couple
Neil says…
To be honest, that current laptop is pretty, erm, current.
The processor was only launched early 2023, so it
should barely even be a year old at this point. Not
having tested any of those laptops, it’s hard to officially
recommend anything. We ran an article in LXF313 on
Framework gearing up to provide business-class
laptops – as they’re repairable, that’s an interesting
option, and they support Ubuntu and Fedora. No one
got fired for buying Dell, is a saying, I believe, so have a
look at the Dell models that officially support Ubuntu;
the XPS 13 is the one to go for. Else Canonical runs a
certified programme for Ubuntu that covers Dell, HP
and Lenovo. See https://ubuntu.com/certified/laptops.
Basic sales
I found it interesting that Peachtree accounting started
out in Basic. I can also comment that I once worked for
Helpdex
We’ve tested the XPS over the years and it remains a solid bit of kit.
[email protected]
SUBSCRIBE ONLINE AT
www.magazinesdirect.com/LIN/C79L
Or call 0330 333 1113 and quote C79L
1,000s of DRM-free
PDF back issues and
articles! Get instant
access back to issue
66 (May 2005) with
DON’T MISS
! tutorials, interviews,
Includes 5 ye
ars
of Linux User
& features and reviews.
Dev elop
issues
er
At linuxformat.com
OUTSIDE
THE UK?
Turn to page
for more grea59
subscriber t
deals!
SAVE!
SAVE!
20 %
30
%
PLUS!
Only Only
£16.75 every 3 months
£12.99 every 6 months
3 issues of Linux Format in print 3 issues of Linux Format in digital
every 3 months, saving 20%! every 3 months, saving 30%!
With gift! Without gift!
Terms and conditions: Offer closes 30th April 2024. Offer open to new print UK subscribers only. 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. Gifts subject to availability. **Access to Linux Format subs area only available
to www.magazinesdirect.com subscribers. 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-Friday 9am-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.
Deepin 23
Nate Drake is in too deep with Deepin – is this Chinese-made
distribution a crouching tiger or a hidden dragon?
eepin development began
IN BRIEF
Potential
D way back in 2004 as
Hiweed Linux. Until 2015,
privacy issues it was based on Ubuntu, but since
aside, this is one then, successive versions of the
of the most OS have been based on the latest
visually rich stable version of Debian (in this
versions of case, Debian 12 Bookworm).
Linux you’ll ever The distro is known for its DDE
use, with a host (Deepin Desktop Environment),
of excellent built on the Qt 6 toolkit (updated
home-grown to version 6.6.1 for this release).
programs, such DDE is available in the repos of
as the Linglong distros like Fedora as an alternative
package desktop, which is why you may
manager. have heard of this OS despite its
main user base being in China. DDE (Deepin Desktop Environment) may be resource-heavy, but it has style. It can also
Deepin is wholly owned by be installed in other distros, such as Fedora.
SPECS Deepin Technology, a subsidiary of
CPU: 2GHz Union Tech. The developers follow an irregular release password before configuring your machine, then
Mem: 8GB cycle but aim for four releases per year. prompts you to log in to DDE.
HDD: 64GB Besides a graphically rich home-grown desktop The system also displays a helpful introductory
Builds: x86-64, environment, Deepin boasts its own window manager video (in Chinese) showcasing all the latest features.
i386, RISCV64, (dde-kwin), which for this latest development release English speakers can supplement their knowledge with
ARM64, contains a number of fixes for small bugs, such as one the rather spartan Deepin Manual (available online or
LoongArch64 that previously caused window formatting not to follow via the Deepin launcher). The project also has an
those laid out in system settings. English wiki (https://wiki.deepin.org/en/home).
Deepin 23 also includes the latest version of the Once the desktop loaded, we opened the launcher
OS’s own package manager, Linglong, which includes and were delighted to see that Deepin 23 has switched
an update to allow launching it immediately upon login. from the proprietary WPS Office to LibreOffice (7.4.2).
The system repository itself has also received over We came across claims that Deepin comes with closed
4,000 software package updates (including new source software but this was absent when we checked.
packages). The OS now supports i386, riscv64 and When we fired up Deepin’s App Store, however, we
LoongArch64 architectures. did find some proprietary options, including Google
Deepin’s own File Manager has also been Chrome and Steam. In 2018, this same App Store drew
overhauled, with bug fixes that allow creating folders controversy over the inclusion of statistics software
with spaces at the end of filenames, as well as the that could potentially identify users, but this feature
ability to copy folders directly from the Recycle Bin. has been removed. Daniel Smith, head of threat
Users can also create desktop shortcuts for Google research at Radware, has raised concerns over
Chrome with the relevant website icons. Deepin’s updated statistical analysis service Umeng.
Aside from a slew of its own packages and tools,
according to other online reviews, Deepin comes
preinstalled with proprietary software such as Spotify
VERDICT
and Steam, which may explain the hefty 4.2GB ISO. DEVELOPER: Deepin Technology
Deepin 23 also comes with UoS AI plugins, enabling WEB: www.deepin.org
you to use UoS AI via a free trial account. LICENCE: Mainly GPL
If you do take the time to download the ISO,
Deepin’s own installer is extremely intuitive. The latest FEATURES 9/10 EASE OF USE 8/10
installer also now supports screen interface adaptation PERFORMANCE 7/10 DOCUMENTATION 6/10
for 768p, 1080p, 2K and 4K resolutions. As snazzy and
simple to use as it is, though, sadly there’s no option to A visual masterpiece and incredibly easy to set up. Let down
test Deepin in a live environment. by heavy system requirements and lingering privacy issues.
Post-install, however, we discovered why Deepin’s
interface has received such rave reviews online. The Rating 8/10
system first prompts you to create a user account and
KaOS 2024.01
Nate Drake seeks to find some order in KaOS – a distro incorporating
the KDE Plasma 6 desktop environment.
aOS is an independently
IN BRIEF
KaOS is light
K developed distro, though
its design is inspired by
on system Arch Linux. Originally released
resources but as KdeOS in 2013, it has since
offers the best changed its name and follows a
of Plasma. rolling release model.
Bundled apps The OS is designed solely for
are well the x86_64-bit architecture and
selected exclusively uses Qt (currently
(except for an version 6.6.1) as well as the
email client). latest version of KDE.
The OS offers KaOS 2024.01 is the first stable
simple setup release to incorporate the Plasma 6
when it works. desktop environment. It now also
comes with an overhauled version
of the OS’s own Midna theme. The OS’s own Croeso package manager enables you to adjust common settings such as the
SPECS In the runup to release, KaOS desktop background and configure package management.
CPU: 2GHz developers have been shipping all
Mem: 1GB (2GB ported applications from their Frameworks 6 branch advanced text editor, though on first boot we noticed a
suggested) into snapshot ISOs. Most bundled apps are now glitch where the icon was listed twice in the task bar.
HDD: 8GB available as a Frameworks 6/Plasma 6 port. For those Media lovers are also spoilt for choice in KaOS,
(25GB apps that are not ready, Frameworks 5 is still packaged, which bundles not only the Elisa music player but MPV,
suggested) so they can be used in a Plasma 6 environment. Harua and (naturally) VLC.
Builds: x86_64 The display manager can run in Wayland mode, so Under the hood, the OS has been upgraded to
KaOS is closer to being ready to move away from X11. FFMPEG 6. The kernel has also been updated to Linux
If you fire up the 2.7GB ISO, you’ll also note that 6.6.14. KaOS now incorporates Systemd 254.9, as well
setup is handled by the user-friendly Calamares as Python 3.10.13, Util-Linux 2.39.3, IWD 2.13, MariaDB
installer, which now supports automatic partitioning 11 and Postgresql 16.
of popular filesystems like XFS, ext4, Btrfs and ZFS. KaOS also includes the OS’s own ISOwrite, which, as
When we took KaOS for a test spin in a virtual the name suggests, can be used to write an ISO file to
machine, we were also pleased to see the OS can be USB. Unlike previous versions, the tool also offers the
booted in live mode. ability to recover USB sticks used for this purpose.
On first launch, we also had a chance to view the If you want to install extra packages, you can use
built-in Guide, which is well laid out, although some Octopi, a powerful Pacman front-end that KaOS has
of the grammar and spelling is dubious. The online included instead of Plasma’s Discover.
documentation also contains a quaint warning against This is just as well, as despite the presence of
using a dial-up connection to download ISOs. During chat clients like NeoChat and Konversation, there’s no
our tests in a virtual machine, the Calamares installer preinstalled email client. Luckily, you can use Octopi to
crashed when we tried to proceed with install. install popular programs like KMail or Thunderbird.
Staying in live mode, we quickly moved to the
Application Launcher. It’s here we discovered that
given that it’s available as a pure Qt6/kf6 application,
VERDICT
LibreOffice has now replaced Calligra as KaOS’s DEVELOPER: KaOS
default office suite. WEB: https://kaosx.us
If you do succeed with setup, KaOS’s very own LICENCE: Mainly GPL
Croeso (Welsh for ‘welcome’) launches post-install.
Written in QML, this handy tool lets you adjust some FEATURES 8/10 EASE OF USE 7/10
15 commonly used settings, including viewing your PERFORMANCE 8/10 DOCUMENTATION 5/10
distribution info, and select packages from no fewer
than six different groups. From here, you can also Excellent implementation of a pure Plasma 6 environment.
customise your desktop wallpaper – KaOS comes with Setup is simple but documentation needs an overhaul.
no fewer than 31 alternate backgrounds.
Browsing is handled by KDE’s Falkon (v24.01.95). Rating 7/10
From the main desktop, you can also launch the Kate
Drauger OS 7.6
Nate Drake puts this distribution through its paces – is Drauger a
gaming dragon or just a plain drag?
n Norse mythology,
IN BRIEF
We love the
I draugrs are undead
warriors with a penchant
idea of a for the blood of the living. Skyrim
gaming-specific players will also know they’re a
version of Linux, common foe you encounter when
but Drauger dungeon-crawling, so developer
fails to deliver. Thomas Castleman, a keen player,
Given the named this OS accordingly.
setup/kernel One typo later, Drauger OS was
issues, you’re made available in 2018. It’s based
far better off on Ubuntu LTS (in this case Ubuntu
installing 22.04 Jammy Jellyfish) and is
Ubuntu, then supposedly optimised for gaming.
adding gaming- The main website’s About page
specific is also very clear on what Drauger is
packages not: if you’re thinking of installing The left-hand panel contains launchers for a number of apps, including Steam, Firefox and
yourself. Drauger as your daily driver, you’ll Synaptic. In live mode, this obscures the desktop icons.
be disappointed. There’s no
preinstalled email client, office suite, BitTorrent client is keen to stress that the OS ships only with open
SPECS or any apps you’d need when normally using Ubuntu. source software, although the presence of the Steam
CPU: 1.8GHz Previous versions of Drauger used the xanmod client for Linux seems to contradict this.
(2GHz kernel, which is ideal for gaming, but this iteration Other gaming specific programs include GameHub,
suggested) apparently uses a version that is compiled in-house. Heroic Games Launcher and Lutris. We fired up Lutris
Mem: 1GB (6GB It would be more correct here to say “versions” as and used the search feature to download and install
suggested) Drauger uses kernel 6.2.9 in the live environment but the 1993 shareware version of Doom, which ran, albeit
HDD: 32GB switches to version 6.6.11 once installed. somewhat jerkily.
(128GB Post-install, this triggered a kernel panic in our test Drauger doesn’t seem to assign a dedicated swap
suggested) virtual machine, which we resolved by rebooting and space to the drive during automatic partitioning. After
Builds: x86_64 choosing 6.2.9 from Drauger’s Advanced Boot Options. checking the root drive immediately after installation,
On first login, you’ll notice Ubuntu’s default Gnome we found that instead it creates a .swapfile, which was
desktop environment has been swapped out for Xfce, already almost 12GB. This may account for Drauger’s
along with a dark Nocturn GTK3 theme. We were large install footprint (17GB) – over twice that of our
impressed by the Drauger welcome guide, which walks Ubuntu LTS VM.
you through various sections of the desktop. Drauger does come with Gnome Software and
This includes a whistle-stop tour of the panels at the even ostensible support for Flatpaks, but when we
top, left and bottom of the screen. The left bar contains tried to install two apps via Flathub (VLC and Polari),
launchers for some of the preinstalled apps, including we encountered an unmet dependencies error.
Steam and the Synaptic package manager. Web Installation via the command line and Synaptic via
browsing is handled by the Flatpak version of Firefox Ubuntu repositories worked like a charm, however.
(v110.0.1), which can be launched from here.
In the live environment, we felt this placement was a
design flaw, as it eclipsed desktop icons like Home and
VERDICT
Trash, but these had vanished post-install. DEVELOPER: Drauger OS Development/
The bottom panel allows switching between virtual Thomas Castleman WEB: https://draugeros.org
desktops, though we found it hard to distinguish from LICENCE: Mainly GPL
the default wallpaper. Luckily there are six alternatives.
If you are willing to risk kernel panic and proceed FEATURES 5/10 EASE OF USE 6/10
with setup, Drauger ships with its own System-installer. PERFORMANCE 6/10 DOCUMENTATION 7/10
The interface for this is dated, where you have to click
individual buttons to launch windows and configure With its custom kernel and installer, Drauger feels much like
settings like language and keyboard. A more intuitive a work in progress rather than a fully fledged OS.
installer like Calamares would be a much better choice.
Once the OS loaded, we decided to explore the Rating 6/10
gaming-specific features of Drauger. The main website
Michael Reed
says he’s spent
74.5 hours writing
TimeCamp Timewarrior Hamster about Linux so far
Time trackers
This month, Michael Reed is keeping a strict eye on himself and trying to
improve his work efficiency by investigating time-tracking applications.
HOW WE TESTED…
Pretty charts, where available, like stats and want to know how they actually Hamster is a conventional desktop
were appreciated. spend their time. application with a user interface that fits in
Finally, once we had the Timewarrior may appeal to the text-mode well with the stylings of the Gnome desktop.
Linux-based software up traditionalist as it’s a purely command-line- TimeSlotTracker is a multiplatform Java
and running, we investigated driven application. However, it can output desktop app, and it’s quite feature rich.
the possibilities for moving some natty looking text-mode charts and it’s The other applications are open source
between machines and a good choice for custom analysis of its data. and completely free, but we also added
environments while continuing Arbtt is another ‘Linuxy’ piece of software TimeCamp, a freemium service, into the mix.
to track our time. as it’s operated from the command line. The We wanted to see how useful a free account
main part of the software automatically was compared to some of the other options.
Linux native
application
Other options are nice, but we
expect a well-integrated Linux app.
he TimeCamp app places itself in the status panel area
Installation
complications
The first hurdle is always obtaining
and installing the software.
he Linux Mint system package for Timewarrior was out
Extra features
Beyond the basic options, what else can the software do?
imeSlotTracker can add custom attributes to a task or Arbtt’s documentation links to a couple of contributed tools
Automatic tracking
Insights from hands-free analysis of your activity can often be fascinating.
imeSlotTracker has activity monitoring and this official documentation offers examples that can assign the
alternative platforms
mobile phone
app, and
it’s a fairly
extensive piece
A
some charting
can be used over SSH, which means that it can be and summary
accessed over a network. This could also be extended modes.
to a mobile device running an SSH client. However, the host
machine would have to be set up and available over the network
and left running, and you’re restricted to a command-line
interface when starting and ending task recording, which could
be awkward, particularly on mobile. It is only available to run on
Unix-type operating systems such as Linux.
If anything, TimeCamp is a stronger application when
accessed from the website. Every function can be accessed on are no cloud data-sharing features. What could work is exporting
the web and many functions can only be accessed in that way. data from the program on one computer, then importing the data
This means that it can be accessed from multiple machines and back into the program on another.
even from a mobile device. Speaking of which, there are also Hamster is a simple GUI-based time tracker that is designed
dedicated mobile phone apps for Android and iOS. This is along to be used on a single machine.
with applications for Linux, Windows and Mac OS.
As Arbtt gathers information about usage from the computer VERDICT
on which it is run, it can’t be used remotely. In addition to various
Linux versions, there is a Windows version. TIMECAMP 9/10 ARBTT 4/10
TimeSlotTracker is a multi-platform application, and this TIMEWARRIOR 6/10 TIMESLOTTRACKER 5/10
means it can run on Windows and Mac OS machines as well as HAMSTER N/A
Linux. Unfortunately, there isn’t a mobile app version, and there TimeCamp lives happily in the cloud or on various native platforms.
Reports and
summaries
For some, this is one of the most
important parts of the system.
imeWarrior has a couple of report modes. The summary
The verdict
Time trackers
e’re choosing TimeCamp, a freemium solution that
ALSO CONSIDER
Toggl (https://toggl.com) is a handy web-based time tracking KTimeTracker (https://apps.kde.org/en-gb/ktimetracker)
tool with an extensive free tier. Its Linux standalone client has is a Linux native time-tracking application, but it had its last
been deprecated recently, but the service is still usable via the major release in 2019, meaning that it’s probably not worth
website and mobile app. getting too invested in learning to use it.
Watson (https://tailordev.github.io/Watson) is a GTimeLog (https://gtimelog.org) is a GUI program with a
command-line-based tracking app. We would have looked at command-line feel to it. It’s a fairly simple application and it
it here, but we already had two command-line apps on our list. can log time spent on tasks.
the beginning of the century.” summary shows how seriously Microsoft took Linux as a threat:
According to the Open Source Contributor Index, “Linux poses a significant near-term revenue threat to Windows
Microsoft is now the second largest contributor to NT Server in the commodity file, print and network services
open source behind Google, with 4,649 active projects. businesses. Linux’s emphasis on serving the hacker and Unix
CREDIT: Magictorch
In October 2023, for the first time, Microsoft went so community alleviates the near-medium term potential for damage to
far as to provide specific steps on its support pages on the Windows client desktop. In the worst case, Linux provides a
how to install Linux directly on a PC via dual boot. And mechanism for server OEMs to provide integrated, task-specific
since 2009, Microsoft has been contributing to the products, completely bypassing Microsoft revenues in this space.”
Linux kernel via the non-profit, Outercurve Foundation.
TERMINAL CASE
By default, WSL2 launches terminal utilities, such as
in Windows Terminal. While Hyper or ConEmu.
we don’t make a habit of By default, these programs
recommending Microsoft launch cmd.exe but you can
products at LXF, this is one configure your profile to
that integrates nicely with point to %windir%\
installed Linux distros. system32\wsl.exe instead.
If you’re serious about The steps to do this differ
using Linux on a regular depending on your terminal
basis, launch Windows program. For instance, on
Terminal via the search bar, first launch ConEmu displays
then click the arrow next a fast configuration screen.
to the new tab icon (+). In the Choose Startup Task
From here you can switch field, you only need change
between profiles – for {Shells::cmd} to {Shells::wsl}.
example, from PowerShell You can also go to Settings >
to Ubuntu. To switch to the ‘Tasks to define parameters.
Linux command line by You can use Windows Terminal and third-party utilities such as ConEMU Regardless of the terminal
default, hit Settings. In the (pictured) to automatically launch your chosen Linux distro via WSL2. program, you can find help
new window, select the drop- with basic WSL commands,
down menu in the Default application from Let If you want to use the including running specific
Profile section and change to Windows Decide to Linux command line across apps in installed distros, at
your chosen distro. Windows Terminal. We also multiple distros and/or have https://learn.microsoft.com/
From here you can also recommend enabling Launch a preferred program, WSL2 en-us/windows/wsl/basic-
change your default terminal On Machine Startup. is compatible with other commands.
can be run from within the distro. You can even edit it
using Nano or Vim. THE COMMAND PALETTE
Still, if you’re intent on developing a cross-platform
app, remember that as things stand, you can’t You can access more VS Code WSL commands by using the
meaningfully debug and run apps from Windows itself shortcut Ctrl+Shift+P to bring up the command palette.
without installing the same Python development stack. Type wsl to list options. One of the most useful is Connect To
This is fairly simple to do but undermines the advantage WSL Using Distro. If you select this, VS Code displays a list of all
of having your own lightweight, standalone Linux installed Linux distros. You can also click Add New to list more and
instance with all necessary Python tools preinstalled. launch the installer from VS Code. This must be done locally – you
Fortunately, you can use WSL2 to edit, debug and must have closed the ‘remote’ WSL connection from VS Code first.
run your script from VS Code. To get started, double- If you then run Connect To WSL Using Distro once again and
check the terminal to make sure you’re still in the same choose the newly installed OS, VS Code also installs the necessary
folder as your test script, then run code . – the . tells server software on your target system so it can connect.
VS Code to open in the current folder. If your program is stored in a specific place, save the trouble of
The terminal now displays a message stating navigating to it via Windows Terminal by using Open Folder In WSL.
Installing VS Code Server . You’ll also see a number If you’re connected to an WSL instance, you can navigate from here
after this – this is the version, which automatically to the directory containing your code. As before, click Show Local to
matches that of the VS Code client you installed display the ‘local’ Windows filesystem. If this is too much trouble, the
directly in Windows earlier. Command Palette also contains a Reopen Folder In Windows option.
In simplest terms, in running this command, you’re We recommend the Help command that links to Visual Studio’s
having VS Code install a small server to which the VS documentation on WSL (https://code.visualstudio.com/docs/
Code client on Windows itself can connect. remote/wsl). From here you can learn more about how the
The VS Code server also installs host extensions in WSL extension works in VS Code, such as the fact it can run other
WSL, so that they run in the context of the tools and extensions and commands directly. This is also where we learned
frameworks installed therein. This is independent of that you can open an WSL window directly from VS Code: just press
the language extensions and frameworks that are F1, then select WSL: Connect to WSL to launch your default distro.
installed in Windows, which is the optimal setup for a You may want to follow the link to install the Remote Development
development environment. Extension Pack with its extensions for WSL, SSH and containers.
Once install is complete, you’ll see a notification
that VS Code is connecting to WSL. You may also be
prompted to authorise access to the Node.js-based features. Still, you can engineer a crisis yourself by
server. The program itself then starts. clicking on line 1 and then pressing F9 to create
The first pop-up window asks you to confirm that a breakpoint.
you trust all files in the parent folder – in the case of this Try to run the code again using F5, then select
test, this is your home directory. Click Yes, I Trust The Python File. Your code now starts and hits the
Authors to continue. breakpoint. You’ll see you can now inspect variables,
You can now check the Remote Status section at the create watches and navigate the call stack. You can also
bottom-left to confirm that VS Code is accessing your press F10 to see the output of the print statement in
chosen WSL instance. the debug console.
For further confirmation, take a moment to hover To access other scripts stored in your WSL instance
your mouse over the test script hello.py and note the from VS Code, simply use File > Open. You’ll notice the
file path. You’ll see that it matches the path in your directory tree here is for your Linux instance, though as
chosen Linux distro. before, you can still access Windows files via /mnt – for
Click on hello.py to begin editing. As this is a Python example, /mnt/c/. Add a breakpoint
script, in this case VS Code prompts you to install the If you do want to switch back to Windows files only, to your test script
Microsoft Python extension for rich editing and simply click the button marked Show Local. This in VS Code to
inspect variables,
improved debugging. Click Install to proceed. launches the standard Windows Open dialog. create watches,
Once this is complete, take a moment to click the To end your WSL session and return to running code and navigate
extensions icon in the left-hand pane, or list them using locally, select File > Close Remote Connection. the call stack.
Ctrl+Shift+X. From here you can see the ‘locally’
installed WSL extension, as well as a new section
entitled WSL: [OS Name] – Installed. This shows that
the extension is installed on the WSL side.
While you’re here, you can also search for and install
other extensions into your WSL instance via VS Code,
such as the Pylint linter. This provides a richer palette
as well as completion for most commands, making
debugging much easier.
Next, take your code for a test spin by hitting F5,
then choosing Python Debugger from the drop-down.
Bugging out
Given that our test script only constitutes one line, it
doesn’t offer many opportunities to allow you to step
through the code or show off VS Code’s debugging
light from Microsoft top brass, such as Bill Gates, and Linux. To get started, download the CBL-Mariner
Microsoft began working with Google engineers to ISO from https://aka.ms/mariner-2.0-x86_64-iso.
develop the modern Edge, which now is the second- You can also compile the ISO yourself from the
most popular web browser after Chrome. Linux terminal if you prefer (see box, below).
Although the decision was pragmatic, it’s a win for Once the download is complete, open VirtualBox
open source and collaboration. Microsoft clearly felt and select Add. Set a name for the VM, such as
its open source bona fides were strong enough to woo Mariner1, then under ISO Image, navigate to the file
Linux users, because after previews, a stable version of you downloaded. Under Type choose Linux, then select
Edge was made available to Linux users in 2021. Other Linux (64-Bit) for Version.
Despite being installable via the Microsoft repo and The default settings of 512MB RAM and 1 CPU are
enjoying compatibility with most Chrome extensions, sufficient for taking Mariner for a test drive but feel
few Linux users headed for Edge, and Firefox and free to adjust. Hit Next to create a virtual hard disk (we
related browsers remain most popular on the OS. recommend a minimum of 15GB). Click Next > Finish.
The wooing has since continued with successive Click Start to launch the VM. On first boot, choose
versions of WSL and now WSA to allow running the graphical installer. You are given the choice to
Android apps on Windows devices. install the core or full version. Choose freely, then click
Next. Agree to the T&Cs, then click Next once again to
From pirates to mariners be taken to the Partitions screen. Note that Mariner
WSL2’s kernel was originally developed by Microsoft’s supports hard disk encryption. Choose Next again to
Linux System Group. Since 2020, the same team has create a user account with a suitably strong password,
also been maintaining CBL-Mariner. CBL (Common then Install > Install Now to proceed.
Base Linux) is a fully-fledged Linux distro, albeit one Once install is complete, hit Restart to boot the
that only comes with the basic packages needed to machine. VirtualBox should automatically eject the ISO.
support and run containers (much like Fedora CoreOS). You can now sign using the credentials you created.
It uses an RPM-based package manager and RPM- CBL-Mariner uses Systemd for managing all running
OSTree for system updates and rollbacks. The Linux services, so for your first command, run systemctl to
System Group also clearly takes security seriously, as view descriptions of current loaded and active ones.
Mariner comes with features like a hardened kernel,
signed updates and tamper-resistant logs. Crucially, Microsoft loves Linux
Microsoft doesn’t seem to be pulling any punches any Twenty-five years ago, it would be hard to imagine
more when it comes to open source: the entire OS is that Microsoft would be a member of the Linux
covered under a mix of MIT, Apache and GPL licences. Foundation, not to mention mirroring Linux devs by
Official ISO builds can now be downloaded via supporting rewrites of the kernel in Rust and releasing
Microsoft’s servers. While technically it can boot on open source distros. Naturally, innovations such as
any x86_64 PC, it’s primarily designed to work on a WSL2 and CBL-Mariner could just be there to keep
hypervisor platform, such as Microsoft’s own Hyper-V programmers using Windows and Azure. Open source
or VirtualBox. For the purposes of this guide, we’ve could just be a form of ‘Windows dressing’. Still, Linux
chosen VirtualBox, given it can run on both Windows is in the OS – and it’s here to stay.
ParrotOS
Les Pounder has watched Hackers at least 12 times and knows what all
the books are. Now he just needs a cool haircut and RISC-based laptop.
arrotOS is an interesting choice for
IN BRIEF
A security
P the Raspberry Pi. We generally think
of the Pi as a learning tool for coding,
focused building projects and advancing our computing
operating knowledge. Another aspect of learning with the
system that is Pi is security. Whether you are on the red or
well suited to blue team, you need a toolkit, and within that
the Raspberry will be a Raspberry Pi. ParrotOS is an alternative
Pi 4 2GB and to Kali Linux, and we can debate the pros and
upwards, but cons of both until the cows come home, but
not Pi 5 for now. let’s uncage this bird and see how it flies.
ParrotOS ParrotOS comes in a number of flavours;
provides a there are versions for laptop or desktop and the
plethora of Raspberry Pi. For each architecture, there is a The main menu hides much more under Pentesting. Here we have plenty of
security Core (no desktop), Home (lightweight, aimed at tools to monitor and audit different cybersecurity scenarios.
auditing tools home users or developers) and Security Edition
for both red (which contains all the ‘hacking’ tools you could think of). running as root, so selecting their entry from the menu
and blue team We tested the Security Edition with a Raspberry Pi 4 often results in an error. Run the same command from
members. This 4GB – right now, ParrotOS doesn’t work on the Pi 5. the terminal as root and you are ready to work.
is a great distro On first boot, after the drive resizes, we are left at a We ran Wireshark on our test network and could see
for learners and login. Enter the default password and we are greeted traffic between our desktop and wireless printer, then
networking with the Mate desktop, which provides a light feel, even our phone and the Pi itself. Wireshark is a powerful tool if
experts to use on the Raspberry Pi 4. ParrotOS is based on Debian used correctly – and legally, of course.
in their job. Bookworm and that means we have a strong foundation As for the more mundane Pi-centric features, yes
to work from. All the usual apps are there: browsers, we have the GPIO at our disposal. Both GPIO Zero and
office, graphics, coding and so on. But there is another RPi.GPIO worked, no problem. HAT compatibility is an
section: Pentesting. Penetration testing is a security issue due to PEP668 being used in Bookworm. You need
exercise that involves security experts attempting to to use a virtualenv in order to install the HAT software,
penetrate a company’s machines. With the correct and some just don’t like that. We tested Pimoroni’s
authority and skills, this is a business model that many Explorer HAT Pro and it failed to run. Wi-Fi and Bluetooth
companies use to keep their systems secure. All you worked well, as did Ethernet, but that is a given really.
need to learn is a Pi and your own network to play inside. ParrotOS is great for learning pentesting and ‘hacker’
Inside the Pentesting menu, we find submenus for skills. Yes, it can be used for nefarious and illegal means,
Information Gathering, Vulnerability Analysis, Password but that is not the intent of its creators. ParrotOS is a
Attacks and Wireless Testing. If Wireshark, Aircrack and means to teach learners the skills of their chosen career
Nmap mean anything to you, you know that ParrotOS using cheap hardware that is already in the toolkit of
has the tools for you. We also spotted a submenu for many hackers. We know of one security expert who hid
NFC and RFID analysis; interesting stuff if you have the the original Pi in a VOIP phone as part of a security audit.
correct components to make it work. Our only gripe with If you are looking to learn pentesting and security
the Pentesting menu is that many applications require skills, ParrotOS could be for you. Just use it wisely.
VERDICT
DEVELOPER: Parrot Security
WEB: https://parrotsec.org
LICENCE: Mixed
VERDICT
DEVELOPER: Bambu Lab
WEB: https://bambulab.com
PRICE: £1,319
It’s unusual to find a 3D printer that deserves the hype, but this
is one of the best prosumer desktop FFF 3D printers around.
Not the
smoothest of
prints but one Rating 9/10
of the fastest.
NTFY
Create notifications
from smart sensors
Les Pounder loves building gadgets with the low-cost Raspberry Pi
Pico W – and some of them, like this one, even work.
turn the connection on, then make a connection to our Send notifications
Wi-Fi access point. A short pause helps connection from your
Pico W to your
success; leaving this out means we get some
smartphone or
connection failures. Finally, we print the connection tablet without
status. If True is returned, then the connection is all the faff!
made; False means no connection.
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(“WIFI AP SSID”,”YOUR WIFI
PASSWORD”)
time.sleep(5)
print(wlan.isconnected())
Now we need to tell MicroPython where to find the
DS18B20 sensor. It is connected to pin 0 (top-left of
the Pico), so we create an object, ds_pin, to reference
it. Then we create another object, ds_sensor, and using
the ds18x20 helper and onewire modules, we can
make a connection.
ds_pin = machine.Pin(0) priority). The Tags option enables us to use an emoji in
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin)) the notification. We used the thermometer as it was in
DS18B20 sensors have a ROM number. These are keeping with the project.
unique to each sensor and that means we can have headers={
multiple sensors on the same onewire bus. If we buy “Title”: “Hourly Temperature Check”,
clone sensors, there is a risk that they will use identical “Priority”: “5”,
numbers. In this case, it doesn’t matter as we have just “Tags”: “thermometer”,
one sensor. We scan the onewire bus, and store the })
result in the roms object. Outside of the requests for loop but still inside the
roms = ds_sensor.scan() main while True loop, we use a sleep of 3,600 seconds
The while True loop will run the main body of code, (one hour) to pause the code between readings.
and the first step is to sample the temperature. This time.sleep(3600)
is required before we can get a reading. Add a short Save the code to the Pi Pico W as main.py. By doing
pause to ensure that the sensor is stable before this, MicroPython automatically runs the code when it
moving onwards. is powered on. Power-cycle the Raspberry Pi Pico W
while True: and check your mobile device for a Ntfy notification.
ds_sensor.convert_temp() Every hour you get the latest temperature sent directly
time.sleep(1) to your device.
Inside the while True loop is a for loop, which reads
all of the ROMs (DS18B20 sensors) on the onewire
interface. We read the temperature in degrees Celsius HANDY NTFY REFERENCE GUIDES
and save the output to an object, temp_c, which we
print to the Python shell for debug. It is fair to say that we have fallen in love with Ntfy. Its mix of ease
for rom in roms: of use and powerful features is intoxicating and it has led us down
temp_c = ds_sensor.read_temp(rom) many project paths. The basic guide on how to publish a message is
print(temp_c) at https://docs.ntfy.sh/publish/ and there we can find examples for
Create an object, temperature, and in there store command line, JavaScript, Go and Python.
the current temperature (temp_c) converted to a We are shown how to add an image to the notification, so using
string. Tag on to the end a space and C to format the Ntfy with the Raspberry Pi camera means we can send notifications
temperature as 19.5 C, for example. if a sensor is triggered – if the dog gets into the dining room, for
temperature = str(temp_c)+” C” example. To attach an image, we add Attach to the headers and then
Using requests, we send data to Ntfy services using pass the path to the image. Note that you need the absolute path, be
an HTTP POST request. We need to format this in it a local file or served from the internet.
order for Ntfy to understand it. First we need to supply What if we want the option to action something when the
the topic name – this should match what we set in the notification arrives? The Ntfy example is a dog ringing a doorbell
app. Next is the data that we want to send, in this case (go with us on this). The notification tells you that the dog wants to
it is the temperature object, which contains the gain entry, but the door is locked. The Actions option in the header
formatted temperature string. means we can trigger an event to happen. In this case, the dog is let
requests.post(“https://ntfy.sh/lxf-temp”, in after calling the doorbell’s API via HTTP (https://docs.ntfy.sh/
data=temperature, publish/#action-buttons).
The next part of the request is the headers. These Finally, if you want to use cool emoji, Ntfy has a list that you can
are extra features that we can pass to Ntfy. In this crib from. Just copy the text to the project code and the emoji is sent
case, we set the title of the notification to “Hourly with your message (https://docs.ntfy.sh/emojis/).
Temperature Check” and set it to priority 5 (high
application, which translates Windows function calls to platform and on its Steam Deck. Valve has gone to
Linux ones, thus enabling your Windows programs (be great lengths to ensure popular titles work with Proton.
they serious tools or relaxing games) to run on our So, if your favourite game doesn’t work with Wine
favourite operating system. That’s the theory, anyway. proper, there’s a good chance Proton can sort it.
In practice ,things may need some tweaking. Or they
may not work at all; Wine can’t work miracles yet. A fine bouquet
Be that as it may, there is a brand new release to try: Readers (and writers) may be no strangers to one form
Wine 9.0. It may be the solution to all your problems. If or another of Wine, but for this outing, we’re talking
you’ve never touched Wine before, we’ll show you about the fantastic bit of software that lets an awful
everything you need to get started. And if you’re a lot of Windows software run hassle-free on Linux. To
Steam Play is
peculiar warnings as it starts, and again these are 1.3.272, so Windows titles using new Vulkan extensions
enabled by default
nothing to worry about. The Applications tab lets you there will work and look nicer. See the Winetricks box on Linux for
choose which version of Windows to ‘emulate’, and this (right) for instructions to enable the Vulkan renderer. supported titles,
can be configured on a per-application basis. We won’t We avoided discussion of 32 vs 64-bit executables but flip this switch
get into substituting libraries here, but it is possible to earlier, but now we’re settled in, we should note that if you want to try it
on others.
specify whether to use Wine’s built-in version of a Wine now handles 64-bit Windows binaries in a much
particular DLL (dynamic link library) or a native file from more robust way. This is part of a years-long effort to
Windows. We will say that it’s a terrible idea to use revamp the WoW64 (Wine on Windows 64)
Windows files for low-level stuff (such as gdi32.dll, componentry. This allows 32-bit programs to run
ntdll.dll, kernel32.dll). Apart from one-off library without 32-bit libraries on the host system. And the
substitutions, it’s much better to use the Winetricks so-called new WoW64 mode also allows such apps
script (see box) to manage libraries. to run on a purely 64-bit system. This mode isn’t yet
The Drives tab shows you virtual drives and enables enabled by default (which is why our instructions add
you to set up additional ones (for example, for an ISO- the i386 architecture), and to use it you have to build
mounted DVD drive). Besides the C: drive, you’ll see a from source. The default old WoW64 mode runs 32-bit
Z: drive, which is your root filesystem. If you investigate apps inside a 32-bit process. The Wine devs state that
this further (seeing where Notepad++ can save a file, while the new mode should be fine, old mode is better
for instance), you’ll see that Wine has access to the for 16-bit stuff (maybe you prefer the Windows 3.1
same bits of the filesystem as you do. So, if you were to version of Paint) and OpenGL programs.
run some Window malware, it could very well trash
your home directory (or other places where you have
write access). The other tabs in Winecfg are best WINETRICKS AND PREFIXES
explained by the documentation.
Next, let’s check out the big news with this release, If you do enough experimentation, you’ll soon find a Windows
namely Wine’s improved Wayland support. If you’re not program that doesn’t seem to work with Wine. In this instance, your
running Wayland, this won’t be of much interest, but first port of call should be the Wine Application Database (AppDB,
Ubuntu (where Wayland has been the default for some see https://appdb.winehq.org). It’s a user-curated list of applications
time, even on Nvidia cards) users in particular would be and how well they work with Wine, with a ratings system and
well advised to check this out. Whatever your distro, remedial guidance for programs that require a little extra persuasion.
first check that you’re indeed running Wayland with: Generally, this persuasion involves using Windows native libraries
$ echo $XDG_SESSION_TYPE instead of those provided by Wine. Common offenders are the .NET
Hopefully, this says wayland . If not, log out and see and Visual C runtimes, various codecs and the quartz.dll library,
if your login screen gives you a choice of Wayland or which some games use for video.
X.org. To enable the Wayland support, we need to edit Rather than mess around substituting one library at a time, we can
a registry key. Windows aficionados might want to use use the Winetricks helper script to automate these fixes. Entries in
Wine’s own Registry Editor (see screenshot – p.45 – or the Wine AppDB often include instructions for Winetricks. An old
run wine regedit to see it for yourself), but it’s iteration is included in the Ubuntu repos, so you’re better off
probably easier to just type: following the manual installation instructions at https://github.com/
$ wine reg.exe add HKCU\\Software\\Wine\\ Winetricks/winetricks.
Drivers /v Graphics /d x11,wayland Wine’s experimental Vulkan renderer needs to be activated by
We also need to unset the $DISPLAY environment adding a registry key. But we can save several clicks by getting
variable, which is an X11-thang: Winetricks to do this for us:
$ unset DISPLAY $ winetricks renderer=vulkan
There isn’t anything else user-centric to configure By default (unless you compiled Wine yourself), Wine sets up
here, but with this enabled, Wayland users should see a 64-bit prefix at ~/.wine. It is absolutely possible to run 32-bit
better HiDPI support, have more luck when using applications from here. But if, for whatever reason, you want to set
multiple monitors and enjoy better desktop integration. up a 32-bit prefix at ~/.wine32, you can do so (taking care not to
In particular, titles exhibiting strange behaviour when confuse your wins and wines):
using mouse-look should behave much better. Wine’s $ WINEARCH=win32 WINEPREFIX=~/.wine32 winecfg
(still experimental) Vulkan driver now supports Vulkan
ecurity audits are like hobbies. You always vulnerabilities that could potentially be exploited to
to good use. But if you’re anything like us, you’ve Security audit for the masses
convinced yourself that performing a security audit Although the project is aimed primarily at system
on your system is a time-consuming exercise, and one administrators, security auditors/officers, penetration
that only seasoned veterans can carry out. Thankfully, testers and security professionals, its ease of use
OUR
with the right tool at your disposal, you can test your makes it possible for just about all manner of Linux
EXPERT system for vulnerabilities in almost no time at all. users to put it to into service.
Shashank Released under the GPLv3 licence, Lynis is a You’ll find Lynis in the software repositories of most
Sharma security audit tool designed to test your system across popular Linux distros. Run the sudo apt install lynis
is trial lawyer a vast array of categories, such as Boot and Services, command if you’re running a Debian, Ubuntu or
in New Delhi, Kernel, Memory and Processes, Shells, Fileystems, derivative distro. Run the sudo dnf install lynis
India. He’s been USB Devices, Storage, NFS, Printers and Spools, command instead if you’re on an RPM-based distro.
writing about Networking, SSH Support, Databases, Users, Groups Depending on your distro of choice, the version of
open source and Authentication, and more. While there are various Lynis on offer might be a little dated. Considering the
software for tools that can be deployed to test the vulnerabilities of nature of the project, it makes sense to always run the
20 years and any one of these categories, Lynis stands out because latest version. To grab the most up-to-date iteration
lawyering for 10. of its ability to test your system across so many areas. from the project’s GitHub page, run the git clone
Based on the tests it runs, Lynis offers suggestions https://github.com/CISOfy/lynis / command. This
and recommendations to help you address any downloads the latest version into the lynis/ directory.
The tool doesn’t require any installation
and you can test your system straight away
by navigating into the lynis/ directory and
running the ./lynis audit system / command.
But we’ll get around to that in just a bit. For
now, let’s get acquainted with the tool and
its functions.
From the downloaded lynis/ directory, run
the ./lynis show commands command for a
list of supported commands. You can also
run the ./lynis show help and the ./lynis
--man commands to get acquainted with
the tool (see table, opposite page).
When you run the ./lynis audit system
command, the tool audits your system
across its entire range of tests. While
running the audit, Lynis generates a lot of
output. Once the audit is complete, towards
the bottom you’ll find a list of suggestions
and details of the scan. For instance, on our
In addition to providing tips for general system hardening, Lynis also informs you of vulnerable test machine running Ubuntu 20.04 LTS,
software packages and possible configuration issues. Lynis ran 255 tests, with a hardening index
Command Description
./lynis --man Print the man page To ensure
./lynis show help Print the help screen security of your
installation, you
./lynis show Print all possible arguments must always use
anti-malware
./lynis show
Print all supported commands and antivirus
commands
tools, and it’s
./lynis show help good practice
Print help for specified command
<command> not to use the
same password
./lynis show across different
Print the default settings
settings accounts. For
./lynis audit Although useful, implementing all the suggestions would be most home
Run audit on the current system overkill for most home users. users, these
system
precautions
./lynis audit Run audit on specified are enough to
remote <host> remote system The output generated by Lynis is colour-coded for
safeguard your
quick assimilation of important information. Green is
system. After
used to confirm the presence of a scanned module or all, disabling
of 65 out of 100. Thankfully, there were no warnings, component. This is for information purposes only and USB support
but the tool did give us 40 suggestions for to improve doesn’t require further any action. Orange implies at the behest
the security of our system. suggestions that the tool wishes you to look up and of an audit tool
address. It could mean that the module or component can land you in
Understanding the tests is disabled. Red is reserved for components that the soup with
Due to space constraints, we can only list a few of the require immediate attention. your family.
warnings published by Lynis after the security audit: Some tests require root privileges, but you’ll face
* If not required, consider explicit disabling of core an error when you run the sudo ./lynis audit system
dump in /etc/security/limits.conf file [KRNL-5820] command. Instead, you have to first establish
https://cisofy.com/lynis/controls/KRNL-5820/ ownership of the file with the chown -R 0:0 command
and then run Lynis with sudo:
* Install a PAM module for password strength testing $ cd Downloads/projects
like pam_cracklib or pam_passwdqc [AUTH-9262] $ sudo chown -R 0:0 lynis
https://cisofy.com/lynis/controls/AUTH-9262/ $ cd lynis
$ sudo ./lynis audit system
* Configure maximum password age in /etc/login.defs As well as running an audit of the local system, you
[AUTH-9286] can also audit a Docker file. Considering its ease of use
https://cisofy.com/lynis/controls/AUTH-9286/ and the infinitely useful information generated, Lynis is
now on our list of highly recommended tools.
* To decrease the impact of a full /home file system,
place /home on a separate partition [FILE-6310]
https://cisofy.com/lynis/controls/FILE-6310/ IMPROVING SECURITY
* Purge old/removed packages (295 found) with For each suggestion, Lynis provides a useful description along with a
aptitude purge or dpkg --purge command. This will TEST-ID, such as FILE-6310. You can use these identifiers to read
cleanup old configuration files, cron jobs and startup more about the test with ./lynis show details <test-ID> . Alternatively,
scripts. [PKGS-7346] you can click the URL provided to read more on Lynis’s website.
https://cisofy.com/lynis/controls/PKGS-7346/ While some of the suggestions are easy enough to address,
even for newcomers, such as the one recommending purging old
* Double check the permissions of home directories as packages or installing a malware scanner, others might require a bit
some might be not strict enough. [HOME-9304] more effort on your part to understand and implement.
https://cisofy.com/lynis/controls/HOME- Throughout the output generated, a green [V] denotes a tick, and
9304/ a red [X] suggests an absence. On our machine, we have configured
a firewall but don’t have a malware scanner, so Lynis shows us this:
* Harden the system by installing at least one malware Components:
scanner, to perform periodic file system scans [HRDN- - Firewall [V]
7230] - Malware scanner [X]
- Solution : Install a tool like rkhunter, You don’t have to scroll backwards through your terminal screen
chkrootkit, OSSEC, Wazuh to access the results of the tests run by Lynis or the output it
https://cisofy.com/lynis/controls/HRDN-7230/ generated. You’ll find the same in the ~/lynis-report.dat data file. The
Refer to the Improving Security box (see right) on data file, however, isn’t colour-coded, unlike the real-time output
how to use these suggestions to harden your system generated by Lynis.
and protect yourself.
KAVITA
Credit: www.kavitareader.com
Build a streaming
ebook library
Bionic bookworm Nick Peers looks at a free tool that enables you to
collate, read and share your digital publications over the internet.
through your own user account, which has a UID and NAVIGATE YOUR KAVITA LIBRARIES
GID of 1,000.
By default, you need to manually restart Kavita
2 6
each time you boot your PC. To avoid this, issue the
following lines to set up a user-generated service:
3
$ podman generate systemd --new --name kavita -f
$ mv -v container-kavita.service ~/.config/systemd/user/
$ systemctl --user daemon-reload
5
$ systemctl --user enable container-kavita.service
4
First read through
Access to Kavita is through your web browser – either
localhost:5000 from your PC or 192.168.x.y:5000
1
from other devices on your network (replace
192.168.x.y with your PC’s IP address). It’s also simple
to extend access beyond your network, particularly if
you’re running Nginx Proxy Manager (see LXF306) – just
set up a proxy pointing to http://192.168.x.y:5000.
When you log on through your browser, you’re
invited to set up the administrator’s account. Supply a
suitable username and password (plus your email if you
want to be able to reset your password at any point –
this requires you to set up email after logging in) and Navigation pane Quick edit tools
then click to register. You’re then prompted to log in. 1 Quickly switch between Kavita’s main 4 Click the vertical ellipsis ( ) button next
views here – including top-level access to to a title or series to access extra options.
You’re shown the main screen – the annotation
your libraries.
(right) reveals how it looks once you’ve got a library up Activity meter
and running, but for now you’ll want to start adding Smart search 5 When the button is green, a scan is
content. Click the Server Settings link to be taken to 2 The keyword search tool displays taking place. Click the button to see what’s
the Admin Dashboard’s Libraries tab (you can also results as you type, split into categories going on.
such as libraries and files.
access the dashboard via the settings button next to User menu
your username in the top-right). On Deck 6 Click your username to access user-
Click Add Library. Start by giving it a suitable name 3 Kavita tracks the progress of your specific settings and any smart filters that
and type (the default Manga betrays Kavita’s focus, but books, enabling you to quickly jump back in. you’ve saved.
there’s a Book option, too). Click Next to select the
library’s folder (see the box opposite for how libraries clicking Home to reveal a card-like view displaying
should be organised). You’re next given the option of recently updated and newly added series – right now,
uploading a 32x32 library image (click Next to skip). they should contain the same content from your new
The Advanced section is where you determine library. Later, when you start reading through your
what file types to search for (EPUB and PDF are pre- content you’ll see an extra category – On Deck – which
selected by default). In most cases, all other options works in the same way as your media server does to
can be left as they are, so click Save and you’ll see put the content that you’re reading front and centre.
the library appear with its status displayed, as well On the left you’ll see navigation options, including
as options for refreshing (performing a new scan), options to browse each library you add. Click a library
deleting and editing. The latter option brings up the to view all its titles – dubbed Series – in the main
same four categories as before (General, Folder, Cover window. Click an individual title from here and you’re
and Advanced), which gives you the option of adding taken to its homepage where a Read or Continue
parent folders to your library, plus tweaking settings. button lets you read it from the comfort of your
browser courtesy of Kavita’s own document viewers. If you’re
Browse your library Next to this are further buttons. The first is a star – constantly
You’re ready to view your library. Use the navigation click this to add the title to your Want To Read list. adding new
tools on the left to find what you’re looking for. Start by There’s also a button for marking the title read or content to
your folder,
unread, followed by a metadata editing tool – see the
spare yourself
step-by-step guide (over page) for details on how this
continually
can provide information to help navigate your libraries. prodding the
Next is the … button, which reveals a pop-up menu. library update
Many of these options are duplicated elsewhere, but button by
the menu is also accessible from other views (look navigating to
for the button next to a series or title), so it’s worth the Admin
familiarising yourself with its various options as you Dashboard’s
can quickly add titles to other lists with fewer clicks. General tab,
Beneath these buttons you’ll find information about then scrolling
down to enable
the file (including format, length and estimated reading
the folder
time). If there’s any metadata tagged in the file – only
watching
Use smart filters to build highly customised views of your libraries – applicable to EPUB files – then it may be displayed setting.
these are accessible via your personal user menu. here, too, giving you access to the author (or writer as
Kavita terms it), tags and other information. These can the Smart Filters entry under your own user menu
be used as quick search filters – click the Writer tag, in the top-right corner of the Kavita user interface.
Everyone needs for instance, and you’re shown a list of all titles in your Other navigation options listed on the left include
a backup, and collection with that author tagged. Collections, Reading Lists and Bookmarks. Collections
Kavita is no enable you to group your choice of individual titles (or
exception. It A good bookmark series) together. Click the vertical ellipsis ( ) button
automatically If there are too many titles to view, look for the filter next to a title and choose Add To > Add To Collection,
backs up your button in the top-right corner of the main window. then create a new collection or select an existing entry.
database on Click this to discover how Kavita displays the content Reading Lists work in a slightly different way –
a daily basis
of your library – via smart filters. The shortcuts on the again set them up from the Add To menu. Here, items
(you can change
left of each library basically create a view that displays (anything from a single chapter to an entire series)
this via the
Tasks tab on all titles, filtered to show only those in the currently can be grouped together in a list. Once created, click
the Admin selected library. Reading Lists on the left followed by the list to see your
Dashboard). From here you can create all kinds of different titles arranged in the order you added them. You can
Visit https:// views using a combination of smart filters. You’ll rearrange them via drag-and-drop, plus remove or read
wiki. see filters can be based on series name, metadata individual titles. Click Continue to start reading (and
kavitareader. (including writer and tags), file path and more. These later pick up from where you left off). When you finish
com/en/install can be combined and configured to focus on specific one title, the next one automatically follows on.
for details matches or broadened to span multiple libraries,
on where
the backups
authors or whatever you’re looking for. Reading the words
Filters can be given a suitably descriptive name, Reading a book is as simple as clicking its cover
get stored.
enabling you to save them for easy retrieval later via followed by the Read button. Kavita provides you with
SYSTEMD
Credit: https://systemd.io
•
should go. That’s the start of SysV’s init and init.rc files. to start.
Enthusiastic Linux users can find these files in /etc/ Targets group services needed for each type Sinit is the
init.d, /etc/rc.d or similar. At first, the files were pure of operation. simplest you
shell scripts. Convenient if you are always writing shell While Upstart development was going on, can choose.
scripts and educating people about them. Not so good developers came up with other solutions. Both In 91 lines of
for personal users or even companies. Solutions, in the corporate entities (read Apple) and the BSD code, it may
’70s, were to create a special format for these scripts. communities created other solutions. When it was be impossible
to go smaller.
You find the version numbers of these systems in time for a shakeup, Red Hat employees Lennart
You need to
the name. Earlier Unix systems, called System Poettering and Kay Sievers took inspiration from
combine it with
[number], ending up at V (five.) Which leads us to talk Launchd of Mac OS. Daemontools-
about System V in this article. Unless you want to dig That inspiration started the Systemd effort. The encore, at least
all the way down, SysV is the ‘old’ established system. main goal of the project is to unify the init process for according to the
Old-school hackers consider SysV adequate and all of Linux. In technical terms, the goal was to add Suckless project
simple to use as it depends on shell scripts. Parallel parallelism in boot while also replacing different website.
starts were not well supported, though developers daemons. Some of the services Systemd can handle
had made efforts on this front. include network, devices and user management. You
Linux’s first init system was rudimentary; its name is can also create your own services; the simplest is to
simpleinit. In this system, you would fill the /etc/inittab create a Systemd timer instead of using Cron or At.
file with a simple table containing TTYs, the boot Systemd’s target roughly corresponds to runlevels,
program and the value of PATH and INIT_PATH. The though it handles dependency instead. In Systemd,
boot process simply follows the INIT_PATH and dependency decides which service must run before
executes all scripts contained in the directory. If you starting any other service. You use service files for
have a bootprog value, it only runs that file the same control, they contain statements such as After, Before
happens when the INIT_PATH is a file. and Wants. These are all handling dependencies, not
Seeing the way simpleinit works, you are up against sequence. The main keyword regarding this is target.
another quirk: if you put init=someprogram in your A target is similar to runlevels; they change what
boot options, ‘someprogram’ runs. You can use this to type of system you run. On a desktop, that means
start even a regular app. Usually, this is a terrible idea whether you have a text-only system or a graphical
as you’ll drop the system’s stabilising features. you can desktop. When you run a server, a potential target is a
consider it when you build small embedded systems, web server and all that entails. For specialised cases,
using toolkits like Buildroot. you write the target file yourself.
The developers at GUIX have their own ideas about
Ubuntu the Upstart distro the init system – they call it Shepherd. These ideas
In the first serious distribution, SLS (Softlanding Linux lead to differences, but not too many. The main one is
System), they deployed simpleinit as the default. For that it can start user services and that you configure
various reasons, other distros quickly superseded SLS. with the GNU GUILE programming language, an
One was Slackware, which is still around. implementation of Scheme. Shepherd is still in version
Their init systems quickly moved to SysV, and 0.10, so may not be fully stable and it may be lacking
mostly remained there until Ubuntu had other ideas. some features. However, if you install the GNU GUIX Systemd has more
Canonical wrote a document to improve initialisation distribution, you get Shepherd as default. options to fill in
and supervision of services. Part of this effort is and uses the INI
file type; this is
Upstart, no longer default in Ubuntu but available for One init to rule them all where controversy
enthusiasts (https://wiki.ubuntu.com/ReplacementInit). Chances are that you, reading this, are running erupted during
Taking into consideration new, at the time, USB Systemd. All major distributions default to using development.
devices entering the market, the developers
considered “events” as the basic concept for their new
system. Event-driven systems define what any service
needs before it starts. As an example, an SSH daemon
waits for the event of networking running. As control
lies with init, it controls what happens at all times.
At the time (2006-ish), the kernel developers added
hot-plug features in a reaction to support for the
aforementioned USB devices. The thinking then
became focused on the events caused by changing
hardware during runtime. Mounting disks that may or
may not be there during boot is unreliable, making it
necessary to wait for the event when it becomes
available. Other issues that need this are network
attached filesystems. Upstart, while popular, was short-
lived in the history of init.
Systemd. The biggest reason for this is that it covers all case “$1” in
bases. As you saw earlier, this also causes it to be big start|reload|restart|force-reload)
Are you adding and complex. If you want to learn how to use it, you echo “autospawn=yes” > /run/pulseaudio-
your own would be wise to try small experiments. Some changes enable-autospawn
services and risk the stability of your system, although Systemd is ;;
wonder what extremely robust. stop|status)
will happen To make experiments while staying safe, you can ;;
when you write scripts for any typical initialisation system and esac
mess it up? start it once. The simplest and safest way to this is The header files contain an LSB-style stanza that
Fear not – at to stop GRUB before boot and add init=/sbin/init/ to controls the rules for the service. In the code above,
least runit can
your kernel options, changing the init string to your you can see that it requires the local filesystem to
run alongside
your existing
needs, of course. This makes your system boot using run. Next you see how the service should react to
solution. your alternative init file but doesn’t change your next runlevel changes. On the first lines of the actual script,
boot. A reboot clears all sins away. it sets the environment variables and then loads any
necessary functions.
SysV scripts Below, you see the case statement, which refers to
The power of SysV is that you control it using shell the options you can give the service command when
scripts – this makes it simple to add your own services. handling the service. For any service, you can add a
All you need to learn are the basic ways SysV reports script that runs for these occasions. If you are curious,
status and handles the state of services. any common distribution still leaves these scripts on
#!/bin/sh your disk for backward compatibility.
### BEGIN INIT INFO To start a service, you would call it from its original
# Provides: pulseaudio-enable-autospawn position in the hierarchical filesystem. To run the above
# Required-Start: $local_fs script, you would run /etc/init.d/pulseaudio-enable-
# Required-Stop: umountfs autospawn start . As it calls the script, the case is start
# Default-Start: 2 3 4 5 and the service starts. During boot, the script runs
# Default-Stop: 0 1 6 since it is in the correct directory.
# Short-Description: Enable pulseaudio autospawn
# Description: Enables autospawn for the pulseaudio Upstart scripts
daemon Upstart scripts do the same thing but try to be more
### END INIT INFO compact. The focus is on dependencies, so you set the
start and stop conditions. Runlevels are still a major
set -e part of the system, so you need to define those. What
enthusiasts love about Upstart is that you can choose
. /lib/lsb/init-functions any conditions for starting a service.
In the code below, you can see that the Nginx
server starts when the filesystem and the network are
up. You could choose any other state to compare to,
even your own homemade service. That service could
SMALL SYSTEMS - YOUR ROBOT! ping a known server and start only after you know that
is running.
It’s common for small systems, like a robot, to use BusyBox. In this # nginx
case, you can use minirc; this works just like runit but is even smaller. # description: nginx http daemon
The developer has focused on making small binaries and a simple # author: George Shammas <[email protected]>
setup. Taking the init scripts from Arch Linux, they could create an
extremely small system. description “nginx http daemon”
In this solution, a comma-separated variable denotes which author “George Shammas <[email protected]>”
daemons are configured. Another variable, ENABLED, contains a
list of all services that start on boot. To configure new services or start on (filesystem and net-device-up IFACE!=lo)
override the standard settings and services, you change a single stop on runlevel [!2345]
configuration file: /etc/minirc.conf.
For even more granular control, you can support other udev env DAEMON=/usr/sbin/nginx
solutions, making it possible to minimise memory or improve env PID=/var/run/nginx.pid
functionality by choosing between mdev, Systemd, udev and eudev,
a fork of udev. If you need special scripts to run, the program runs pre-start script
/etc/minirc.local, where you can put your shell scripts. There are lots # Perform pre-start actions
of examples on GitHub that you can use to create your own. $DAEMON -t
If you want to play with this, consider the difference between init if [ $? -ne 0 ]
scripts and service managers. Known service managers are monit, then
perp, s6 and supervisord. It’s common to choose from init scripts exit $?
and service managers in conjunction. You can choose any combo, fi
even use a combined binary (runit is one) and combine it with end script
another service manager. To find out more, start with the GitHub
page and search the Arch Linux wiki: https://github.com/hut/minirc/. exec $DAEMON
# Allow respawning of the NGINX process dependencies, help with logs and even use runlevels,
respawn as in SysV and friends. If you want to try it out, you can
respawn limit 10 5 actually run it together with Systemd and other service BusyBox
The interesting part of this script is that you could management software. replaces the init
use any conditions in the prestart script. Another neat daemon with
feature is setting a respawn limit, in case things are Reasons to switch itself, using a
repeatedly going wrong. Upstart, due to its simplicity, For your ordinary desktop or laptop system, there single file (/etc/
init.d/rcS) for
was popular for a time but as Systemd started rolling is no real reason to leave – and plenty to keep – the
configuration. It
out, the mass of features won out, making Systemd the default init system. However, those who do have
has few features
default in most distributions. Running Upstart scripts intimate knowledge of the implications or want that due to its small
varies from SysV in that you must use the service knowledge may want to switch The debate about how size – it is, after
command with the same options: sudo service nginx Systemd works is nitpicking over details that have the all, intended
start . Most other actions work the same. most impact for administrators. for embedded
While this debate is healthy, bringing new ideas systems.
Systemd scripts and solutions to the Linux space, it does not help the
They are not really called scripts in Systemd; rather, ordinary user in the short term. On large servers where
they’re specifications for a service, unit and so on. The every improvement counts, it is useful to see how the
files use the INI format, with sections for what you are system performs with the different options.
trying to achieve. The most common sections are Unit, Equally, when you have a project that requires
Service and Install. There are a myriad of keywords to saving every byte for other jobs, you need to think
control the behaviour of each service or unit. Most of about the init system. This is where you might switch
these keywords are easy to grasp if you understand to something simpler. Mainly, this can be beneficial if
the main idea of how Systemd keeps your system you choose a limited number of applications. You might
stable and efficient. In the below code, you can see want to just run monitoring software and display it. The
an example of a service that runs in the background. number of packages plummet when your ‘system’ is as
[Unit] small as a credit card.
Description=EarnApp The story of init scripts in Unix and similar systems
Wants=network-online.target is fascinating but moves slowly. The reason is that they
After=network-online.target need to change only in response to other changes. A
major change came with hot-plug functions in the
[Service] kernel; next came the cgroups functionality. Both of
Type=simple these developments gave administrators a strong
Restart=always reason to also take advantage in the boot and
RestartSec=5 management of their systems. As a regular user, you
ExecStart=/usr/bin/earnapp run now have the advantage of this faster boot and robust
User=root response to new drives.
StandardOutput=null If you have the inclination to dig deep into how your What makes
StandardError=null system works, this is a fascinating subject. Be aware, Systemd seem so
though, that the system you are testing in will be complicated is the
wide array of files
[Install] unbootable at one point or another when you change that link to each
WantedBy=multi-user.target such things. Be careful and have fun! No progress other to make
happens without failure – personal or for humanity. things run.
Runit scripts
This system is extremely simple to use; the core of
runit is /etc/sv. In this directory, you put a directory for
each service with the script, always named run. Most
scripts are less than five lines of code long. When you
have those files, you link the directories to /etc/service
to activate. The runit notices the new service within
five seconds and starts it.
#!/bin/sh
TZ=MET-1METDST
export TZ
exec /usr/local/apache2/bin/httpd -DNO_DETACH
Look through the code – this is a long example.
Two lines of settings are there to make sure the
environment is correct for this service. When you have
applications that need more parameters, you start it by
adding a call to the config file, the way you would from
the command line.
With start, stop and restart, it seems to do
everything expected from an init solution. It can handle
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!
2 GREAT
WAYS TO
SUBSCRIBE
Digital-only
and
print+digita
l
bundles!
Ultra-smooth home
game streaming
Promising the Sun and the Moon, Michael Reed’s heavenly bodies
promise perfect gaming streaming on most PC hardware.
Sunshine is configured using its web interface. Note that you don’t Moonlight’s configuration options. Our first port of call is usually to match the
have to be logged into this to connect to Sunshine from Moonlight. resolution with that of the device we’re using.
a DEB installation. More importantly, Flatpak uses Sunshine is running, its configuration pages should be
sandboxing to lock off system resources from a accessible at https://localhost:47990/. You can also
program that uses it. In the case of Sunshine, we found get to this page by selecting the Open Sunshine option Adding
that many of the examples from the documentation when right-clicking on the status area icon. There is a Moonlight to
wouldn’t work when we tried to expand the system small wrinkle at this stage because most browsers an Amazon
beyond basic desktop sharing. We could run Steam complain that the site is not secure. This is because, Firestick
over desktop sharing like any other application, but at the time of writing, the Sunshine server does not simply involved
we couldn’t launch Steam directly from Moonlight. produce a valid SSL certificate. However, as this is a searching for
the app in the
Flatpak is worth considering if you simply want server running on your own computer on your own
Applications
desktop sharing and an easier installation experience. network, it is safe to ignore the warning and continue menu. It worked
Go for DEB or RPM if you want to be able to expand to the configuration web page. well on a TV, but
the system in areas such as directly launching software With what you have so far, you should be able to it’s the user’s
and other things that require access to the overall connect to the Sunshine server on one machine with job to connect
system, such as directly launching emulators. the Moonlight client on the other, so you can view and the needed
We installed the DEB version to Linux Mint and control the desktop of the other computer. input devices.
Ubuntu-based systems, to explore everything the Start by discovering the IP address of the Sunshine
system was capable of. This wasn’t completely server. How you do this depends on your distribution,
straightforward because we had to manually add some but what works on nearly all Linux distros is to issue
dependencies (libmfx1, libboost-log1.74.0, libboost- the command ip a . This is the line of interest on a
program-options1.74.0). If you go this route, Sunshine Linux Mint computer:
can tell you if there is an updated version available, and inet 192.168.0.22/24 brd 192.168.0.255 scope global
you have to fetch and install it manually. dynamic noprefixroute eno1
Once you have installed Sunshine, it should be Typically, you’re looking for a number in the form
runnable from the standard desktop launcher. When of 192.168.x.y. The first variable part, x, is normally
you do this, the server configuration and management either 1 or 0; y is the number that the computer has
tool opens in a browser tab, where you can enter a been assigned on the network. The first part of the
password and username. You can launch Sunshine IP address tells network devices that this is an
from the command line, which causes it to spew forth address on your internal network rather than out
some useful logging information. However, when the on the internet. There are other schemes but most
web interface is running, it has a Troubleshooting tab routers default to 192.168 for this part. In the example
with a fully searchable logging section. above, the complete IP address for the server
See the official documentation (accessible through computer is 192.168.0.22.
the https://github.com/LizardByte/Sunshine site) if
you want to autostart Sunshine on your computer. Orbital pair
Sunshine is actually implemented as a service, and Run Moonlight on the other computer. You’re greeted
you have to copy the example from the docs. Having with an empty machine selection screen. Add a new
configured this, as per the docs, you can start Sunshine server by clicking on the + icon on the bar at the top of
with systemctl --user start sunshine and enable
automatic startup with systemctl --user enable
sunshine . However, it’s better to manually launch
Sunshine while you’re still testing it and setting it up.
EMULATION
Emulator options
We found two options for emulating the MK14 in MK14’s display. And if you deselect ASCII, then the
software and online. A software solution – at least in lower display disappears.
theory – is the open source ZEsarUX (https://github. If you want something as close as possible to the
com/chernandezba/zesarux), which is available for appearance of the MK14, the ASCII display would
Linux. Generally thought of as an emulator of the be your best choice. However, if the SVG version is
classic Sinclair machines, it also includes support for displayed, you also get several status LEDs. These
the MK14, but not in our experience and there’s no weren’t available on the MK14, so you might consider it
documentation to help. cheating to use them, but they could make debugging
Instead, an online emulator would seem entirely easier. If you do decide to ignore them, though, this
appropriate for your brief foray into programming the status information was written to various memory
MK14. And the good news is that we found one that locations when execution returned to the monitor The MK14
does the job admirably at www.dougrice.plus.com/ program. This is described in the original MK14 wasn’t the only
dev/seg_mk14.htm. We did have to carry out a bit of Training Manual, which you can find at https://bit.ly/ minimalist
computer based
detective work on the user interface to get the best lxf314manual. Also on the subject of documentation,
on the SC/MP.
from it, though, so here’s what we discovered to give another useful resource is National Semiconductor’s
In 1976, Bywood
you a helping hand. SC/MP Programming and Assembler Manual, which is Electronics
First of all, by default two versions of the 8-digit available from https://bit.ly/lxf314scmp. released the
seven-segment display are shown, the upper one Next up is the keypad and, again, there are two £56 SCRUMPI
having the red segments on a black background, the variants, arranged side by side. The left-hand one kit. Its user
lower one on a white background. The status of these claims to be for touchscreen use, and the right one for interference
are controlled by the two checkboxes labelled ASCII use with a mouse. However, while we didn’t try the comprised just
and SVG against Display Using. Initially, only SVG is emulator with a touchscreen display, we found that toggle switches
checked and only the lower display reflects what would both worked with a mouse. And if two options are and single
(not seven-
have appeared on the MK14’s display. If you also select good, surely three are better. And that third option
segment) LEDs.
ASCII, then the upper display also starts to reflect the involves using keys on your keyboard, but that only
A PCB and
ROM chips from
JM Precision enable you BudgeTronics’s
to build a replica MK14, like low-cost MK14 hardware
this one, if you buy a few emulator uses a PIC chip
other components. instead of an SC/MP.
works if you first click in the yellow box against Type op-code – that is, AA hexadecimal – into the
Keys Here. Note that, in addition to the 20 keypad keys, processor’s accumulator. Next comes XRI, which
there appears to be a 21st key labelled RESET. This stands for XOR Immediate, XOR being exclusive OR. It
actually emulates the MK14’s reset button, which was a XORs the value in the byte after the op-code – that is,
pushbutton separate from the keypad. 55 – with the value in the accumulator, the result being
stored in the accumulator.
SC/MP assembler On to the ST instruction, which stands for Store.
So, now you know your way around the emulator, it’s Its purpose is to store the value in the accumulator to
time to try your hand at entering and executing some the memory location that is obtained by adding the
code, and perhaps graduate to writing your own code. contents of the next byte, in this case 2, to the program
Given the MK14’s modest specification, and the counter. Since the next and final instruction is just a
limitations imposed by that hexadecimal keypad, you single byte long, this causes the value in the
probably won’t be surprised in the least to learn that accumulator, which is the result of the program, to
Basic wasn’t an option. Instead, programming was appear immediately after the program code. And finally
at a much lower level. It wasn’t even possible to enter we have that final instruction, XPPC, which exchanges
code in assembly language– instead, it had to be the contents of the program counter with that of a
programmed in machine code. This meant that you specified pointer, in this case pointer 3. Even though
had to think in machine code or, alternatively, you had the SC/MP didn’t have an instruction to call and return
to assemble your assembly language source code by from a subroutine, it could be implemented in software.
hand, a notoriously error-prone process. Depending on And, on the MK14, the XPPC 3 instruction caused
how much you hanker after the true MK14 experience, control to return to the monitor program.
you might think you could miss all this out by using an And finally, before you enter and run the code, let’s
assembler, albeit not on the emulated MK14. We didn’t follow it through by hand to see what you should
manage to find one, though, at least not one for Linux, expect to see. After the LDI instruction has executed,
so there’s a possible project for you. the accumulator contains AA. The XRI instruction then
As a first exercise, we suggest you enter and XORs that AA in the accumulator with 55. If we point
execute the first program shown on the emulator’s out that the binary for AA is 10101010 and the binary
web page, and it’s trivially simple. Here’s the code, as it for 55 is 01010101, it should be clear that, after this
would appear in SC/MP assembly language: instruction, the accumulator will contain FF – that is, CREDIT: http://jmprecision.co.uk, Henk Verbeek, www.budgetronics.eu
START: LDI 0AA 11111111. The web page describes exactly what keys
XRI 55 you need to press to enter that code, starting at
ST 2 address 0F22, and to execute it. After it’s executed,
XPPC P3 the monitor displays the address and contents of the
To start, a couple of introductory comments. First, location after the end of the program. What you should
we’ve given the first instruction a label, specifically see, therefore, is 0F29 FF . The key sequence to enter
START, even though it’s not really needed because it’s and execute the code, as shown on the web page, is
The memory
not referred to by any other instruction. However, such fairly self-explanatory.
capacities of
early micro-
labels will be needed in more complicated programs, There are additional and more complicated
computers, so we’ve added it here so you can recognise labels in programs on the web page to try, but the source code
like the MK14’s the later programs. And second, the XPPC instruction isn’t shown for most of them. Nevertheless, while it’s
256 bytes, will is followed by P3, which is the syntax used in the still not too much more complicated, you might like to
be quite an SC/MP manual, but the MK14 manual uses just 3 try the second example, which writes directly to the
eye-opener instead. We’re not sure whether both are valid or segments of the final digit of the seven-segment
to today’s whether different syntax was used in different display. And if you can forgo the experience of entering
programmers. assemblers. Since you’re probably not going to be endless sequences of two hexadecimal digits followed
After all, that’s using as assembler, though, it’s a moot point. by the mem key, there’s an easier way to enter and
just a quarter
Now to the instructions. The first instruction is LDI, execute the code. Just click on the Setup button below
of a billionth of
which stands for Load Immediate. Its purpose is to load the program listing to enter the code into memory, and
a gigabyte.
the value stored in the byte after the instruction’s then click on Go. Running the second example causes
couldn’t find any for sale, but reports suggest that, if looks like an MK14, or at least has a similar keypad
you can find one, you’d pay between £500 and £700. and display, but uses different components. Indeed,
That’s surely only for the serious collector. There are these have been built, and some are available for sale.
lower-cost options, though, as we’re about to see. Typically, the SC/MP is replaced by a more modern
First up, we note that bare PCBs from which you microcontroller that’s programmed to emulate the
could build your own MK14 are available for around SC/MP’s instructions and the operation of the MK14’s
£25. The potential snag, though, is getting hold of the monitor program. One such product is provided by
obsolete parts to solder on to these circuit boards, BudgeTronics (www.budgetronics.eu) and it costs just
most notably the SC/MP, the ROM containing the €45. It uses a PIC microcontroller, so the board doesn’t
monitor program, and the 2112 RAM chips. However, look much like an MK14 of old but, crucially, it has a
this doesn’t seem to be as much of a problem as we’d similar-looking keypad, and it has an eight-digit seven-
feared. A PCB that’s an exact replica of the original segment LED display. And what it lacks in not looking
MK14 circuit board is available from http://jmprecision. like an MK14 it makes up for in usability – that display is
co.uk. Also available from the same source is a pair of much larger than the tiny one on the original MK14.
ROM chips, pre-programmed
Housed in a 40-pin
with the monitor code, and they
DIP package,
say that all the other parts are the National
available. Indeed, we can confirm Semiconductor
that SC/MPs (in the guise of SC/MP looked
INS8060) and 2112s are much like its rivals
on the outside.
available. If you shop around,
we estimate that you could
build a working MK14 in this way
for not much more than £150.
And it just so happens that, in
real terms, this is about £70
cheaper than it would have cost
to buy a real MK14 back in 1977.
OPENSCAD
Credit: http://openscad.org
Part two!
Catch up by
Scaling operations.
Careful readers of last month’s tutorial on OpenSCAD
may worry about the small dimensions – if the
intended size is 100mm, passing in 10 does not work. Combining scale and twist leads to modern-art-like results…
$fn parameter discussed last month – to limit the The first step is creating a module called vase that
amount of computation required to finalise the model, will contain the – so far freestanding – markup for
the number of copies placed above one another is creating the vase structure. After that, the following
limited. Fortunately, the slices parameter permits the bit of code is used:
alleviation of this situation: scale(1.1)hull()foot();
linear_extrude(100, scale=2, twist=180, slices=1000) vase();
{ module foot()
r = 30; {
Selecting the correct number of slices is best done difference()
via computation; in the case of the 3D printer used to {
print the object, the smallest sensible layer height is vase();
0.1mm. Dividing the intended height by the number of translate([0,0,101])cube([200,200,200], center=true);
layers yields the parameter shown here. Incidentally, }
the rendering shown in the screenshot (opposite page, }
top-left) indicates that smoothness has dramatically module vase()
improved. As always, creating excessive amounts of {
detail should be avoided – it does nothing except ...
waste CPU time. }
While the markup is quite long, it is actually very
A firm bottom simple. Firstly, the module foot uses an enormous cube
One of the more painful experiences of people who to cut out a small slice of the entire vase structure.
undergo a computer-first learning cycle involves In the next step, the results are fed into the hull
the limitations of real-world processes. A common operator – hull is a volumetric operator that wraps the
example would be PCB layout software, which can geometry in its entity.
be configured to create printed circuit boards with Finally, the resulting object is scaled to create the
geometry so small that they will remain out of structure shown (opposite page, top-right).
commercially viable PCB production for at least In the next step, a similar approach must be
a decade. taken for the lid. In that case, however, the hull
Our vase is similar in its current state – it would operator is slightly critical – it would create a solid
create three objects that would fall apart. Fortunately, plane. Fortunately, this problem can be solved by
this problem can be solved by printing a base. creating arbitrary geometry for the free space. This
In theory, this base could be created from a more- leads to the following structure:
or-less arbitrary geometric solid. Allow us, however, to scale(1.1)hull()foot();
suggest a slightly different approach that showcases vase();
the power of the OpenSCAD description language. difference()
Things look much smoother after the adjustment. This stand will improve the robustness of the design.
PROTON-GE
Credit: https://github.com/GloriousEggroll/
a boot menu that allows Recovery Mode options – prevent boot), and more. local provider and spending an
you to manage these usually for the latest kernel It’s a very useful thing to extra £90 on a mobo with an
things. When booting up, version. This enables the know about, but it seems a Intel network and wireless,
hold the Shift key (for BIOS low-level rescue mode, lot of people are unaware. making a decent experience.
ONLYOFFICE
Credit: www.onlyoffice.com
Collaborate with
OnlyOffice DocSpace
Nowadays, online document collaboration is a must. OnlyOffice DocSpace
allows organising this effectively. Kseniya Fedoruk shows how to set it up.
To enable the
E together with our colleagues, team members
and various external users. Sometimes (or
AI assistant, maybe often) chaos breaks out; the necessary editing
access the rights are missing, important files can’t be found, or
Plugin Manager co-workers from another department don’t leave
in the opened suggestions but edit the text directly. Such a scenario
editor via the can cause serious problems, especially when it comes
Plugins tab, find to sensitive documents such as contracts.
ChatGPT and
Keeping this in mind, it’s important to choose a
click Install.
solution that helps eliminate such difficulties. In this
guide, we’ll introduce you to the features of OnlyOffice
DocSpace and explain how to install the server build on Creating a Custom room in OnlyOffice DocSpace.
your Linux machine.
OnlyOffice DocSpace is a room-based environment real time. In Public rooms, external users can view
for organising a clear file structure depending on your documents without registration. Custom rooms are
needs. The platform comes with integrated online designed for any custom purpose – for example, to
viewers and editors, enabling you to work with files request document review or comments, or share any
in multiple formats, including text docs, digital forms, content for viewing only.
sheets, presentations, PDFs, ebooks and multimedia. Flexible access permissions enable you to fine-tune
the access to the whole space or separate rooms. So,
Your new room available actions in a room depend on the given role.
DocSpace rooms are group spaces with preset
access levels to ensure quick file sharing and avoid Role Function
unnecessary repeated actions. Currently, among the
Owner Creates and manages DocSpace
provided room types there are Collaboration, Public
and Custom rooms. DocSpace admin Manages DocSpace
Security settings
in OnlyOffice Collaboration rooms are intended for co-authoring Room admin Manages rooms
DocSpace. documents, tracking changes and communicating in
Power user Can create and store their own files
Only has access to the rooms
User they are invited to; can’t create
or store files
Editor Can edit docs
Viewer Can view docs
Reviewer Can suggest changes
Commenter Can leave comments
Form filler Can fill out forms
AI helper
OnlyOffice DocSpace comes with an AI helper in
the form of a ChatGPT plugin accessible right in the
Working with
various content
types in OnlyOffice
DocSpace.
Developers and
integrators can
make use of
the open API
of OnlyOffice
DocSpace to
integrate the
whole space
or separate
rooms into
their own web
applications:
http://api.
onlyoffice.com.
editors. It allows running word analysis, generating Download the Docker script file with:
images and keywords, summarising, translating and $ wget http://download.onlyoffice.com/docspace/
rewriting texts, fixing grammar and spelling, finding docspace-install.sh
synonyms, building code and so on. Once ready, make sure you have the root rights and
Customisation settings enable you to tailor continue. You can install OnlyOffice DocSpace from the
OnlyOffice DocSpace to your liking. You can set the DEB or RPM package with:
language and time zone, change the space name and $ bash docspace-install.sh package
URL, add a description for the Welcome page, upload Or by using the Docker script with:
your own logo and select the colour scheme. $ bash docspace-install.sh docker
Once finished, launch your browser and type the
Security local network computer IP address into the address
OnlyOffice DocSpace is a secure way to work with bar. On the DocSpace setup page, enter your email
both personal and company documents. HTTPS address, set a password, and accept the licence
protocol encrypts traffic in transit, JWT protects files agreement. At this stage, it’s also possible to set the
from unauthorised access, and it’s also possible to language and time zone, choosing the necessary
enable password protection and watermarking. option in the corresponding drop-down list. When all
Along with various access levels, space admins the parameters are set, click the Continue button.
are also able to adjust the security settings to control That’s it! OnlyOffice DocSpace is perfect for
the login procedure and prevent data leaks, including organising effective and protected collaboration with
such options as 2FA and single sign-on, trusted mail all types of users. Install it on your own Linux server to
domains and session lifetime, IP restriction and so on. get complete control over your data and its location.
To monitor user activities, Login History and Audit Trail
features are available. Automatic and manual data
backups ensure your data remains safe in case of any SELF HOSTING
infrastructure failures.
OnlyOffice DocSpace can be hosted on your own server as well as in
Installing DocSpace the trusted public cloud. For the cloud version, there is a completely
Installation of OnlyOffice DocSpace on Linux servers free Startup plan for individual users and smaller teams. If you would
is available using an automatic script with Docker like to opt for a Business subscription, you only need to pay for
installed. minimum system and OS requirements are: admins and power users with extended rights. All other regular
• Quad-core CPU (six-core recommended) users can be added for free. The self-hosted version provides a free
• 8GB RAM (12GB recommended) DocSpace Community. There is also a Family Pack for home use, as
• 40GB of free HDD storage space well as DocSpace Enterprise for bigger teams and companies. To
• 6GB or more of swap space create your own OnlyOffice DocSpace, visit the www.onlyoffice.com.
• 64-bit (AMD64) Linux distro with kernel 3.10 or later
CHATGPT MASTERCLASS
Make AI work for you
Want to get more from the best-known AI service on the planet?
Barry Collins and Neil Mohr explain how to make AI work for you.
penAI’s now infamous chatbot has a series party services to plan holidays, book restaurants or
if only for a month, so you can evaluate the sheer explore prompt engineering, the fascinating area of
power that lurks here and work out whether it could getting the best out of AI’s by formatting, one-shotting
make a difference to your professional – or even your and chaining prompts to manipulate the AI into
social – life. generating evermore complex responses.
ChatGPT Plus can perform hugely sophisticated Then there are GPTs – mini chatbots. Create and
data analysis, saving you from having to spend time train your own AI without having to bash out a single
learning how to do it yourself in applications such as line of code. Made with plain English commands they
Excel. It can tidy up your computer code, your emails or can be trained on your own data, so are highly
your PowerPoint presentations. It can hook into third- personalised to you or your business.
There can’t be a reader out there who hasn’t spent deals with the US site – but it’s good for generating Above: Extend
at least 10 minutes noodling with ChatGPT – or one of ideas and rough budgets. ChatGPT’s abilities
with specific
its many derivatives, such as the Bing Copilot. Irritatingly, you can only enable three plugins at a
data sets via its
While there’s plenty of AI power and much to time and the Plugin Store is poorly presented and Plugins store.
explore with the free version of ChatGPT, the real erratic. Often plugins don’t install at the first time of
power is unlocked when you subscribe to ChatGPT asking, for example. It’s a work in progress, but one Above-left:
Plus. Not only does that (largely) ensure you can get that holds tremendous promise if it can be made to Commercialisation
of ChatGPT is
access to the chatbot during the regular periods of function more smoothly. ongoing through
peak demand when the free version is switched off, it mini GPTs.
opens up extra features such as plugins and advanced Advanced data analysis
data analysis. Let’s look into those two features in This is arguably the best feature of ChatGPT Plus, but
greater detail. you may still need to dive into Settings > Beta Features
and switch it on first. Advanced data analysis lets you
Extending services upload spreadsheets and other files, and get the AI to
Plugins enable you to combine the intelligence of do the hard graft that you might normally do in Excel.
ChatGPT with third-party sites or services, such as For example, we fed ChatGPT Plus raw survey data
Wikipedia, WolframAlpha (this fixes ChatGPT’s poor into an Excel workbook. Each tab represented a
mathematical issues) or OpenTable. For example, you different category, and the AI automatically figured
could ask the AI to create a summary of a long article this out, but checked this with us to ensure it was
you’ve found on Wikipedia or use it to research facts. making the correct assumption.
For instance, you could ask ChatGPT to “give me the Once it worked out the format, we could ask it to
release dates of the past five versions of Windows produce graphs showing each company’s performance
from Wikipedia” and it will dig out the correct answers in different categories or to tell us how company A
from the online encyclopedia, without you having to fared against company B in different categories. We
wade through different articles yourself. could also use it to calculate different weightings for
With the Expedia plugin, on the other hand, you can each category, for example giving ‘very satisfied’
ask the AI to do things such as create a three-day trip responses a +2 weighting, but mere ‘satisfied’ a +1, to
to Oslo for you, and it will come back with hotel and see what effect that had on the overall results.
flight recommendations that suit your budget. It’s not All this could be done in Excel, but only if you have
perfect – it sometimes gets trip dates wrong when you the skills with pivot tables or can apply the relevant
click through to book flights, for instance, and it only formulae. Advanced data analysis lets you do all this
Mayank Sharma
was bitten by a radioactive
OBS Studio Moosync PhotoCollage Collector download manager, which
is why he can fearlessly
Patool Warpinator Croc FreeDoom venture into obscure repos
DESKTOP STREAMING
OBS Studio
Version: 30.0.2
Web: https://obsproject.com
MUSIC PLAYER
Moosync
Version: 10.3.2
Web: https://moosync.app
PhotoCollage
PHOTO EDITING defaults to a
PhotoCollage
800x600 canvas,
but you can
specify your own
dimensions or
choose from one
of the popular
Version: 1.4.6 Web: https://github. ones, such as A4.
com/adrienverge/PhotoCollage
Collector
windows
simultaneously
and assign each
a coloured dot to
separate them
from each other.
Version: 1.0.1 Web: https://mijorus.it/
projects/collector/
Patool
repackage an
archive into a
different format,
such as patool
repack original.
Version: 2.2.0 Web: https://wummel. tar.gz new.bz2 .
github.io/patool/
Warpinator lets
FILE TRANSFER you change the
Warpinator
default ports,
and it’s a good
idea to do so.
Just make sure
you allow traffic
through them in
Version: 1.8.3 Web: https://github. your firewall.
com/linuxmint/
FILE TRANSFER
Croc
Version: 9.6.12 Web: https://schollz.
com/tinker/croc6/
Freedoom
your mates,
but the exact
mechanism
for hosting a
multiplayer game
PUZZLE
LibreMines
Version: 2.0.0 Web: https://github.
com/Bollos00/LibreMines
NOTE TAKING
QOwnNotes
Version: 24.2.5
Web: www.qownnotes.org
STRESS TEST
S-tui
Version: 1.1.6 Web: https://amanusk.
github.io/s-tui/
PYTHON
vowels and consonants. The contestants then use running the program, if any libraries are missing, they
the 30-second countdown period to find the longest can be installed using the command structure below.
word possible from those letters. If both contestants The rich library is the most likely one to be missing and
find the same length word, they both get points equal it allows the colouring of text in the console.
to the length of the word, but if one gets a longer word, $ pip install rich
only that contestant gets the points. The first thing we do in the program is import any
• Conundrum: The final round of the quiz is called the
conundrum. The contestants see a nine-letter word
libraries and declare a new class, which will be used to
load the word file, generate combinations of letters and
with its letters jumbled up, and they use the countdown test against the word list.
CREDIT: Barnstorm Games, Countdown The Official App
period to work out the mystery word. The winner of import hashlib
this round is awarded 10 points. import random
With that introduction done, let’s look at what we import itertools
are doing in this article. We are taking Countdown’s from rich.prompt import Prompt
words round and generating a piece of Python code from rich.status import Status
to find words from a series of letters. The program from rich.console import Console
will be capable of using letters you enter (should you import sys
wish to play along while watching the TV show) as well import time
The full source as generating a random set of letters. Once words have import os
code can be been discovered, we will be able to display them to from math import floor
downloaded screen and write them to a file as well.
from https:// So, let’s begin. The first thing to do is create a new class Countdown:
github.com/
directory to start the project. Open your favourite IDE def __init__(self, letterNumber=9):
mattmole/LXF-
and create a file called countdown.py. If needed, install self.wordDict = {}
Countdown-
Word-Solver any Python add-ons for the IDE and set the language self.discoveredWords = []
of the program you are writing to Python. When self.letterNumber = letterNumber
Pixel-perfect Asteroid
collision detection in C
Did those pixels touch or just pass by? David Bolton demonstrates a
method of checking collisions with lots of objects on screen.
ASTEROIDS GAME IN C
There are about 2,200 lines of C in four make sure you have the dev SDL folder. In Visual Studio Code, the
source files and three headers. The code libraries installed. Run these four asteroids folder should be the Work
compiles and runs on an x86 Linux or commands in a terminal: folder you select when you click on the
Raspberry Pi. Note there is some $ sudo apt install libsdl2-dev Explorer tab. The .vscode folder should
Pi-specific code but that is only enabled $ sudo apt install libsdl2-image-dev be under the asteroids folder as well.
when running on a Pi system and not $ sudo apt install libsdl2-mixer-dev After compiling, the game is started
called on other Linux boxes. $ sudo apt install libsdl2-ttf-dev by double-clicking the compiled
First get the source code and files To compile asteroids.c,GCC or Clang asteroids executable or with the
from GitHub (https://bit.ly/lxf314astro). will do. There is a supplied tasks.json to command: ./asteroids in a terminal.
Create a folder called asteroids and simplify things but it is preconfigured The keys are q and w to rotate
fetch everything from the GitHub for Clang 14. If your Clang version is the ship, Space to fire the gun, with a
asteroids folder. You’ll also need the VS different, edit tasks.json and change the maximum of 16 bullets on screen at
Code ZIP (https://github.com/David-H- args command to your version: once. The s key puts up a shield but this
Bolton/Projects/blob/main/vscode.zip) “command”: “/usr/bin/clang-14”, counts down as long as s is pressed,
file. Download and unzip the .vscode The folders images, masks and and j does a hyperspace jump. You can’t
folder into the asteroids folder. First sounds must be located in the asteroids jump again for a couple of seconds after.
north, then graphic 1 is at a rotation of 15 degrees, and asteroids, so the number of asteroids on screen can Screenshot
so on. The explosion graphics don’t move or rotate, so increase very rapidly. with ShowCells
uncommented and
we won’t discuss them.
SHOWOVERLAP
The player’s ship fits inside a 64x64 cell. The game’s Figuring out collisions active.
playing area is 1,024x768 pixels. You’ll see most of At any point in the game, there can be a lot of moving
these defined by #defines in lines 32-41 of asteroids.c. objects on screen and we need to figure out a lot of
A bit lower down at lines 51-66 are the numbers of collisions 50 times a second. If there are 50 objects on
things. The maximum number of the four asteroid sizes the screen at the same time, then that’s 50 possible
are 4, 4, 5 and 5. These are defined in levels.c, which collisions. However, they are scattered across the
has an array of structs levels[50]. When the larger screen, so it’s unlikely that more than three or four
asteroids are hit, they split up into eight smaller are ever going to be colliding in any particular part
of the screen.
So, we start by dividing the screen into 64x64 cells.
There are 192 of these – 16 across and 12 down. Every
frame, as the objects move, we calculate which of the
cells each object overlaps. The player’s ship at 64x64
pixels might be completely in one cell but it is more
likely to be across two or four cells. The biggest object
– the 280x280-pixel asteroid – can overlap 5x5, 5x6,
6x5 or 6x6 cells.
The black squares represent a 64x64 object
overlapping the red and white grid squares. The
number shows how many grid squares are overlapped
by each object. Bullets are 3x3 pixels and most of the
time only overlap one square but they can also overlap
two or occasionally four squares.
Each cell has a numobjects count and an array
of pointers: Get all the game
struct Cell { code from
ptrarray ptrs; David’s Git at:
int numobjects; https://bit.ly/
lxf314astro
Bounding boxes surrounding game objects overlapping plus debug text. };
Typedefs have
been used to
cut down on the
number of *s
with pointers
and to get rid
of the struct
keyword. For
instance, a
pfirstpart is
the equivalent
of struct *
firstpart.
The player’s ship on the left and its pixel mask on the right.
correct pixel mask. This is done in the function Overlap is the direction that it’s
at line 1758. facing, 0-23.
When an object hits
Game objects another and gets destroyed
All game objects are held in arrays. This means there’s in DestroyObject() at line
no need to allocate or free memory. However, to 1700, we use a switch on
simplify the code, instead of indexing these objects, the type, then cast it to the
the individual element is assigned to a pointer. Look full size object in calls to
at InitBullets() on line 1,021. The pbullet->active=0 is DestroyAsteroid() and
probably no faster than bullets[i].active =0; if the DestroyAlienShip().
compiler is optimising but it’s slightly simpler to read.
Also, it’s easier to pass the pointer into a function: Collision detection
for (int i = 0; i< MAXBULLETS; i++) { If you look in asteroids.c line
struct bullet * pbullet = &bullets[i]; 15, you’ll see a #define
pbullet->active = 0; SHOWOVERLAP that is
… commented out. If you
If this wasn’t done, the function CheckAllObjects() uncomment and recompile
on line 1,841 would get very messy with cells[x][y] the game, instead of blowing up the player’s ship when Asteroids
compiled with the
everywhere instead of c. it hits an asteroid or bullet, it carries on moving through SHOWOVERLAP
Because the pointers are just aliases for elements in the objects and shows every overlapping pixel in green. #define – this
an array, they can be passed around with impunity and Note: if you try that, you might also want to try shows the player’s
don’t need to be freed up. Some languages, such as commenting out lines 1,798 and 1,800, and in lines ship moving
through an
C++, refer to these as weak references. 1,056 and 2,298 set the GameLevel to 49 and then
asteroid.
The objects in the game – player’s ship, asteroids, recompile, so you get lots of big asteroids. This also
bullets and alien ship(s) – are different types and sizes, lets asteroids move through each other without
and some rotate (player’s ship, asteroids) and some blowing up and you get some very large green
don’t. There’s a struct called asteroids as they pass. It’s quite
firstpart that is used in Overlap() spectacular but can drop the
for doing comparisons and adding frame rate down to as low as The SDL2 library
objects to a cell. This is used for the four frames per second. That’s has an internal
asteroids, bullets, alien ship and not surprising when you get constant for
player’s ship: two 280x280 pixels asteroids the maximum
struct firstpart { overlapping. The intersect rect will width of texture
SDL_Rect r; have tens of thousands of bytes in it can load
(x86/64 Linux,
int type; it and that’s a lot of lookups.
Windows and
int active; Without the SHOWOVERLAP
Raspberry Pi are
int rotdir; #define, objects are destroyed as all different).
}; soon as two pixels touch. The full width of
This means that you are not Using 64x64 as the cell size 6720 (280x24
fighting the compiler when might not be the optimum size. A images) was
passing pointers to objects around. bigger cell would mean a screen too big for
The r is the bounding box and x,y had fewer cells and that might one, so the four
coordinate for objects. The type speed up comparisons. However, asteroid images
is a value 0-3 (defined as an enum this might mean more objects and the player’s
ship images
but used as an int) for the object’s could overlap a cell. For five objects,
were each split
type. The active field is a flag with Mask of player’s ship image 0 generated by it needs 10 comparisons, while for
over two rows.
0 = dead, 1 = not dead, while rotdir the Genmasks utility. six it needs 15.
Future Publishing Limited, Quay House, The Ambury, Bath, BA1 1UA
Email [email protected]
EDITORIAL
Editor-in-chief Neil Mohr
Art editor Fraser McDermott
Production editor Katharine Davies
Group editor-in-chief Graham Barlow
Group art director Warren Brown
Editorial contributors
Mats Tage Axelsson, Mike Bedford, Jonni Bidwell, David Bolton,
Neil Bothwick, Stuart Burns, Barry Collins, Nate Drake,
Kseniya Fedoruk, Tam Hanna, Matt Holder, Jon Masters,
Nick Peers, Les Pounder, Michael Reed, Mayank Sharma,
Shashank Sharma, Andrew Sink, Chris Szewczyk
Cover illustration Magictorch.com
Microsoft Windows is a trademark of the Microsoft group of companies.
ChatGPT and the GPT logo are property of OpenAI.
Raspberry Pi is a trademark of the Raspberry Pi Foundation.
Tux credit: Larry Ewing ([email protected]).
Content production Adequate Media Limited
ADVERTISING
LXF31s5ale
Commercial sales director Clare Dove
[email protected]
Advertising director Lara Jaggon
[email protected]
will be on
Account director Andrew Tilbury
[email protected]
Tuesday 30th
INTERNATIONAL LICENSING
Head of print licensing Rachel Shaw
April 2024
Linux Format is available for licensing and syndication.
To find our more contact us at [email protected]
or view our content at www.futurecontenthub.com
NEW SUBSCRIPTIONS & BACK ISSUES
Web www.magazinesdirect.com
20 YEARS
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 and international
delivery networks. Please allow up to seven days before contacting us
about a late delivery to [email protected]
CIRCULATION
OF UBUNTU
Newstrade & retail category director Ben Oakden
PRODUCTION AND DISTRIBUTION
Group head of production Mark Constance
Production manager Nola Cokely
Senior ad production manager Jo Crosby
Digital editions manager Jason Hudson
THE MANAGEMENT
Managing director technology group Paul Newman
Global head of design Rodney Dive
Commercial finance director Tania Brunning
We dive into the brand-new Ubuntu 24.04 LTS and Printed by William Gibbons & Sons
Distributed by Marketforce UK
through the latest release and how to get more from it.
Disclaimer: All contents © 2024 Future Publishing Limited or published under licence. All rights reserved. No part of this
magazine may be used, stored, transmitted or reproduced in any way without the prior written permission of the publisher.
Future Publishing Limited (company number 2008885) is registered in 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
Thunderbird on fire
are aware, correct at the time of going to press. Future Publishing Limited 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 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.
If you submit material to us, you warrant that you own the material and/or have the necessary rights/permissions
Live your best email life! We’re taking Betterbird for a spin,
to supply the material and you automatically grant Future Publishing Limited 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,
you can defend and test your systems with the best.
content and advertising solutions for passionate
consumers online, on tablet & smartphone and in print.