Family Photo Chest Part 7: NAS Hardware

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I’m assembling a NAS(Network Attached Storage) system. Let’s get started!

These things don’t come cheap. Between the case and four large hard disks, the whole system costs as much as a decent computer. It’s also worth noting that this is the first new system I’ve covered on this blog, aside from Raspberry Pis or similarly powered units.

In a way, it was actually a small blessing that this aspect of the project was delayed. In the time since I started researching NAS and now, Western Digital was found to be selling some of their archive quality drives as SMR (Shingled Magnetic Recording) instead of PMR (Perpendicular Magnetic Recording). This is bad because shingled drives are designed to overlap their magnetic tracks while writing so only the narrow read head can fit when the deed is done, and I intend to store more than just static data on here.

We bought four of the smallest non-shingled model. At seven Tb a pop, we should be able to dump all our existing data onto these things two or three times over should we see fit, but only after it’s set up, and that’s after reserving a full drive’s worth of data for parity.

Parity is a redundancy technique that provides some room for error. RAID 5 (Redundant Array of Independent Disks) does this by using a bit one one drive and adding all the bits in the same position on each of the other drives and ignoring all carries. It then distributes this parity data across all the drives, so the more drives in the array, the more efficient your data loss protection. If one drive is suddenly zapped out of [electronic] existence, you just need to replace it with another one of equal or greater storage capacity and the array can repair itself from there.

The NAS system we got was made by Synology –just to be clear, this is not a sponsorship, and I have never had a sponsorship– and I had some quality time with my father as we assembled it. Assembly wasn’t toolless, and the case was a little hard to get back on, but the photographic instructions were easy enough to understand, though they could have used to label their screws as being for either HDD or SSD.

Software wise… I’ll be spending another post setting things up, but I did take a self-guided tour of the place already. Synology has their own operating system called DMS (Disk Management System). I saw that and panicked. My shtick has been Linux, and at least trying to do it myself until stop learning and get frustrated. Long story short, I got bored and found myself reading the license agreement. I didn’t understand it all, but I found references to the GNU license in there.

According to one post on Redit I have since lost track of, people should be cautioned against toying around with different operating systems on this NAS solution because there’s a chance it could brick the system; I really don’t want that. Besides, it looks to me like DMS is built on at least the Linux kernel, and if that thread I found was to be trusted, it’s a stripped down version of Debian.

While writing this, I poked around in SSH and confirmed Linux, but determining parent distro is outside my abilities right now. It sure didn’t feel like a normal SSH experience. It dumped me straight into the root directory instead of a home folder –understandably without the disclaimer about free software and no warrenty– and when I got around to sudo whoami, it lectured me about the basics of superuser privileges, mirroring my earlier experiences in the graphical web interface.

From the moment I started installing the DMS operating system, I noticed how they somehow managed to design their user experience in such a way that anyone with basic computer literacy can use it, but they somehow managed to avoid insulting the intelligence of their power users. I didn’t need the utility they had to find the device’s local IP. I don’t need their online services to bypass port forwarding or their pictures and video galleries, but they’re there for people who want them.

My only substantial complaint so far is that the interface looks like it wants to be Windows, but clearly isn’t. The blue color scheme is there, but all the icons are off. I’m also constantly rummaging around through documentation for advanced features I don’t have a reason to know about yet, let alone disregard for the time being. I suppose I was a little miffed about GoldenOakLibrary being one character too long for the length cap at 15, but by removing a couple letters near the end, it’s still readable if you know what you’re looking at.

My big plans for this system at present are to make some sort of division between family photos, computer backups, and general storage. Once that’s done, we can finally start scanning, among other things.

Final Question: What systems have you used that don’t baby down their interfaces with scary warnings to the point of alienating power users who already knew what was going on?

Minecraft Server Graduation

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am reviewing the history of the Minecraft server my family started for us and a couple friends. Let’s get started!

It all started when we left a larger community when its figurehead started appealing towards a different audience and the culture shifted a little too far for comfort. My sister assembled a series of datapacks from the Hermitcraft server that would give a Vanilla feel to the game while adding a few fun things, resulting in the “Creepers and Cream” pack.

Using a few old parts, I spent a few intense weeks working on Micro Core Linux, trying to optimize every last drop of performance out of the aged CPU. In that time, the biggest takeaway I had was learning the root directory, /. In the end, Java did not want to work for me, so I capitulated and used a ready made distro, MineOS.

MineOS is a Linux distribution that was built to host Minecraft. All overhead is trimmed down, and the firewall is sealed tight, only opening ports absolutely vital for operation: Port 22 for SSH, Port 25565 as the default Minecraft port, Port 8443 for HTTPS access to the WebUI. While I wasn’t too sure about this WebUI and how much it would cut into the precious resources of the host machine, I will say it has been worth it.

One of the early optimizations was adding G1GC to the Java arguments. On the default Java garbage collection, Minecraft would just keep carving out more and more RAM and try to clean it out all at once — literally the worst case possible for a game where things are constantly being loaded and unloaded all the time. I added all the RAM I had and still had laying around and I still had a predictable big crash after a couple weeks of nonstop play.

Things were largely smooth after that. I set up automatic daily restore points and weekly archives. We ended up investing in a 1TB drive when the archives filled it up and the server declined to continue running. My laptop’s Windows drive was formatted in the crossfire.

Over time, our community grew. We aren’t a huge server, but we have a few regulars. The limiting factor I cannot control is the CPU. It has four cores, but get just two people on there in different parts of the map and it maxes out the activity for a single core, and the server starts skipping ticks every so often. It’s still very playable, but I’d like to not see that message, if possible. There are three other threads, but Minecraft servers are still unable to use more than one core at a time. So that is our limiting factor…

At least it was, until people started having random connection issues. It looks like our ISP has seen fit to make things easier for the general public, which is fine, as long as you don’t alienate your power users. Long story short, they’ve moved things around and made their online protection more aggressive, labeling at least one of our players’ IP addresses as malicious. We told it to allow access, and it only gave him a month. I tried looking into port forwarding, and it was elsewhere in a place I couldn’t find. Tech support was no help because the line dropped during a hold and nobody ever called back.

In the face of these challenges outside our control, we are now considering moving to a hosting service. We don’t know which one yet, or when we will move over, but in the meantime, I’m trying to open a creative world on the same machine. The first server rarely uses more than 4GB of RAM anymore, and there are still three other cores, though I will be saving at least one for normal operations and miscellaneous overhead.

Final Question: If you play Minecraft, what version did you start playing on?

My First Online Scam

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am telling the story of my first experience with a 419 scam. Let’s get started.

I’m writing this during a time of many projects, and if this post appears randomly, it probably means I need a week off, or I’m stuck and need extra time with next week’s project. Even now, it’s been a few weeks, so parts are already slipping away.

It all started when I received a computer related Discord message announcing a giveaway to help with the hard times of the pandemic going around. I had won .81 bitcoin! Huzza! How much was a bitcoin worth? I looked it up, and it was floating around the $9200 mark. I was staring down about $7000 if I could go claim it. The message gave me a code and a link to a cryptocurrency exchange where I could redeem it.

I was suspicious, as I should have been. Red Flag 1: I never entered any giveaway. Red Flag 2: The account giving away this freebee had only just now joined the only server we had in common. I decided to check out the link, but not as myself just yet. I decided to install TOR browser to make it look like I was somewhere else. One problem: Debian’s repositories only allow old, proven software. That’s when I learned about backports.

According to the Backports page on the Debian Wiki, “Backports are recompiled packages from testing (mostly) and unstable (in a few cases only, e.g. security updates), so they will run without new libraries (wherever it is possible) on a stable Debian distribution.” It goes on to say you should only use what you need without using every backport in the whole of Creation, at which point, I’d think you’re better off using the testing version of Debian Sid, the “unstable” version.

TOR went on without too many additional problems. I followed the link, and the site looked professional enough. I revisited it with regular, old Firefox and made myself an account using a unique password, as you should. Red flag 3: I didn’t get a notification e-mail. I noted it, but chose to ignore it for the time being. The site also went out of its way to point out that it was using https for encrypted login.

Redeeming the code went smoothly as you’d expect. I figured there’s no point in spending the money until I had gotten something tangible off this exchange. I mean, $7500 or so is enough for a very nice desktop computer — maybe even a couple just nice ones, even after paying a 10% tithe to my church. I even contacted their online giving section and was a little sad they didn’t accept Bitcoin. The most impressive part of the exchange was how it was already Friday afternoon, and they still got back within about four minutes.

I decided to try making a small purchase, but there was a small matter of the exchange saying there would be an equivalent of a flat, $5 charge for every transaction. Yellow Flag: While this business model is entirely reasonable, it discourages testing them out with small payments. It’s easier to ignore $1000 +$5 than it is to ignore $1 +$5. Switching things around, I found a way to purchase from NewEgg using a service that accepts Bitcoin and decided it would be good to pick out some hard disks for a future project.

In parallel with that project, I learned a bit more about the mechanics of Bitcoin payments. I tried making an anonymous account on a more reputable cryptocurrency exchange, but they wanted personally identifiable information. Red Flag 4: This other site I was working with was only 3 days old, according to domain name records, yet it had articles dated before that.

Another tidbit I learned from a third party was that there are laws forbidding cryptocurrency exchanges from making cash payments until the account has already received payment from a verified bank account, and then it can only pay to that bank account. Turns out that’s to prevent money laundering.

I continued on with trying to buy the hard disks by moving the Bitcoin off the exchange and onto my phone. I generated a code, moved it over to the exchange, and… Error: new account, please deposit about $200 to unlock your account. Bummer! I had been warned about this, but I chose to go learn about it anyway.

A sliver of faint hope was finally dismantled when I talked with one of the mods on the Discord I was on. Turns out multiple people had gotten targeted, but I was the first to report this particular individual. After a screenshot of the PM he sent, he was banned from the server.

Final Question: Have you ever been targeted by a 419 scam and come out the other side with an interesting story?

“Beowulf Cluster:” Part 5: DHCP and NAT

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am getting a head start on this post, so I don’t yet know where the end point for this segments. Let’s get started!

I hate networking. This router project is really taking a lot to learn. I’m losing track in my memory about what point I was on when the official break in weeks happened. Right now, I’m just looking forward to the time when I can say I have a custom router, and setting up the “Beowulf Cluster” I originally set out to build –not that I can really call it that anymore– should be one more week™ after that.

Once I had the network interfaces set up correctly, DHCP wasn’t far behind. I had a few semicolons missing after some lines, but that was about it. I plugged my laptop into the my little subnet and the Pi assigned it an IP in the range I had told it to. It just wouldn’t let me at the Internet at large, even though I haven’t changed iptables off its default of accepting everything yet. Of note: I was unable to use the Internet even while still connected wirelessly. Two weeks ago (Was it only that short ago?) I would have just poked around with “black box reasoning” before concluding that Ethernet superseded Wi-Fi because it is faster, all other factors being equal.

Further investigation led to believe I should look into NAT (Network Address Translation). It’s disabled by default, likely because if you need it, you’ll soon learn about it like I’m doing now.

A couple guides later, and I had uncommented a line in a config file to allow IP forwarding, but when I used modprobe ip_forward to add NAT abilities to the kernel, listing out my iptables gave a warning about legacy software.

***

Well, this write up is coming due, so here’s what I’ve got.

I worked with a couple friends on my private Minecraft server –yes the one I’ve covered here before– by the names of doflagie and TheRSC. We didn’t go messing around with NAT tables, but we did inspect the DHCP configuration files some more.

At least, that was the plan at first. I accidentally broke an interface by editing the file there. Rebooting cut off my connection. I SSH’ed in over the other interface and promptly broke that one too. I had to swap around cables to fix those config files, so it was all good.

With my little review from last week out of the way, I went to weed through the actual DHCP config file. I wasn’t sure where it was, but before I resorted to finding it again online, I noticed one terminal on my workstation was already in a local DHCP directory when it wasn’t SSH’ed into somewhere else.

As part of my workflow, I hooked BlinkyPie up to the Ethernet subnet. Thanks to the default Raspian settings, eth0 overrode wlan0 as the default network interface, so I didn’t have to disable or disconnect Wi-Fi. Otherwise, Blinky is standing in for a generic microcomputer on this micronetwork.

It took several hours, but when I rearranged the DHCP config on the Pi4 to reflect the subnet and not the wider home network, I was able to reach out from Blinky through the Pi4. However, I was only allowed to the gateway, and no farther.

These results are underwhelming. Each last problem feels like it is comprised of a chain of smaller problems, leading to another such chain. I’m making progress, but if feels like the goalpost is moving on me.

Final question: How hard should this really be? Sure, there are higher lever programs, but how long should a low-level approach like what I’m doing take to figure out?

“Beowulf Cluster:” Part 4: Network Interface Connections

Good Morning from my Robotics Lab! This is Shadow_8472 and today, I am working on that Pi4 network piece again. Let’s get started!

I am having the hardest time with networking. What could have been a confusing, possibly straightforward black box operation turned into a subject of study where I’m likely going to be able to do my own thing later on. With that better foundation, I just might add DHCP back in into my general plan, as such a system would be a much more useful tool I could use in an upcoming project I’ve been looking forward to.

As stated in an earlier post, I’ve been cobbling my way together using a series of incomplete tutorials and seeking help understanding the gaps. Many video tutorials for networking are either old, made with bad audio quality, have a presenter with a thick accent I can’t make out, or a combination of the three. Text is unfortunately the way to go.

My functional goal for this week was to get the Pi 4 functioning normally online with a static IP. Through whatever mishmash of tutorials, the following is what I’ve cobbled together as I understand it.

The Pi 4 has two network interfaces, one called eth0 and another called wlan0. These names represent an old standard on the way out, but for this week at least, I’m sticking with them. I started by going to /etc/network/interfaces and set it up so each interface has its own configuration file in the directory /etc/network/interfaces.d/. Eth0 was straightforward to set to static, but wlan0 had another pointer elsewhere for the WiFi name and passkey.

My first big problem was in how I had to copy configuration file examples by hand. At my worst point, I had some equal signs where spaces belonged and spaces where underscores belonged. The former was a mistake I made when looking at two related, but dissimilar files, and I diagnosed it by paying attention to the error messages when I tried sending sudo ifup wlan0.

The later was a mistake I made because I was copying things by hand without SSH and a dark mode plugin I use actually cut off the bottom row of each line of test in a code box, including the entirety of each underscore. This one only told me the interface failed to start. Someone going by Arch on the EngineerMan Discord pointed me to journalctl, some sort of log viewing utility. I piped the wall of text through grep to pick up wpa_supplicant, a utility that kept complaining. Journalctl also pointed out locations of errors with quotes around the WiFi SSID and psk fields where I needed strings.

Assorted errors along the way included a mistaken time zone that was easily taken care of. I also had a surprise when the contents of /etc/wpa_supplicant/wpa_supplicant.conf vanished on a reboot: turns out I had a blank copy in /boot and as Raspbian boots, it will move certain configuration files in that folder around to overwrite their permanent counterparts, leaving me guessing as to what’s already been done.

With stable network interfaces, I started testing them, but I wasn’t able to ping anywhere successfully. I noticed that it was using its IP from the eth0 socket, and not wlan0 for some reason. Eventually, I either found or was directed to route or route -n: basically the table where Linux decides what door to send packets out of as they leave. Eth0 was set up as default if no other matches on the table were found; all my ping packets were being sent inward and getting lost instead of getting sent out, into the wild.

I spent time studying this new table and found a clear, black box style tutorial I was able to reverse engineer LINK. Manipulating the table directly was straightforward enough, but what I failed to realize was that parts of the table are generated fresh each time a network interface goes down or comes up. My work totally collapsed when I rebooted, reverting the default interface back from wlan0 to eth0.

The fix (shown as “Part 2” in the black box tutorial linked above) led me back around to the beginning. Part of the configuration of different interfaces includes a setting called gateway. I actually had to move it from eth0’s config file over to wlan0’s config file.

Admittedly, I am a bit disappointed in this week’s results, but I learned a lot more than a total black box experience would have afforded me.

Final Question: Have you ever poked at a “black box” and learned how it worked?

Family Photo Chest Part 7: How to Plug In a Scanner

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I would like to share with you the inSANE time I had trying to set up a scanner without root privileges. Let’s get started!

SANE is a resource for Linux to streamline the setup of scanners. From what I understand, it’s supposed to just make things easy.

Unfortunately, there’s a bug (or was) a bug in the version written for Debian Buster. I honestly thought this would be easy; I spent the whole week trying to not only fix the issue, but understand what I was doing as I was doing it. Special thanks go to all the people who at least tried to help me on the various Discord servers I broadcast my distress calls on.

As with any problem, diagnosis is the first step. Tutorials, in general, expect a clean installation, but I’m past that point. I’ve already tried, and failed to complete this procedure. I at least know how to look around with ls -l and other commands.

I started out with sane-find-scanner and lsusb, and eventually figured that while I –my user account– had permission to use the scanner, I didn’t have permission to access the USB bus it was connected to. A little research led me down the path of exploring the groups mechanic of Linux. They appear very useful, but I have yet to figure them out. What I did learn was that the scanner group wasn’t enough to let me scan in and of itself.

It took me a while to find that bug, but since it was crossed out and a note said it was fixed in some future build, I updated everything from the apt repository and nothing! Reboot: nothing!

I reexplained my support issue several times across multiple Discord servers, and I sometimes got someone to try and help me, but eventually, I ended up going back to that bug and reading up on it.

Buried within what felt like an endless amount of terminal output with the occasional e-mail header, I came across a workaround. It called for making a symbolic link between a couple files, then to put some text in a file elsewhere in the filesystem. The instructions sounded familiar from my last attempt, and they were consistent with other Linux help forum posts from different places.

I spent about a day trying to figure out why the symbolic link wasn’t showing up. The folder in question where I thought it was supposed to appear already a link. There were three files in the directory, and when I used a –verbose flag, I saw three entries. I rummaged around in ln –help and found that one of the other flags caused links to overwrite existing links to replace them. I figured that must be happening here, but its timestamps weren’t changing from a date last year when I supposedly updated them.

I eventually decided to play around with a symbolic link in an isolated spot in my home directory. I had my sandbox directory with another directory in it. I made a test .txt file in the sub directory, and tried making a link directly in the sandbox’s root using the same flags as in my problem link. The link didn’t appear in the root, but it instead replaced the text file, and the terminal warned me about it being a broken link by rendering the link in red instead of the normal cyan. I fiddled around with it some more by remaking the test .txt file in the root and leaving the link in the sub directory. I had a few missteps, but I managed to access the file by using the link.

Back on the main area, I found the links I had been overwriting in the other directory by listing them with ls -l and scanning for a timestamp that wasn’t in 2019. Three entries popped out at me. On closer inspection, the link I thought was a rewrite dud was, in fact, linking to a file within the same directory, but with a different name. It looked like it was meant to catch programs calling for the old version of a program and redirecting them to a slightly updated copy — just like forwarding mail.

The rest of the workaround was simple. I learned about the touch command, a little program to update a file’s timestamp or create a file if it isn’t there. I rebooted and had a good feeling when I heard the scanner move a little as Linux was starting up. Sure enough, I was able to start the GUI interface without superuser.

All in all, this week taught me a near-miss lesson about one of the more interesting features in Linux, and apparently Windows as well.

Final Question: Who’s ready to hook up a printer?

“Beowulf Cluster:” Part 3: Networking Nightmare

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I actually spent the better part of the week on this segment and still didn’t get as far as I would have liked. Let’s get started!

There is a reason networking scared me off when I first looked into it back when I was in university. Every computer needs a way to introduce itself to not only its communication counterpart, but all the message carriers along the way. It’s almost unbelievable how easily it all can be smoothed over so even a toddler can get him or herself into trouble without proper supervision. But all the inner workings are still there, churning away, ready for someone to go monkeying around until something breaks.

Last week, I talked about the hardware side of things. I have all the equipment I need ready to use, but it’s waiting on a digital support structure to hold the worker nodes together. My goal for this week was to build that support structure. I would have declared success when I could connect my laptop to an Ethernet network served by the new Pi 4 and access a web page.

Originally, I was aiming to set the router up as a DHCP server so it could hand out IP addresses on the fly. Along the way, I learned how to set up a static IP. Did I mention how ugly raw networking configuration looks to complete beginners?

I honestly don’t know half the stuff I did as I was trying to follow multiple tutorials at once, hoping one would fill in for another when it didn’t apply to my present situation. One blank on a text-based tutorial was elaborated on by a quick comment by a YouTube video, and I ended up stumbling in a third direction in the hopes I was doing the right thing for my project.

And that’s when I can even follow the tutorials! Half the time I landed on a video where some would-be instructor may know what he’s talking about, but his audio quality says he’s working with what he’s got, and that can be a bit sharp on the ears. Another good chunk of the time, it’s someone with a thick accent I wouldn’t be able to understand unless I could ask him to repeat multiple words. Unfortunately, text is going to be the way to go for tutorials at my level of specialization.

I wasn’t able to get the DHCP server sorted out. Something about there can only be one per network, and I have no idea how to confine it to confine it to one network interface — that’s another thing I learned about.

Network interfaces: the whole reason this project is a thing is because the Pi 4 has two separate network interfaces, or ways to access a network, such that it can participate in two distinct networks at once: one for the Ethernet, called Eth0, and one for the WiFi, called wlan0. If that weren’t confusing enough, there’s a new standard that names network interfaces off the hardware they’re connected to. For my intents and purposes, where I only have a single interface per kind of connection, it only serves to confuse when it shows up elsewhere — namely my laptop — but I imagine it would make handling a 50 port switch a little more bearable.

At some point, I gave myself a reality check. I only had five computers to contend with. DHCP is a little bit much for what I’m looking to do. Extra overhead: needs to be axed. I’ll just use static IP’s all around. I went ahead and set my laptop’s Ethernet network interface up with one and rebooted, since I couldn’t seem to restart just the network settings. I had to fix a couple settings, but it was pretty easy to get it to ping –and even ssh into– the Pi 4 over the Ethernet network I had going. The trouble was that I couldn’t access a web page like I wanted.

I messed around a bit and when I was done, I unplugged and connected to my home network, only to find it was being difficult. The best I can figure is that by editing one of the configuration files to give me a static IP, I was accidentally voiding some default for WiFi settings as well. I made an attempt to copy what I had going on from a tutorial on the Pi 4, but due to a series of disconnection issues, I ended up restarting the Pi and losing it on the network.

I was sure to make notes on how to reverse the network damage to my laptop as I made it. I commented out the altered lines, and rebooted again. Still no Pi 4 on the network. I looked on the miniature network again, and eventually resolved to swapping over the HDMI cable to the back of the monitor, only to find a line in ITS network configuration files from when I was experimenting with iptables to solve the present issue.

I’m laying this issue to rest where it is for now. I had some measure of tangible success, but the majority of my efforts were sunk into learning new skills. My laptop is in a usable state, at least.

Final Question: What have you cut out to make things easier on yourself?

Beowulf Cluster: Part 2: Not a Beowulf Cluster Yet

Good Morning from my Robotics Lab! This is Shadow_8472 and today, I learned a lot toward the next step in my project and backed out at the last minute. Let’s get started!

You know the thing about clusters: it takes some overhead to run them? The computers I’m working with in my Third Workshop care package don ‘t have much CPU to begin with. Special thanks to kevrocks67 on the EngineerMan Discord server for getting that point through my head and pointing me in the right direction: subnetting.

My understanding of subnetting is lacking to say the least. Perhaps if I back up and just tell the story.

This week saw most of the parts I need for my cluster come in. Shopping for the Pi 4, I compared different sellers and chose one to go along with a separate heat sink case I picked out from a different distributor. I managed to save a little money by assembling my own kit instead of getting one that included some small, aluminum heat sinks.

When the case arrived, it came with some thick thermal pads. Yeah, those won’t be separating once the case is fully installed and operational temperatures melt the pads into place or they are just sticky. I did a dry fit and it doesn’t look like the case will operate correctly without them. In the meantime, I noticed the camera cable slot and the similar-looking display slot will likely be inaccessible once I assemble the case, though the GPIO pins will still be open.

My father picked up a couple outdoor grade 3-way power spliters for power management. The minicomputers I’m working with have bulky transformers right on the plug, and they are such a shape as to make it difficult to creatively arrange more than three on a seven-plug power strip.

The Ethernet cable we picked up was paid for with a little effort. One of my church members was wiring up the church a while back for Cat6, and he has some left on the spool. I stayed topside while my father donned a jumpsuit and finished running the cable to just below the office, where he cut the cable. There was enough to reach the office, but that was it: maybe about 30 feet max: more than double my very rough estimation of what I’d need. A package of Cat6 ends and a crimper will see me learning yet another new skill in the near future.

About the only piece I don’t have picked out yet is a board to mount things on. It doesn’t look like the heat sink case has any good places to mount, though the switch and minicomputers do.

The next logical thing to do is assemble an early prototype! One control node and one worker node should be a good start… if only I could get the pi to boot from an SD.

Lacking the desire to format any drives where a valued drive can possibly be hit in the crossfire, paired with the inability to read SD cards on anything but my laptop, I tried using an app on my tablet to flash a card. For one reason or another, I wasn’t able to boot. I suspect I need root privileges to properly format anything with Android, unless I want to format as internal or removable storage. Lacking access to an old phone nobody has no qualms with me “voiding the warranty,” a multi-SD reader is on order.

Speaking of SD readers, turns out each of the five little helpers has one built in. I’ll be using one of those along with a live USB for formatting fun in the near future with no chance of fireworks at the end, just as soon as I figure out why they look exactly the same with lsblk -l. I suspect it’s got its own SD card like storage device in there. Ironically enough, I suppose the difference should make a slip up of the same calibur nearly impossible this go around. Nevertheless, I still want to practice isolation of formatting whenever possible. In either case, what I am trying to think of as equivalent to a hard drive is not labeled sdx anymore.

Somewhere, I made the switch in short-term project aim from cluster to subnet to reclaim some of that overhead. I still want to end up with a cluster for the experience, but for now my token effort among token efforts will be more efficient with less overhead.

To help with overhead costs, I found a site that compares lightweight distros. Thishosting.rocks/best-lightweight-linux-distros/ They have a sortable chart of about 30 distros and their rough minimum system requirements, including RAM, CPU, and space on disk. Folding@Home is likely to use CPU above anything else, I suppose, and RAM can’t be easily expanded, so my dump stat is disk space.

I optimized for CPU, and found Debian was a near-perfect choice. Most, if not all, my Linux experience is in Debian or a decedent of Debian. The required RAM is one of the lower rankings while still needing an almost non-existent CPU. I even already have the install media plugged into the thing and booted! Though I may want to look into a server installation option.

In terms of mentally tangible progress toward a prototype, I set the Pi 4 aside for the moment and brought in BlinkyPie, my Pi 3B+. My goal: turn a Raspberry Pi into a router. I’ll know everything works when I have Internet access on the minicomputer that is otherwise not connected through any other means.

I viewed a few networking videos that were either dated, covering basic material I already knew, had bad audio quality, or showed what to do without giving any theory behind their actions. I eventually settled on a clear, step by step tutorial on at Linuxhint.com/raspberry_pi_wired_router that does not explain its actions, but the steps are short enough that I can seek out my own explanations as I go.

The tutorial starts with installing Raspian and getting SSH going. As anyone who’s been following my blog long term knows, SSH was a real pain for me to figure out, and if I didn’t know what I was doing, it might as well be a small element of a magic ritual to start over if things fail. Since I intended to work with a Pi that was already established, I glazed over those steps and started in on configuring the network.

The whole reason this project of a subnet is possible with the hardware I have is because the Pi can participate in two networks at once: one via Ethernet, and one via WiFi. To make a long story short: this procedure requires the Pi establish itself in a special IP address for the router, implying a static IP. I sometimes take this Pi elsewhere (or at least its chip), and I don’t want to forget and accidentally mess up someone’s network, so I backed out in favor of waiting on a properly running Pi 4.

As always, this project is evolving as I work on it. The Gigabit Ethernet speeds I thought I would use for a cluster won’t be necessary for the time being, as there’s a slightly lower bottleneck at the Pi’s WiFi network adapter. Next week should be interesting.

Final Question: When was your last project where you lowered the specs and found yourself overbuilt?

Beowulf Cluster: Part 1: Sum of Its Parts

Good Morning from my Robotics Lab! This is Shadow_8472 and today, I am planning a model supercomputer. Let’s get started!

I feel swamped with projects right now. They end up stacking up and with different priorities, so I’m glad I can finally do something with this lockdown care package I recieved from Third Workshop several weeks ago.

The package contained five Minus Forum Fanless Mini PC’s, model N40. After carefully removing and discarding the wrapper, I pulled one out and hooked it up. It booted to Windows 10 setup. Nice that they included something, but for a number of reasons, I will be installing some version of Linux on these tiny machines. What annoyed me was that the screen where Windows wants me to accept the EULA did not have a reject button.

What annoyed me more was how I never received an answer from support about a partial refund per the Windows EULA. Honestly, I did that more on principle, and I don’t know how it would work. I am not the original purchaser, and they were already on sale. Token effort. Their support website didn’t have a security certificate for protecting login details, so I didn’t prioritize pursuing a couple dollars per machine any further. In the meantime, I turned my attention to booting Linux from my Debian install stick. Let me tell you: the BIOS on these things is about as user friendly as their tech support.

By default, it priorities internal boot devices over removal media, and it only gives a tiny window of opportunity to enter the boot menu, or it’s off to Win10. it’s almost like the original manufacturer didn’t want people looking at the BIOS at it’s almost like the original manufacturer didn’t want people looking at the BIOS at; I had to look up what key to press, and it was either F2 or DELETE, and when I got to the BIOS menu, it was the ugliest one I’ve ever seen. The aesthetics were on the low end for terminal style menus, but the real kicker was how they handled moving the boot order around. I wasn’t able to figure it out except that it felt like swapping items in an array instead of moving things up and down a list. Despite the challenges, I was able to boot the way I wanted to.

Assembling a supercomputer though, that is a whole other story. There are two kinds of supercomputers: distributed, like what Fold@Home is using to combat the CCP Virus Pandemic (which I intend to add these goodies to), and clusters, like what I’m trying to build. At present, I am pursuing the term Beowulf Cluster in my searches.

I just wanted to touch on another reason not to go with Windows for this project, besides me transitioning to Linux whenever possible. Windows charges per instance of their OS. Supercomputers need one OS per node, and practical supercomputers will often have at least five or six nodes working in parallel. Couple that with the already sparse number of applications for supercomputers, and you end up with virtually no supporting software to use Windows for a Cluster computer.

The biggest challenge I faced in this part of the work was knowing what to order. I had to ask someone on my family’s Minecraft server before I knew for sure that a switch would serve just fine. Then came the rest of the support system.

These little computers support Gigabit Ethernet, so that’s what I’m aiming for all along the system, primarily the network cabling. There’s a lot to know about wiring. Modern data transmission builds on the twisted pair technique originally invented by Alaxander Gram Bell. Since then, we’ve found ways to reduce noise, such as insulating the wires from each other, shielding them from each other with foil, shielding the whole set of wires from their environment with more foil, and so on and so forth. There are specs on fire safety if the cable is installed horizontally, vertically, or even in the ventilation system.

More relevant to my project is how the cable’s wires are made. One kind is made with lots of strands, making it easy to bend around and is often used between computers and the wall. The one I want uses solid wires; the wires won’t be moving around much after installation.

Rounding the computation side of things off, I have a Raspberry Pi 4B on order. That was a small adventure. Turns out the B in Pi XB just means it has an Ethernet port, and a model A doesn’t have it. Since they aren’t making Pi 4’s without Ethernet at present, all cases made for plain “Pi 4” should work for my purposes. I went for one that doubles as a large heat sink. Neither have arrives as of writing.

The final hardware challenge is power. While I’d like to just slap a strong enough power supply on the mounting board, different parts of my system will be running three unique voltages. The only ones I’d have any chance of combining are the original minicomputers, and their power supplies are matched pretty well with what they need. They also take up too much real estate on the power strip. I researched over and out of my price range, landing on the conclusion that more research would be needed to combine transformers. The plan now is to grab a couple angled three-way splitters and use the original transformers.

I haven’t even gotten to assembling the system, and it’s already a formidable challenge. Nevertheless, there is one more good reason for combining all these machines in one “casing:” I believe my family is near capacity with the number of computers our router can physically address at once, and that this project would otherwise put it over. The way it’s planned out, as the controller. the Pi 4 will be the only node to talk to the outside.

Final Question: What would you use a supercomputer for?

ButtonMash Upgrade Take II

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am actually doing a one-and-done project. Granted it’s more of a follow up to a huge project I did last year, but still, it felt great getting something short in. Let’s get started!

My family and a few online friends have enjoyed ButtonMash, a Minecraft server I assembled from hardware I had laying around, for several months now, and it recently ran out of hard drive space. Turns out 60 Gb of space doesn’t last all that long when you’re making full weekly backups of the whole server! I started covering this upgrade when I accidentally formatted my Windows drive on my laptop.

I started with a new download of MineOS. I formatted the correct drive and used the dd command to write the image file to the correct drive. With a new install media, I brought it and the new 1 Tb SSD to my tower and hooked them up to be the only things connected. Installation went smoothly until MineOS didn’t recognize the USB WiFi adapter I have.

I put the project down for a while while until I had a chance to continue working on it using an Ethernet connection. The only SATA port my laptop has is hidden below about twenty to thirty screws, the ButtonMash server wasn’t going down for any longer than I could help. Aside from two computers I highly doubted I could use, I was left with the one I put together for my father. With his permission, I installed the drive and ran the security updates recommended earlier during setup.

The only real snag I hit was when I ran into the DHCP configuration requiring manual intervention each time the machine booted. Annoying, as I was working with it mostly from SSH. I knew I had had this issue before, but I couldn’t remember how I solved it. I was a little frustrated with the lack of information online on this topic, but it was amusing for a previous blog post to show up in my search results — twice. My father ended up manually configuring a static IP one boot. It took another hour or two before I remembered static IP was the way to go. I added “fixing the static IP” as something to do announcing project completion.

Copying over the server files was fun. I got into the old server’s web interface and made a fresh archive. Then, using the new install of MineOS, I SSH’ed into the old one to copy the archive over to an import folder using scp. I goofed on the long file path, so I ended up copying it to the home directory and then over to the new hard drive.

With that, I moved over to the new server’s web interface and imported the server. Everything was there, except any backups. I logged into Minecraft and got in no problem, and when I checked, the automatic updates were still around. I’m thinking about redoing those as monthly, but it works for now, nobody touch it!

As a side note, I did some digging into using Let’s Encrypt with MineOS. A thread on the MineOS forums filled in some gaps in my understanding of MineOS’s https security heigine. Https relies on a security certificate –usually issued by a trusted third party– to scramble their communication. When the server self-signs a certificate, you as a client have to trust a potential unknown with keeping their half of the code safe. Before, I was under the impression there wasn’t any sort of security certificate without Let’s Encrypt. However, since the only people who need encrypted access are admins looking to access the web interface, they should probably be in a position to trust a self-signed certificate. From an outside attacker’s point of view, it looks the same as one from a more official source.

I shut both computers down and moved the hard drives around. My father’s computer was reassembled, and ButtonMash’s small MineOS SSD and Ubuntu hard disk were pulled and replaced with the new SSD. I booted it up, logged in with SSH (Public/private key authentication is so nice!), and fixed the static IP from when it had adopted my father’s computer’s IP as static. One more reboot later, and the server was officially up. Within half an hour, one of our players from the outside was on.

One more side note: it looks like by default, you have to first ssh in as a standard user, mc by default, and then use the su (substitute user) command to switch to the root account, as sudo does not come with MineOS by default.

On a finishing thought, I honestly hope someone finds this useful, even if I end up rambling. I purposefully added some key words I wish I had covered last time, so maybe I’ll come across this one next time I find myself setting up MineOS.

Final Question: Have you ever searched for help, only to be redirected back to yourself?