How to Install NVIDIA Drivers on EndeavourOS: Easy

Good Morning from my Robotics Lab! This is Shadow_8472 and today I am fixing/installing NVIDIA drivers on my Upstairs Workstation’s EndeavourOS installation. Let’s get started!

Short Answer

EndeavourOS has an NVIDIA installation script in the repository. It worked beautifully with my GTX 970, but I gather I am on the older side.

sudo pacman -S nvidia-inst
nvidia-inst

See the official EndeavourOS site for more information: https://discovery.endeavouros.com/nvidia/new-nvidia-driver-installer-nvidia-inst/2022/03/ [1].

Project Background

To my readers installing NVIDIA: I bid you good luck and look forward to hearing about your experience. I found precious few relevant search results about this topic aside from EndeavourOS’s admittedly confusing site, and my hope is that I’ve pointed you in the correct direction. If that doesn’t work, I have another of their articles in my Works Cited.

For my regular readers: wow. I don’t have many first attempt projects. Granted, this is technically a well-researched second attempt. One draft only had 100 words between title, introduction, and delivery (down to 75 in this cut, according to LibreOffice Writer). For now, I am thankful I didn’t have to learn what all the hype is about firsthand over installing NVIDIA on Arch .

EndeavourOS went on very smoothly earlier this year until after I installed Steam. My boot sequence would then stop updating where it normally hands over operations to the graphical server. The community helped me trace the problem to repository-installed drivers. I had to use the camera from the lab’s photo booth for pictures of TTY terminals. I let the project go dormant for a month while I focused on Nextcloud, but then Manjaro filled up its hard drive again while updating, and I was out of stuff to offload. (After I finished research this week, I installed Filelight and noticed several unused Proton versions taking up space.)

Listed in EndeavourOS’ features is “Nvidia installer.”

“A terminal-operated app that lets you easily install the right Nvidia driver and/or hybrid set-up required for your machine” [2]

Every other item on this feature list came pre-installed. Over the course of a couple late-night hours, I learned first about an older script called nvidia-intro. It reportedly works with cards made around 2010 and newer, such as the GeForce 930 [3]. I bounced around among what forum offerings my search turned up before settling on the link I shared from the start. Once installed, it was completely automatic. It needed a root password for installation proper, but the script itself does not run as root.

Takeaway

Normally, I would have combined this and next week’s similarly short topic since I am again working on my Upstairs Workstation. However, thinking about it from the perspective of someone searching online for help, it makes the most sense to split them.

Final Question

Have you done battle to install video drivers? I would like to hear about it in the comments below or on my socials.

Works Cited

[1] Manuel, “New Nvidia driver installer, nvidia-inst,” endeavouros.com, March 31, 2022. [Online]. Available: https://discovery.endeavouros.com/nvidia/new-nvidia-driver-installer-nvidia-inst/2022/03/ [Accessed April 10, 2023].

[2] B. Poerwoatmodjo, J. Kamprad, and Manuel, EndeavourOS, “Welcome to EndeavourOS”endeavouros.com, [Online]. Available: https://endeavouros.com [Accessed April 10, 2023].

[3] Joekamprad, “Nvidia intro,” endeavouros.com, Mar. 9, 2021. [Online]. https://discovery.endeavouros.com/nvidia/nvidia-intro/2021/03/ [Accessed April 10, 2023].

Autism Month: Container Analogy

Good Morning from my Robotics Lab! This is Shadow_8472, and I have a very special post this week where I explain what it’s like for me living with Autism and meltdowns. Let’s get started!

Preamble

I struggle with Autistic meltdowns. As early as I can remember, I’ve been asked why I behave certain ways (usually as punishment for misbehavior perceived to be intentional), and just as long, I’ve been coming up with different –sometimes contradictory– explanations of my mental processes. Few were memorable except possibly a school essay circa around 2008-2009 comparing myself to a squishy energy ball with situationaly dynamic properties.

My analogies grew in complexity as I tried to build one unifying theory. It grew so many rules neither I nor anyone else could keep everything straight for a predictable model of my reactions. I could be fine after a loud noise one day and in terrible pain from a quieter one the next. In self-preservation, I would sometimes force myself into the worse reaction to afford others’ understanding when I needed it.

Then one evening in or around 2016 (wild guess), I penned the first draft of my container analogy as a frustrated message to a long-time friend over Discord who had sent me into a bad meltdown. It overflowed the 2,000 character limit, comparatively grew into a Calculus-grade explanation of how the rules change to my previous brute-force, Algebra-like rule sets, and was ultimately never sent after pending review by a trusted family member in case it was too hot a take. Instead, I put it into a document which had my entire Autism support group nodding, impressing our psychologist, who encouraged me into researching how to copyright it.

Since then, I’ve re-imagined it a time or two, and I’m ready to share it as part of Autism Month. If you or someone you know is on or is a caregiver for a member of the Autistic spectrum, it is my hope and prayer that this analogy can be a tool of healing and understanding.

Container

If I were to ever depict the control room of my brain, it would feature a container with an inlet and an outlet – a buffer between all incoming sensory information and my ability to process it. When fluid arrives faster than it can drain, the level rises and will eventually overflow in a chain reaction known as a meltdown, where all the fluid is spilled across the floor of BrainHQ. Higher thought processes –including evaluation of probable consequences– are impeded as base instincts attempt to clean up.

Processing generally happens over time, but a particularly suitable environment can reduce the amount of incoming fluid, freeing up resources for additional processing capacity. A meltdown in progress can go from raging to manageable simply by retreating to a designated space.

The most important difference about this container is its dynamic and invisible volume. Only its relative fullness, processing speed, and state of meltdown are known by its owner at any given time. By mentally tracking how full it’s been over time, its current capacity can be estimated. Involuntary or uncontrolled meltdowns dramatically shrink the container’s capacity to the point where even small stimuli can instantly overflow a post-meltdown container. Similarly, the expectation and execution of a particularly good time or special event can expand the container’s capacity to temporarily cope with volumes a neurotypical brain automatically can filter through.

A trigger is a stimulus that fills this container more than it should – either when compared to similar stimuli or had the same stimulus been experienced by most anyone else. One or two large ones can easily “trigger” a meltdown. Small, normally ignorable triggers in rapid succession can leave fluid sloshing around for subsequent triggers to splash fluid out of the container, causing a meltdown over several otherwise nothings.

In one unpublished telling of this analogy, I visualized the container and fluid as a barrel with apple cider so as to relate to a fictional character of mine I was role playing against an avatar of myself in a story format. In one scene, the cider spoiled, soaked into the wood of the barrel, and leached back into future thought processes at semi-random intervals. These echos are a particularly nasty kind of trigger where each echo comes back as an individual trigger joining its all its previous peers at once for an amplified effect. Individual instances generally fade over time, but re-exposure to memorable triggers has a way of inciting instant recall.

Strategies

Everything brought up so far has been passive. You can’t expect me to scrub toilets and tell me to have a mindset of going on vacation to cope. That doesn’t mean there aren’t things to do to optimize the container’s performance.

The container has some elasticity. When needed, it can be stretched, but extra fluid has to be dealt with as maximum capacity rebounds below normal. This holds true for both big, stimulating event as well as when a meltdown would be obviously and immediately dangerous, like while driving. Overuse of this strategy can damage the container’s maximum capacity long-term.

Opposite the first strategy is to prematurely trip a controlled meltdown-like state where some input is ignored as a triggering stimulus passes by. This can be as mild as mentally blanking out a loud car as it passes to full-on turtle mode, where all input bypasses the container and gets dumped. A sampling of random input can be retained to determine if it’s safe to bounce out, but the better the sample, the less effective the bypass strategy will be.

Sometimes, more fluid is expected than will ever fit or can be bypassed. This is when clumsy base impulses in charge of cleanup seize the controls meant for the higher functions now stepping back into a bunker. Senses –though heightened– aren’t as immediate a concern as the autopilot guides a melted individual to safety. This perceived degree of separation feels similar to controlling a video game character or navigating a choose-your-own-adventure style dream. Consequences are still harder to conceive of, but the higher functions have a veto in this mode if the path of least resistance is reasoned to be more dangerous than wading through the trigger-infested fluid.

The last strategy is a cry for help. Petition another person for aid. Depending on the situation or individual, it may be as simple as explaining the situation verbally with words to as vague as acting “off” for someone to notice and ask. Embellishment may be used sparingly to convey a sense of magnitude or urgency, but over-outlandish comparisons run the risk of rejection.

Extensions

I’ve tried to integrate as much of my analogy into a single narrative as possible, but I’ve found it to be easily extendable. Even so, some details don’t fit in well elsewhere.

Fluid spilled in a meltdown –if not cleaned in a timely manner– will harden and take even longer to recover from.

There is a strategy called masking I personally am not a fan of relying on, but it works for some people: a foreign pattern of behavior is emulated using extra mental resources. Overuse leads to burnout.

Burnout is where the brain unwires potentially needed skills from speech to social skills to computer programs. Burnout may last anywhere from a day or two to long enough to re-learn the skills from scratch.

Another way to look at base instincts/impulses is as an idiot doppelganger at the brain’s controls. One of my notes from the cider version of this analogy visualizes this doppelganger as being made of spilled fluid. But it was competing with imagery of my character’s shadow separating out to wade through the fluid to operate the controls. I loved both illustrations so much, I couldn’t pick a single one, and eventually lost interest in the project. They may work in a fused for thoug.

Misconceptions

There is a distinction between triggers and meltdown vs anger and temper tantrums. The two sets may appear similar and occur concurrently, but one is a type of fight, flight, or freeze sequence, while the other is a basic human emotion driven by perceived injustice allowed to degenerate into bad behavior. This is why I have taken to making a distinction between triggers and Autistic triggers when talking with people outside my inner circle.

Autism is said to be a spectrum: no two people with it are the same. Once you’ve met one person with Autism, you’ve met one person with Autism, and the next one will be different. A stimulus or deprivation thereof may be soothing for one person and a supermassive trigger for another.

Takeaway

Autism is a lifelong challenge, but by the love and grace of God, my family loves each other. It breaks my heart knowing there exist members of the spectrum locked in a state of perpetual meltdown and masking as a matter of survival. The quality of life the Almighty has blessed me with I definitely would wish on those who would make assumptions about me based on their own experiences [particularly those with Autism], make hurtful or degrading judgments, and leave without a second thought. I believe this post has the potential to help.

Further Reading

Instead of a Final Question, I’d invite you to review a couple pieces that have been influential in my journey with Autism.

The first is a book: Managing Meltdowns: Using the S.C.A.R.E.D. Calming Technique with Children and Adults with Autism by Deborah Lipsky and Will Richards. I haven’t read it for myself, but I found even the outline, and chapter summaries to be powerful tools to compliment my understanding of what goes in within my own mind.

The second is a video by YouTuber Mark Rober: The Truth About my Son. In it, he has a vivid demonstration in a park about life without filters. Even in the relatively low-stimulus environment of my own home, I have distractions I have to purposefully ignore. The computer fan beside me is making a constant sound, the sound of the keys as I type, the slight squeaks of my decently lubricated chair – occasional noises from upstairs as a Star Trek episode finishes up, my dog vibrates the room with his snoring if he’s not looking up at me, my cat keeps coming around to visit, there’s a vacuum cleaner sitting by my desk I sometimes rest my foot on. Even the fabric of my shirt is registering.

I look forward to discussing this topic in the comments below or on my Socials.

Nextcloud Dangling in the Works

Good Morning from my Robotics Lab! This is Shadow_8472, with a stubborn-project update. Let’s get started!

Nextcloud as a project comes with a lot of strings and hooks. Every time I sit down to work on it, the feature creep closes in: multiple volumes for speed and capacity, MariaDB container so SQLite doesn’t choke serving clients, a pod for MariaDB to live in alongside Nextcloud, Redis for RAM caching (Out of my scope, but worth a mention), Ansible Vault for password management (automation tool I’d need a month to learn), podman secrets, Philomena image board software – not to mention the volumes I learned about the other week! As noted in previously, the container I’m using from docker.io can take care of itself, but it will work a lot better with even a few of these things.

In my ideal configuration, all my containers’ persistent data lives on GoldenOakLibry so my old, red laptop can take over on critical Podman containers when ButtonMash is booted to Debian for photo scanning duty. The big, hanging question then is if GoldenOakLibry’s internal HDD’s absolutely need to spin up to serve shares hosted on NAS volumes mounted from an external SSD.

HDD: Hard Disk Drive
NAS: Network Attached Storage
SSD: Solid State Drive

My initial tests involved verifying that a drive could be mounted externally, then rebooting the NAS. I was expecting either a 1 or a 50 second wait, but instead I kept hitting “Stale file handle” errors when I tried mounting the external share. My second round of trials a week or two later exhausted search pages worth of results to learn how NFS shares change a few invisible details when restarted. Either something wasn’t ready when needed during boot, or my client just needs a while to refresh those details. It works in the long run, and external shares are not dependent on internal disk spinup. Time to move on.

Having solved the last known problem, I started layering the bits I had solved while frustrated with the USB share. I prepared three Podman volumes: two for Nextcloud prioritizing high-capacity and speed, respectively, and one for an SQL database. A pod housing MariaDB (the SQL database) and Nextcloud containers mounts these volumes (!). Podman secrets safely injects the database password so MariaDB and Nextcloud can work together – not strictly necessary for my application, but a good habit to get in in case I go in the direction of creating images from existing containers. Once the cloud is running, I want to try adding an image board to view the pictures.

(!) NFS –as it turns out– does not appreciate a number of the acrobatics rootless Podman performs with Namespaces. I don’t have the specifics memorized, but when Podman makes a container, the host’s user ID is mapped to root within that container. Podman then assigns variations of the host’s user ID to non-root users within the container as defined by a namespace. The NFS protocol wasn’t designed with namespaces in mind. To NFS, it looks like you’re trying to access another user’s files – possibly without permission. While this reportedly doesn’t stop rootless Podman from working well over NFS over normal circumstances, there are a bunch of search results talking about the snag when working with container images over NFS. Based off my experiences for this post, the same appears to hold true for volumes.

Takeaway

As much as I wanted this to be the last installment, this issue is a post in and of itself, and I’m getting burned out again over trying to come back to it. I’ll try coming back to this in around a month or so.

Final Question

Have you successfully used Podman volumes over NFS? Please, do tell me all about it in the comments below or on my Socials.

My Homelab Report, 2023

Good Morning from my Robotics Lab! This is Shadow_8472 with a snapshot of my different computers as of mid-March, 2023. Let’s get started!

I have felt a need for a page detailing my so-called “homelab” detailing the computers and other equipment I personally maintain. I didn’t finish any big projects this week, so here’s a first draft of that page. It’s listed in roughly the order I took ownership/responsibility for each piece. I’ve tried to gather each computer’s base model/modified configuration plus a list of its presently bootable operating systems. Warning: unexplained technobabble ahead.

Red Laptop

Dell Inspiron N7110
1 TB SSD

Debian 11

As the oldest operational computer in my fleet, this laptop has been with me for almost 12 years, though most every part was replaced while it was under extended warranty. Shortly after I started this blog, I installed Debian 10 on a USB external drive. I nuked its Windows drive one week by formatting the wrong disk, and later replaced it with a 1 TB SSD, cloned Debian inside, and it served as a get-me-online machine until the screen bezel cracked, threatening to shatter the screen the next time I’m not careful. It’s now serving as a backup home server, and it’s desktop environment has proven vital to rebounding from at least one network emergency since.

Upstairs Workstation

Custom Build

Intel Core i7-3770K (3.50GHz)
NVIDIA GeForce GTX 970 (rev a1)
24 GB RAM (2×8+2×4)

Windows 10
Manjaro
EndeavourOS (WIP)

“Upstairs Workstation” also predates when I started naming my computers. I got it for university when laptop turned up as bit underpowered. I went from Windows 7 to Windows 10 with this machine, narrowly avoiding an online tech support scam (10 didn’t support a Wi-Fi cart I was using at the time and later finished burning out when I put it back in after switching to Linux).

Derpy Chips

Custom Build
Intel Core i7-2600K (3.40GHz)
16 GB RAM

PopOS

Derpy was named for its tendency to give power kernel errors during its first service life until its retirement. When I adopted it, I gave it a new hard drive and inadverantly diagnosed the one lowballed part: its 2 TB HDD. I’ve also had issues with a stick of RAM from it, but I’ve had it running smoothly for a few years now as a secondary workstation.

ButtonMash

Dell Optiplex 7010
16 GB RAM
1×60 GB SSD
1×1 TB SSD (external)

Debian 11
Rocky 8

ButtonMash has been my main x86 experiment machine as well as my home server. I bought it from a church member who was upgrading his dental office computers. I My was host to my first Linux install: Ubuntu, but I’ve put it through a parade of distros including MicroCore (where I learned the command line), MineOS, Debian (originally from “red laptop”), and finally Rocky. Today, it serves as my primary home server, where I am setting up several Podman containers including Vaultwarden, PiHole, Nextcloud, and Minetest – each on a separate account for further isolation.

If and when we need to scan pictures, ButtonMash is dual booted with an external SSD I originally used with my Red Laptop.

GoldenOakLibry

Synology NAS

4x7TB HDD RAID 5 share
1 TB SSD share (external)

GoldenOakLibry is our home NAS intended for picture scanning. If nothing else, it’s exposed me to using a computer that’s meant to do nothing but serve files. I have a long way to go before I master it.

Raspberry Pi’s

1xRpi3B+
2xRpi4B
1xRpi400

My collection of super-flexible Raspberry Pi computers has served me well. At the moment, the Pi 4’s are serving as OpenWRT router firmware configured as Wi-Fi-to-Ethernet adapters for my upstairs workstation and my sister’s desktop. My Pi 3B+ has been inactive since its 3D printed PacMan ghost case got smashed, and my Pi 400 shares a monitor at my upstairs workstation.

Other/Misc computers

3D printer

Maker Select Plus
Added braces+feet

I am no master at 3D printing, but I know enough of the basics to scrape together most everything I try. At present, my printer needs a new fan and a printbed that isn’t warped.

Pine Phone

UBPorts Edition

The average smartphone these days spies on you. Its parent company is allowed to by the terms of service you need to accept before use. I resolved to not blindly accept any new EULA’s without knowing what I’m getting into and learning enough to be confident I’ve done something to mitigate the worst of these violations of privacy. As a consequence, I don’t have a usable phone ever since we switched providers a while back.

UPS’s

I have three uninterruptible power supplies directly under my supervision – one serving the network closet, one serving my upstairs workstation, and the other ButtonMash’s area. As of yet, I have not figured out the open source NUT driver.

My Father’s workstation

Dell Optiplex 7020
15 GB RAM

Linux Mint 20.3
Debian 11

15 GB RAM

After I bought ButtonMash, I got another used workstation out of the same dental office, replaced Windows, and gave it both sets of RAM. I later talked my father through installing Debian 11 on ButtonMash’s original hard disk

Ventoy USB (32 GB)

Not technically a computer, but easily one of my most versatile tools. Ventoy makes Linux media creation as simple as dragging and dropping a .ISO. Even better is that I can still put normal files on it!

Takeaway

Each part of my lab serves its function. There’s a certain joy when I get something new working and get to show it off.

Final Question

Which of your projects are you most proud of?

I Touched Up a Special Photo

Good Morning from my Robotics Lab! This is Shadow_8472 with a 1-night special project based on a mini-project I did a few weeks back. Let’s get started!

I’m no stranger to using my family’s photo trunk as fodder for a long-running project. Besides, there’s a special occasion coming up, and I thought it would be nice to restore a special photo where the photographer had his flash misaligned.

The first part was smuggling one of the scanners up to my room, where it wouldn’t be so obvious that/when I’m working on it. For reference, I’m working with an Epson Perfection V550 Photo and Manjaro Linux. My previous attempts at getting this and another Epson Perfection working with Linux using a driver called SANE were spotty at best. I even went so far as to save a cloned drive over my difficulty in reproducing my success.

> SANE: Scanner Access Now Easy

Long, boring story short: I landed at sane-project.org, where the whole series of Epson Perfection V[100-600] Photo is listed as “unsupported.” [1] The only reason I got it to work before was because I had Image Scan! for Linux installed, as I learned through a combination of user-forsaken forums and personal experimentation. My notes for this project made note to mention “[Epson Perfection V series scanners are] supported by the epkowa backend plus non-free interpreter.” I stopped trying to fully sort its meaning out after getting the V550 working thanks to an AUR package.

> AUR: Arch User Repository

With a working scanner, it wasn’t much more trouble to connect it to the XSANE plugin for GIMP, where I made a collage of different scans with slightly different settings. It took a while to zoom in and align each piece pixel-perfect; ironically, this process was aided by the dust and scratches I couldn’t get off. To finish off the project, I used a feathered eraser tool to smooth the edges.

Takeaway

If I had more time, I’d have feathered the edges after each scan. Like I said, this was a project I am finishing last-minute. I now have the picture looking the best it has in years, but it’s still due for plenty of help – some beyond my skill level.

Final Question

I have a pretty strong feeling I know the answer, but do scanner drivers communicate any additional information when optimizing a scan, or was I just needlessly exposing a special picture to extra light?

Work Cited

SANE, “SANE: Supported Devices,” sane-project.org, [Online]. Available: http://www.sane-project.org/sane-mfgs.html#Z-EPSON. [Accessed Mar. 13, 2023].

I Studied Podman Volumes

Good Morning from my Robotics Lab! This is Shadow_8472 with a side project of the week. Let’s get started!

Nextcloud has been a wish list item since I gave up using Google’s ecosystem (Drive, Calendar, Office, etc.). This open source almost-drag-and-drop alternative proved above my skill level at first, but I’ve learned a lot about server management and running OCI “Docker” containers in Podman in the years since.

Demo of Nextcloud

Nextcloud was relatively simple to demo: one non-privileged port forwarded. During my self-guided tour, I was amazed at the potential power there. In addition to its calendar, office, and file storage functions I expected, its recommended suite apps include email, chat, and contacts servers – with more apps available for download.

As much as I can see myself moving in right now, it’s important that I master how its persistent data is stored. Ideally, everything would live on GoldenOakLibry, my home network storage configured with RAID 5. But I hate waiting for HDD spin-up. If it had an SSD out the back (it has two USB ports), I could mount a directory there from a Nextcloud container and back it up to deep storage on a weekly or monthly basis. At the same time, I may want the capacity of the main disks if Nextcloud turns out to be good for hosting the family’s photo archive.

The solution: use two “volume” structures like I started looking at last week. They work similarly to directly mounting directories as I’ve been doing in theory, but are abstracted similar to containers. See my Tangent heading later on for more information.

With this purpose in mind, we ordered a USB–SATA adapter and dug up our MineOS SSD from once upon a time. I archived around 411 GB worth of Minecraft worlds to free up space. I got the poor idea to try compressing it to both .tar.gz and .zip, two widely used compression formats which turn out to be implementations of the same algorithm. GoldenOakLibry had ZIP, but not TAR, so I tarballed/compressed it to 393.5 GB over an hour vs the NAS struggled to produce a 393.77 GB .zip over a full day. With a savings that small, I’m probably best off curating it uncompressed – especially if I have family members interested in seeing it again.

RAID 5: A hard drive redundancy scheme resistant to a single drive failure. In my case: four matching disks with three drives’ worth of usable space.

TAR: Tape ARchive: An early archive tool often paired with the GNU Zip compression program.

To Do List

Regretfully, I have to split this topic just as it’s getting good. I was running a test to see if GoldenOakLibry can respond on the USB share without spinning up, but creating new network shares is not a skill I can perform reliably yet. I had it working once, rebooted, and now it won’t re-connect like the proven ones. If for whatever reason I can’t get GoldenOakLibry to share from MineOS’s SSD without spinning up, I’ll have to mount it internally to ButtonMash and play the BIOS game to disable booting to it.

Even if I was making good enough time with the USB share, I’d still need to study up on databases. The lightweight one included with the Nextcloud container I’m working with is meant for browser traffic only, and I want to try out its clients.

Tangent

I started with the working theory that volumes needed to be started and stopped like containers, and I would therefore need one of Podman’s signature pods to manage them alongside Nextcloud’s. It’s basically a container for organizing and running containers on a homelab scale. I rigged up a script to automate my attempts with it, but eventually realized that volumes are passive, and I had just learned the wrong tool for the job. I’m sure I’ll make use of it eventually.

Final Question

I’d like to open up the discussion. Two big choices remain: Where do I host my fast Nextcloud SSD (GoldenOakLibry or ButtonMash), and how do I host my archive pictures (Nextcloud, Mediawiki, something else)?

I look forward hearing your answers in the comments below or on my Socials.

My Podman Containers Boot With Systemd

Good Morning from my Robotics Lab! This is Shadow_8472 and today I am reasonably sure my Podman containers won’t be randomly going down anymore. Let’s get started!

I enjoy using Podman as a stand-in for Docker, but its rootless approach to running containers inherently challenges sysadmins facing Docker’s help and tutorial legacy. The most problematic difference I’ve experienced has been keeping containers running long-term. Months ago, I learned how to enable account lingering. This allows Podman containers without something remaining logged in as their respective users. I’ve been living with manually restarting containers as needed. Well, since I decided to enable automatic security updates, starting containers automatically would be prudent before expecting other family members to rely on them.

Against all odds, my initial search this past Wednesday yielded a blog article from Red Hat about integrating Podman containers into Systemd [1] to start them at boot. It was posted the day before.

Podman and Systemd

I trust Red Hat to not post malicious commands, but it’s still a good idea to learn about strange commands before running them. Red Hat’s tutorial starts with making a new user, enabling linger, and running a containerized web server. The first important command I ran was

$ podman stop httpd && podman rm -a && podman volume prune

This command appears to thoroughly clean out Podman. I’ve mounted volumes from the host before to persist data, but there’s a more flexible volume structure I only learned about just now when researching for another section I had to spin off into a near-future post. I haven’t used them yet, but I’m sure they’ll be useful once I learn how to use them.

$ podman generate systemd --new --files --name httpd

This command makes a new systemd file. The –new option recreates the container fresh each time it’s brought online. –files sends the configuration to a file instead of the terminal. –name must be the name of a running container or pod.

$ cp -Z container-httpd.service ~/.config/systemd/user/

The file generated previously goes in a directory where systemd will find it when used with the –user flag. The -Z flag matches permissions with the destination directory. The tutorial finishes with a daemon-reload followed by starting and enabling the user’s service.

Takeaway

This is a resource for my bookmarks. That is all.

Final Question

I took the opportunity during this project to put a Minetest server on ButtonMash, but I’m having difficulty obtaining permissions. I can see its logs in Cockpit-Podman, but I don’t have access to the server command line. How am I supposed to get started with adminning Minetest?

I look forward hearing your answers in the comments below or on my Socials.

Work Cited

[1] A. Oliveira, “Configure a container to start automatically as a systemd service,”redhat.com,Feb. 21, 2023. [Online]. Available: https://www.redhat.com/sysadmin/container-systemd-persist-reboot [Accessed Feb. 27, 2023].

I Made a Single-Task Computer

Good Morning from my Robotics Lab! This is Shadow_8472 with a side project of the week. Let’s get started!

A situation at my church’s elementary school has recently come to my attention: the library lacks a computer, the conference is pushing online timesheets, and the librarian doesn’t use a smartphone. I know a little about get-me-online machines, so when I felt a little prompt from On High, I got to work.

My first thought was to shift directions on the old church office computer from my recent work with Puppy Linux, but it lacks a monitor, mouse, or keyboard. Then my sister’s netbook surfaced (Toshiba NB505). As spiritual predecessor to Chromebooks, netbooks are perfectly sized for toddlers. The original power brick had a frayed cord, but I found a spare. It booted to Windows 7 Starter Edition (32 bit). It reportedly slowed way down at some point. Even Puppy Linux (running 64-bits) felt sluggish running Firefox. Nevertheless, I accessed the timesheet website.

I soon learned about Firefox’s –kiosk mode; it got me thinking about launching it as part of boot directly to the needed webpage. Instead, I sought out a specialized kiosk distro and downloaded myself Porteus Kiosk. I substituted my Ventoy USB for whatever the oddly worded instructions aimed at store managers would have me do. The install media (“first boot”) walks the user through connecting to the Internet, downloading Firefox or Chrome, creating or loading a config file, and flashing (“burning”) a customized image to a hard drive.

The system took a night’s work to install a few times and harden. I password protected the BIOS and disabled booting the Windows drive because I’m more worried about the SD card surviving an accidental removal and landing last in the boot order than someone using a strange, bootable USB. I tediously refined my installation procedure until I was consistent. Its slow boot wasn’t fun.

I had 15 minutes the next day with the school Wi-Fi. Much of that was tracking down the password. Once online with browser obtained, I loaded my config file from the previous night, flashed the SD card, and rebooted, ticking away what time we had scheduled and more – only for a failure to reach the Internet. Discouraged, I packed up left – my only consolation a surplus Valentine’s Day goodie bag.

We figured it was probably some network whitelist until the kiosk worked properly back at home. Had the it failed? I didn’t catch the success/failure message flashing by earlier, so maybe? Another day’s attempt at the school involved accessing site with a laptop from a different school-owned network. I paid close attention to the allegedly successful output, but it again found my Wi-Fi and not the school’s.

Just as I was about to start report a failure for now, I noticed my home Wi-Fi name and password hidden in the config file I was loading each time after the first. I slapped the school’s credentials and left it for my mother to deploy, though not without a Puppy Linux USB as a backup plan. I wrote detailed instructions on getting online and saving the first day’s session. Thankfully, they were unneeded.

Takeaway

Production. I’ve never done a project intended to operate outside my supervision before. I’m proud of this project, and I’m glad it will be of service while until a more permanent solution.

Final Question

I noticed this week how much I seem to be using my Ventoy multi-boot USB. What is your most valuable tool?

Let me know in either the comments below or on my Socials.

It’s Time I Install EndeavourOS

Good Morning from my Robotics Lab! This is Shadow_8472 with a side project for the week. Let’s get started!

OS installation side project. We’ll see how this goes.

Manjaro has a hate club, and I sympathize with it. It’s stable most of the time, but gives me a large bombshell or two per year. I’ve been meaning to try out EndeavourOS, another user-friendly take on Arch, and my hard drive filling up is as good an excuse as any.

One small task before starting: my file system hangs whenever I try to access a down or inaccessible NFS share on GoldenOakLibry, and it won’t unfreeze until making contact again or forced closed. LibreOffice Writer is a notable offender as it can lock up attempting to autosave. A deeper look into this issue and it works as intended. For what it’s worth, GoldenOak’s HDD’s spin up in loosly 45-50 seconds, so allowing for a rounded minute in the automount file seems reasonable (TimeoutIdleSec).

NFS:
Network File System

HDD:
Hard Disk Drive – specifically the kind with spinning platters

EndeavourOS Installation

I updated the EndeavourOS installer on my Ventoy USB drive and verified it with sha256sum. When I booted to it though, I found it in legacy BIOS mode, and I’m after UEFI experience. I tried my PopOS image from working with UEFI on my sister’s computer, and it too ended up in legacy BIOS. I even booted my old copy of Windows 10 – legacy BIOS. Does my hardware support UEFI or not?!

In short: yes. I dug up a setting in my motherboard firmware to allow UEFI and Legacy, disable Legacy, or disable UEFI. Curious, I disabled Legacy to force UEFI boot. Windows disapeared, EndeavourOS hung, and Manjaro surprisingly loaded just fine, though it sat so long on a black screen I thought was hanging the first time. Sure enough, it had an efi directory, confirming a UEFI boot:

$ ls /sys/firmware/
acpi dmi efi memmap

Ventoy’s Grub2 option got me into UEFI/EndeavourOS for installation. It was otherwise an unremarkable experience compared to other “easy” installers I’ve used. I researched each unfamiliar option and chose systemd-boot as my boot loader even though it only works for UEFI installations.

Moving In (Pacman)

Moving in was dead simple and super clean. Mind blown. In order of installation, my top priorities (after a lefty mouse and stylized pointer) were Firefox, LibreOffice, and NFS – the minimum needed to continue drafting this post. EndeavourOS lacks a visual package manager, so I formally introduced myself to Pacman.

Firefox came preinstalled. I mounted my Manjaro drive and copied ~/.mozila over. Boom! All my tabs, windows, extensions, bookmarks, and everything else was present and accounted for. Maybe a font was different, but I’ll research it later if I’m not adjusted by then (editing note: I’m adjusted now).

LibreOffice was a pain, if you could call it that. I needed to research the “fresh” and “still” branches (testing and stable, respectively), and opted to see what I had on Manjaro. I pulled a massive shortcut and used chroot to approximate a Manjaro shell instead of rebooting back and forth a bunch. Power rush! After a break to mentally process the power grab, I installed the “still” version and later followed it up with hunspell-en_us so spell check had a dictionary.

chroot:
CHange ROOT – starts a shell with a root directory deeper within the file system.

NFS was the last and most routine piece to access GoldenOakLibry: create mountpoints, copy and enable .mount/.automount files. Ray Lyson’s NFS/Samba guide is easily a favorite bookmark [1].

I began listing other things to bring over: ~/.ssh, Discord, FreeTube, AngryIP, Balena Etcher, and Steam are all things I use with varying frequencies. SSH and Discord involved packages from Pacman and copying my old data, like I did with Firefox. Steam offered me my first non-elective challenge when I had to research the correct Vulkan libraries (graphics drivers) to use.

Moving in (Arch User Repository)

My other listed programs will be built with the Arch User Repository, a listing of user-submitted scripts called PKGBUILD files. It is strongly recommended you inspect AUR scripts before running them, and to avoid using automated tools like yay until you’ve manually built and installed a few packages. Hold bad files accountable by flagging them, and vote for ones that build packages properly. Reputable AUR packages may be adopted by a “Trusted User” and relocated to the main repositories.

FreeTube has five different AUR listings. Git (potentially unstable), Wayland (outdated), and appimage (few votes) are all unsuitable – leaving freetube-bin and freetube for serious consideration. Freetube-bin has almost 3x more votes and 22x the popularity (how recently/widely used a package is) as well as having a longer maintenance history. On closer inspection, freetube builds from source, while freetube-bin converts a .deb package. For the purposes of learning AUR from 0, I’ll be using freetube-bin.

Freetube-bin’s AUR page has a Git clone link. Its PKGBUILD file looked simple enough. Makepkg finished, leaving me with the original .deb it downloaded and a .pkg.tar.zst file I eventually found and installed with Pacman. I copied over ~/.config/FreeTube, only to find it was from a broken install I had replaced inelegantly.

AngryIP scanner has only one version: ipscan, but it requires Java. I went through the process of installing GraalVM for Java19/aarch64, replicating a set of symbolic links pointing to Java.

$ java -version

Wrong architecture. I replaced my install with the amd64 version, and that worked. I made a note there in /usr/lib/jvm to use amd64 next time and deleted my raw downloads.

AngryIP/ipscan’s PKGBUILD file builds it from source, and as such looks more involved. The most suspect thing was a for loop I didn’t understand right away. I went to build the package and mere Java doesn’t count as java-runtime. It wants one of 124 Java packages to satisfy its one dependency. I found a version of jre-OpenJDK. Pacman wasn’t amused with my GraalVM shortcuts though, so I disabled them. Both jre-openjdk was installed shortly and ipscan compiled afterwords. Over the weekend between download and installation, AngryIP had gotten a minor revision. I’ll pass for now.

Oh, Balena Etcher. WOW! Three popular candidates showed up – two were a version out of date, and the other a very new appimage with zero maintenance history. I downloaded the the Appimage PKGBUILD anyway and instected it. It looked enough like the others I decided to go with it. Building and installation went smoothly.

Takeaway

It speaks volumes to my personal progress that I thought this might be “side project.” I was wrong, but I must remember that similar projects used to take at least one week for the base OS install and another for each major program I wanted. My impression is that EndeavourOS is for people who are/ want to be fluent in the command line, but don’t want to deal with straight Arch.

EndeavourOS is taking my skill to the next level. I’ve learned by both blitzing the boring tasks and slamming into using the AUR without cheating packages in with pamac. KDE is all purple, but I’m game for the change from the traditional blue.

GRUMBLE! EndeavourOS had a core package update as I was finishing my editing, and now it hangs while booting. I’m back on Manjaro, and updates were waiting. I moved some stuff over so my 1.8gb download could fit. I also linked ~/.mozilla to my EndeavourOS copy.

This computer is messed up right now.

Final Question

I’ve had a busy week with material going on for three potential projects. How was yours?

I look forward hearing your answers on in the comments below or on my Socials.

Work Cited

[1] R. Lyon, “On-Demand NFS and Samba Connections in Linux with Systemd Automount,” Ray Against the Machine, Oct. 7, 2020. (Edited Aug. 26, 2021). [Online]. Available: https://rayagainstthemachine.net/linux%20administration/systemd-automount/. [Accessed Feb. 13, 2023].

Call the Electrician

Good Morning from my Robotics Lab! This is Shadow_8472 with a side project of the week. Let’s get started!

My house has been having intermittent electrical issues for a while, but they flared up enough to diagnose a couple weeks ago. It affected our computer room and the downstairs/backyard lights. Kitchen appliances and most other outlets were on other breaker circuits, thankfully.

It was Monday afternoon. Last week’s post was up, and I was tentatively researching February’s big project. My sister, Taz, asked for help moving her workstation to another room and off the faulty circuit. She warned me about her outlet sparking, so I equipped some leather gloves before I began jiggling out her UPS.

UPS:
Uninterruptible Power Supply.

The outlet crackled as blue arcs flashed within the empty, upper socket and along the blades of the UPS plug as I wrestled with it. The room lights flickered off a few times, adding to the gut feeling I was aboard a starship, working over a console ready to explode in my face.

I put an amount of effort befitting a temporary relocation while arranging Taz’s computer. The challenge was her Internet connection. With OpenWRT fresh in my mind, the hardest part was deciding on a previous project SD card to overwrite.

Each card’s identity was easily confirmed by mounting it and checking <disk>/etc/label. One Raspberry OS install stuck out as redundant now that I use BalenaEtcher for disk imaging.

We quickly ran into an important gap in my networking knowledge: DNS. I shelved PiHole last week in part because I couldn’t get OpenWRT’s DHCP server to properly advertise it as the DNS server. Manjaro/KDE was mostly in last week’s attempts – even allowing for a DHCP IP with a manual DNS, but Windows’ “manual” IP configuration got wiped each time I tested “automatic (DHCP)”. This led to confusion and frustration when Taz saw our hosted Minecraft server online, but not the authentication servers for lack of DNS.

DNS:
Domain Name Service – translates URL’s into IP addresses, a “phone book” for computers

DHCP:
Dynamic Host Configuration Protocol – Automatic IP address configuration, a matradee for networks.

The electrician gave our sparking outlet a checkup. He said that as first goodie on the breaker circuit, everything else is wired in series. When it shorts, everything else is affected before breaker pop. Our outlet has buckled under a heavy load over years’ time; we’ll minimize its usage until repairs happen this coming week. Fun fact: lights and sockets sharing a breaker is a code violation, but it could have been fine when the house was built.

In the meantime, I idled a day or two while trying/failing to fix my DHCP configuration for lack of search terms. OpenWRT’s Lu-Ci web interface strikes a good balance: it’s user-friendly without being baby or admin-proofed. Nevertheless, I took my issue to r/techsupport’s Discord, where I learned about DHCP-options. So far as I can tell, DHCP-options is just a lookup table. Option 6 specifies a list of IPv4 addresses as DNS servers:

6,192.168.0.2,192.168.0.20

Takeaway

Messing with a sparking outlet the way I did was stupid. A few days’ retrospect told me I should have had a fire extinguisher ready. Editing this the night before posting, it dawns on me that de-energizing the whole breaker circuit would have been better still. I’m thankful nothing happened and that the situation is stable enough to wait for a repair.

I’m also glad to have learned about DHCP options. Of note, I picked up this week that Raspberry Pi Wi-Fi radios were never going to win any performance prizes. My Internet slowdowns are not just me.

Final Question

I’m trying something new by isolating glossary terms in a column. They were a pain to figure out, but I think I can control them now. What do you think?

Let me know in either the comments below or on my Socials.