“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?

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?

Linux Deep Dive Part 4: 3D Printer Workflow Online

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am printing myself a bookmark as a “Hello Again, World” project. Let’s get started!

I have a Monoprice Maker Select Plus 3D printer. It’s a rebrand of a product made by Wanhao. For those keeping score, I am running Debian 10 (Buster) on my laptop, and I’m migrating different tasks over to Linux that I can.

My problem: My printer shipped with a version of the Cura slicer specifically tailored to work with it — on Windows. By default, the version of Cura I found on the Debian 10 repositories does not come packaged with presets for my printer or its original branding. Furthermore, the software has had several more years of development since the kiddie pool fork of the software I was used to playing with.

Since last week, I’ve realized that as far as someone at my skill level is concerned, all the specializations are are just a few numbers a sufficiently resourceful individual, such as myself, can look up, punch in, and fine tune as necessary. With the right numbers, I can see where a printer can safely print multiple small jobs on the same bed without waiting on the head to move to each one every layer.

A slicer is only any good if I’m going to print something, so I modeled up a bookmark in Blender. That interface is a new sight for my eyes to behold. I eeked out something for a first prototype using my fragmented knowledge from when I last put printing away.

Over in Cura, I used a slider to set 100% infill; I don’t want this thing breaking on me. I told it to go with structural support and saved it to my SD card. I really like this version of Cura over the dinosaur animal cracker I used to work with.

I went through about half a thing of canned air on my printer and leveled it with an assortment of junk mail and a bubble level. Fortunately I didn’t need to reapply grease. I did have to reassemble my MacGyvered filament holder atop the printer. Somehow, I found the same piece of PVC pipe from before in another part of the house, but I used a rag instead of a strip of cardboard to secure it.

When material started getting laid down, I noticed another old problem. Filament wasn’t quite sticking at the very beginning of extrusion. As the printer continued laying down material around where my bookmark was soon to take shape, I recognized it as a brim. The malformed plastic was relatively isolated, and the print continued without further incident.

Lacking my proper spatula, I peeled the fresh bookmark off the buildplate by the deformity from the beginning, but I quickly learned how easily freshly printed plastic can deform. It twisted and left a minor, permanent warp if one were to look closely enough. Next time, I will let it cool.

The brim was a lot harder to get everything. Between the prototype being too thick for a hardback and me not liking the pointy bits I designed into the sides, I took the design back to Blender, where I had to refresh my memory again on proper modeling methodologies and that’s were I stand now.

Final Question: How frequent do you come across a 3D printer operator using Linux?

Linux Deep Dive Part 3: Stability

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am just going over the stuff I did this week. Spoiler alert: it’s more of a mix and mash. Let’s get started.

My idea while writing last week’s post was it. I believe my laptop wasn’t booting reliably because GRUB was configured incorrectly. The BIOS went fine and selected the external drive to load from (or the GRUB disk). The bootloader, GRUB, loaded correctly, gave me the option of operating systems to boot, but when it went to load Debian, some of the time the drives respond out of order: when GRUB went to the drive presently known as sda, the internal, Windows drive, and expected to load Debian, it panicked and dropped into BusyBox.

I diagnosed the problem by looking directly at the grub configuration files and sorted out any instances of “sda.” There were a few. After fielding some questions about the suspect config lines, I regenerated the config file after reverting the only change I had previously made without regenerating. When it was done, I scanned for the parts where “sda” had previously shown up, and there was the correct UUID I was looking for.

I wish I had found someone identifying this problem. Ironically, I came within inches of mysteriously solving this issue none the wiser when I tried regenerating the GRUB files to give the drives a full minute to load instead of five seconds. I can see where I might have spent just as long trying to reproduce the bug an failing. I wouldn’t have it any other way than how it happened. I can live with this.

With stability issues out of the way, I have other things to move over. Remember when I used to do 3D printing? Well, I want to make a bookmark, and I want to do it from Linux. I popped my SD card into my laptop, and found the copy of the Cura slicer that originally came with my printer — it’s a .exe file. Linux doesn’t do .exe files.

Side note: I’ve been using aptitude instead of apt-get. They both do the same job, but aptitude tries to put a nicer face on it, like not changing half its name for searching instead of installing.

After teaching myself how to search the apt repository like I did back on MicroCore, I used aptitude search cura and installed the package pertaining to g-code generation. I looked in my program menu and found “Ultimaker Cura.” OK, I suppose this is the generic. I already knew the version I was on before was a fork of some other parent program. Lacking another explanation, Ulitmaker Cura seems to be it.

The first time I opened this newer version of Cura, I was bombarded with a prompt to add my printer. I didn’t see my printer, so I ended up picking a wrong one and continuing from there. And that is where I’m stuck.

I poked around in the menus and did some research, and found the latest version of Cura is on at least version 4.0, but the on in the Debian repositories is 3.3.1. I am starting to get the feeling that this is what they meant when Debian software is chosen for proven stability. I may go around the repository on this one.

Diagnostic procedures involved a bunch of research and plugging in with a USB B connector. I hooked my printer up and told Linux to list my USB devices. I isolated an entry called “QinHeng Electronics HL-340 USB-Serial adapter.” I’m not exactly sure what is going on here, but it looks like my printer is electronically connected to something inside that then talks to the computer outside. Oh, and the menu still works off just USB power.

I am open to using other slicers. The main goal is to demonstrate a workflow, and I don’t have that right now. I also tried Slic3r Prusa and it had even fewer options, but it had a list of questions for configuring other printers.

Looking around, there is a lot more to the world of slicers than the narrow sliver I was looking at before. The IIIP branded Cura is great for someone who is just wants to 3D print or doesn’t want to move away, but there is a whole world to explore out there with different optimizations and features to play with — all locked away behind a learning curve that starts with getting my printer back online.

There are plenty of 3D printing videos out there. Every one I clicked on while trying to get things working on Linux was using Windows. Maybe there was one, but I don’t know. I’m going to have to tackle OS/slicer and slicer/printer issues separately from now on.

Unrelated: I have been getting a lot of use out of my Steam controller. It turns out to be very useful as a mouse on my Widows machine when I want to sit back without a hard surface in easy reach.

Final Question: What was one challenge you faced that left you feeling good for going through it?

Linux Deep Dive Part 2: End of Week 3

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am continuing my coverage of my deep dive into Linux. Let’s get started!

Last time, I installed Debian Linux on a USB external solid state drive using skills I learned from previous projects.

I am very much still in my trial period for Debian. Most of my time working with it has gone into exploring and diagnosing the system.

A lot of my MATE explorations into panels happened on at least day two. While I was able to assemble a semi-convincing Start bar look-alike, it still has a way to go.

I discovered the first of two big hitches when I took it in to Third Workshop and booted to Windows to demonstrate Minecraft in its unplayably slow state. I hit restart, booted into Debian, and it was still unplayably slow. I even rebooted several times, only for it to refuse the decent performance I knew I had seen already. We even put a simple clone of Minecraft by the name of Mine Test on there to test the FPS. I got it home, booted straight to Debian and Minecraft unexpectedly worked correctly.

It took me a while, but I finally narrowed the pattern down. The performance drop only happened if and only if I first boot to Windows and restart into Linux without shutting down completely.

Even though I didn’t master the problem by solving it completely, it hasn’t come back, so long as I don’t reproduce it on purpose. I’m fine leaving it alone.

And now for my other problem: Debian only successfully boots about half the time. I still don’t know this one. All I can do is lay out everything I know about it and hope someone knows what the deal is because I’ve yet to find a help topic that matches my problem exactly.

It used to be that Debian would boot every other time, but it did have a spell where it booted and failed about six consecutive times each. A few days ago, it’s gone to not booting at all. Whenever it fails, it drops into BusyBox, displaying an ash shell with the prompt (initramfs). It has some basic commands, and I think the general idea is that when the Linux kernel can’t find the files it needs, a knowledgeable operator can manually mount a drive and boot from there.

Now, I’ve mounted drives by hand before. I met someone going by hyperreal who generously spent over an hour and a half of his time on me. We seemingly tried everything to try and get BusyBox to boot. Nothing. We even peeked at the hard drives’ contents from a GRUB boot menu console (Don’t cite me on terminology here!). Everything looked good until BusyBox showed up again.

A lot of it was repetitive. In short, it looked like /root had the contents of my Windows… I may have it. What if GRUB is looking for sda or sdb specifically and they respond in the wrong order? I’ll check into it.

As I was saying before a flicker of hope interrupted me, The Windows drive was mounted to /root and I was able to umount it, but neither drive would mount there. I kept getting an “Invalid argument” error. Maybe the BusyBox mount command is a little different, but it should have worked each time. We tried mounting it from /dev, where devices are listed by an internal shorthand per system, and from a more out of the way place that listed them by UUID. There were four entries, and I suspect the two that didn’t look like hard drives were my mouse and keyboard.

Moving along, I also tried burning a Super GRUB Disk a total of three times. The first two were on my laptop, but they both flopped. I detoured for a while, doing other stuff mentioned above before making a good disk from my desktop.

I still need to mess around with the disk to know exactly what is going on. The working theory has been an unreliable install of GRUB. I have a new idea since writing this, but for now, I have a way to use my computer when I want.

Final Question: Any ideas on this one? I could really use the input, though I should probably get the comments section working some time.

Family Photo Chest Part 4: PyCharm Migration

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am moving PyCharm from Windows to Debian. Let’s get started!

The past month didn’t feel all that fast in terms of this project. I reread a few of my paragraphs from last month, and I get the feeling I didn’t have a clue about what I was looking at.

There are at least a couple reasons why I believe IDE’s are only for when you have an expert handy. They are full of stuff beginning programmers don’t need to be using yet and that stuff can be incredibly fragile. The moment something breaks, progress stops and you need someone familiar with the program to sort things out. If you’re engaging in self-study, working from the command line has fewer things to break and most language tutorials provide command by command instructions anyway. If possible, you should seek out one or more groups to join who can answer programming questions when they come up.

PyCharm was a little fussy to migrate to the new operating system. I made the mistake of just importing everything straight from the configuration on the old install. First of all, all the file paths were written in Windows. I tried routing the interpreter to the one that came with Linux, I had to move the link to my project file around, and I went hunting through the venv settings for references to Windows paths.

The easiest thing to do is to just say no to importing anything on first launch and recustomizing everything. I ended up moving looking into individual files in my settings and plucking out the ones with intrinsic ties to the old install. I had a lot of custom colorization going on, so I sifted through my settings files and plucked out anything with file paths starting with C:\.

Project files were a separate but parallel undertaking. With all the errors I kept getting, I ended up grafting my old project files into a new set of project files. Almost everything copied over, but a hidden .idea folder holds a lot of ties that rely on things not moving. I also had to remove a workspace.xml file or something similar over a reference to the old hard drive. Pycharm brought up a dialogue box to fill in the appropriate information and that angle was solved.

Now, about virtual environments. Implementing them is an important gesture toward seasoned programmers collaborating on projects on different computers, but they complicate things a bit much for the average novice on his or her own. On my windows install, I managed to hack it out of my project, but I never told PyCharm that I didn’t want to use them in a way it could understand. This time, however, I had help addressing the issue.

The IDE is a powerful tool. Powerful tools are okay to pick up and use, but the learning curve can be sharp, and reckless newbies can easily damage something while careful newbies just get slowed down by all the things to research. Supervision like what I used to get in my programming classes or what I’m getting now at Third Workshop is a practical must-have. I don’t always get the answer I’m looking for right away, but stray comments tend to provide seeds to plant in a search engine.

Final Question: Have you ever made a major change and had little cracks you didn’t anticipate?

Linux Deep Dive Part 1: Day 1

Good morning from my Robotics Lab! This is Shadow_8472, and today, I am covering a giant step I’m taking into Linux. Let’s get started!

I’ve known for a while that I would be switching to using Linux on my laptop as part of my program to keep it shambling into the future. The final straw for my laptop was a painfully slow Minecraft experience in Windows. It was giving me between 8 and 15 frames per second on average, but the drops to 0 fps were unacceptable. I started shopping.

Some months ago, I installed Kali on an external drive and ran it live. I had some reservations about how you are logged in as root by default, and even watched a video by Cyber Weapons Lab about things you’d want to do when you install Kali. A more recent major update changed some things to be more friendly towards people looking for a new main OS, but a developer blog explicitly said installation on a production computer is “not recommended.”

I spent a few days considering what distro to go with. There are a number of distro pickers out there that ask you different questions like, “How old is the hardware you want to use?” or, “Do you care if you use closed source drivers?” I am after stability and access to community support. Besides, many knowledgeable Linux experts say that distribution is ultimately irrelevant. YouTuber Chris Titus Tech considers each distribution “a starting point.” While there are fundamental differences between major distributions, you can customize pretty much everything with relative ease once you know what you’re doing.

I only have an idea of what I’m doing. I don’t need bleeding edge for anything I’m doing, nor do I want to have an otherwise stable machine develop problems on me. Debian has a reputation for rock solid stability and enough of a community out there for when issues do develop.

Chris Titus Tech may have had some influence on my decision. He has a series of challenge videos where he covers a year of using Debian on his production machine. One of his warnings is that it takes a week to set everything up before it’s fully stable. I would add the caveat that that only applies after you know what you’re doing. Again, I only have an idea of what I’m doing. As such, I am going into this expecting a month or more. Chris Titus Tech provided a much needed boost here with a video about installing Debian, including how to navigate the list of Debian downloads for an easier ISO to work with. I highly recommend you look it up if you intend to install Debian. LINK.

Considering my aging computer and desire for an easier transition, I chose the MATE desktop environment for being relatively lightweight, yet customizable and went with an ISO that includes “non-free” software, like freely available drivers owned by different companies, for greater compatibility.

I had a few false starts when creating my install media. In my travels, I came across a tool called YUMI (Your Universal Multiboot Installer) LINK. It looks like a good tool to build a replacement for your army of install USB’s or CD’s, but I didn’t get far trying to install Debian on there normally. It’s worth looking into later, though.

If you ever decide to judge a distro by its live session, don’t. Running Debian live from USB is about as sluggish as the Windows OS I’m moving out of. It got so bad that I spent a while asking if an internal HDD or an external SSD on a USB 3 is faster. I couldn’t bring myself to install over Windows when I might be missing some paid license file or something, and the notion of internal partitioning made me nervous. I benchmarked my candidate drives and found the SSD was between two and three times faster than my internal HDD. I installed for performance.

Installation was nerve-wracking. If only I had studied the video I had already had found where someone installed that exact same operating system, I would have known I when the settings were locked in and ready to destroy whatever partition they landed on. I would have known the hard drive selection was almost at the end, and I would have known not to say no when it offered to install GRUB to my master boot record.

I adjusted the BIOS to prefer external USB drives over internal hard disks. Boot continued to a simplistic screen and stayed there indefinitely. I looked into making a Super GRUB disk, but I stopped after two attempts and went with the nuke option and reinstalled, this time following the instructions.

For the record, by the time I hit the ugly mug of the ISO’s login screen, I had a thumb drive for install media and an external SSD with Debian on it.

The following days were a different kind of challenge. The MATE desktop offers enough customizability to almost put Windows to shame. The details would fill up their own post, and there already enough tutorials out there. The only word you need for massively improved searches is panels. You start with one at the top and one at the bottom, but I moved mine around to make like a Start bar across two screens. I’m still working on it, though.

Minecraft was a little tricky to install. I grabbed the .deb file and it wanted a couple dependencies before installing, programs most distros normally come with. Minecraft wanted me to log in again, even after mounting my HDD and copying over my .minecraft folder/directory. Whatever comes next, the improvement in performance is worth it. At the end of my first day on Debian, I was managing between 25 and 40 fps during normal play.

Overall, I think Debian will work out for me in the end. I still have to finish patching it together, but my previous work with Ubuntu and especially Micro Core has prepared me for this overall challenge.

Final Question: What projects have you embarked on that naturally feel like direct sequels to earlier projects?

Minecraft Server, Week 6: Press Start

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I almost posted one of my backlogged posts, but I managed to pull together something to continue this project one more week. Let’s get started!

I don’t know where to begin on this one. Last week, I left off with reinstall after reinstall, trying to fix some error I kept seeming to get. I gave up after wrecking my bootloader during one last attempt to fix everything, forcing the machine to depend on booting to live media, such as my Puppy Linux CD. I stuck around to determine that Ubuntu wasn’t accidentally nuked alongside Micro Core, so I was at least partially appeased on that front.

Sunday came and I thought I would try one more time. I had done some research on GRUB 2 (GRand Universal Boot Loader). Boot loaders are programs that take charge after the BIOS select a drive to boot to. They are in charge of starting the operating system. GRUB is designed for environments with more than one OS, like the one I seem to have ended up with. It is worth noting that GRUB and GRUB 2 are two different boot loaders that serve the same purpose, they both refer to themselves as GRUB, but some places say you can get in trouble if you use support for one on the other. From what I can tell Arch Linux is one of the few distros that use the first one.

I started up Puppy Linux and suffered while trying to find the terminal. That little distro does not follow many of the conventions I’m used to as is! Bad dog! I researched how to repair GRUB and when I looked in my MineOS drive, I found… what looked like a fully functional boot loader.

Annoyed, I told the BIOS to boot to the old SSD before the HDD with the bricked GRUB install. It worded. I was able to boot to MineOS, but I still got a corrupt terminal pseudo-window interface: the configuration console. Sometime after I seemingly bricked my machine, I had the thought that I might not have really had an error to fix all along. I was hoping everything was just one unknown away, and that was it.

MineOS is fairly minimal on the host machine. It really shines in its Web Interface. You connect to its IP with https at port 8443 and sign in using the account you set up during your first boot. I tried that and got a page that got stuck loading. Different computers didn’t help either. I gave up and resolved to put the finishing touches on a stand-alone post I have written after pinging my contact with a picture of the error message and corrupt-looking screen I was having trouble with.

Hours passed, and I eventually got a celebratory reply of all things. I decided to humor him with one last attempt on connecting to the previously tried IP and port. It worked. I seemingly didn’t do anything differently, but it worked on me. I went over to the other towers I had previously tried it on, and it worked on those. It did not, however, like Android Firefox on my tablet, but the browser built into LastPass was accepted.

About this time, I investigated one of the features of MineOS inherits from its parent distribution, Turnkey Linux: Let’s Encrypt. Let’s Encrypt seems to be a free SSL certificate authority, if I got my terms all correct. If you already know what you’re doing or are following a set of instructions and don’t care about learning, you can reportedly have one within ten minutes. The only issue for me was that the application script gave me a bit of a head scratcher. It wanted a domain, and I didn’t know what to put. In the end, I figured I wouldn’t be exposing the login port to the Internet anyway, so I can wait on setting that up.

The web interface itself is well polished. I still don’t know what all I am looking at, but it is a whole lot easier to behold than a command line. Exploration is also much easier. I set up a test server, trying to get something going on a port other than 25565, the default Minecraft port, but some diagnostics and research later, and it looks like part of the Web Interface’s design principals exclude it from being able to open additional ports, mainly that not all operating systems it can possibly be installed on keep track of open ports the same way. I suppose that keeps the dabblers contained in a field of relative protection, leaving advanced use to more seasoned computer users.

I moved my test server to the default port and had a volunteer try again. It worked, and this time when I expected it to work.

MineOS has an import feature that’s supposed to be fairly smart when it comes to importing archived servers. .ZIP files were confirmed, but I wanted to feed it a tarball and see what would happen.

I took the server of interest offline and –very important– made a copy separate to any backups I may have had. I then started weeding out things that wouldn’t make it over to MineOS, such as the WorldBackups folder, the start script and its backup, and copies of the datapacks we are running. The tarball came out to 1.9GB.

Transportation was a hassle. I didn’t have the patience to set up SSH correctly, so it gave me a warning if I tried to copy. The old host machine, my father’s computer running Linux Mint, didn’t have an SSH server on by default, so I couldn’t grab it from the new server. I tried my 1TB external drive, but when I finally got it mounted, it was read only, likely because of the way it was formatted. Two additional USB sticks were too small, but I could get it onto an external hard disk drive we have around with plenty of room.

Issues persisted. The MineOS terminal did not want to mount my storage device, and when it did, it wasn’t polite about where it put it. I still don’t know where it was hidden, but one search did turn something up I know for a fact was on the external HDD. For a few actions, like mounting/umounting or listing the contents of some directories, I required root access, but sudo doesn’t look to be a thing here. I used the su (substitute user) command to switch to root, something that should never be done lightly. I even tried booting to Ubuntu and manually copying the .tar.gz file over, but I had some kind of error I have no clue how to address.

In a frustrated fit of doubt, I suggested I may just move the hard drive over to my father’s machine and copy it over to the import directory manually. It actually sounded worth a shot, so I did it. It worked.

I booted the server machine and found a file all ready to import. I set it up, and had a volunteer log in to a brand new world– It was supposed to be the preexisting world. I ended up moving the drive back over to my father’s computer only to discover that it had basically unpacked my improperly compressed tarball and stuck a new server at the root.

I was not pleased. I manually moved the different elements over to the new hard drive and saved each piece. Not all parts had counterparts. I kept the MineOS exclusive files intact, while grafting in the original server’s files. The World file was spelled world (lower case w), but the hardest element was the properties file. For that one, I actually had to evaluate it line-by-line.

Finally, after six weeks worth of work, I had the server on its own dedicated server. I started it back up, and had my volunteers examine the world. So far, all systems appear normal. I plan on keeping on its original Minecraft version for at least a day and I want to make a restore point or backup or whatever they call it. I just need to learn the MineOS Web Interface.

I learned a lot in this project. If it weren’t for this blog, I would likely have given up long ago and just hosted it from my own machine. If it weren’t for my time in MicroOS, the last push I made could have easily have taken two or three more weeks. I’m glad it’s over in time for New Year. And now, I present the newest member of my little computer family: ButtonMash!

Final Question: There are a few details left to polish, but I do not plan on covering them. Do you want me to change my mind?

Minecraft Server, Week 5: MineOS

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am finishing this project one way or another ™. Let’s get started!

I’m told that when I encounter a problem and a short, easy solution, I tend to keep tunneling on through the mountain until I break out the other side.

Project history: I spent two weeks generating four weeks worth of content, and now I’m back after two weeks of working on other stuff, and I’m ready to make it work. Somehow.

I came back to Micro Core and tarballed my progress and took another look at those Oracle Java install scripts. The more user-friendly looking one looked to be only for Java 7, and I need Java 8+. The other one wasn’t too hard to get working. I got the .tze and some kind of file with legal in the name. Both went in tce/optional, and… nothing. No successful install, no error messages, just nothing. I reached out to my Micro Core contact, but he was busy with other things, so I decided to change directions entirely.

I will say that in my experience with Micro Core, I mined up a lot of valuable knowledge, but it is time to be water and flow around the mountain.

Enter MineOS.

MineOS is toted as so easy, you can have a proper server for yourself on old hardware, even if you don’t know what you’re looking at when facing anything past what you learned by Kindergarten. I’m sure this will work.

I took my target machine into Third Workshop — mostly so I could have a spot to work without the normal household chatter. I also discussed what should be feasible in terms of my next big project. Before I left, I grabbed a nice, Minecraft grass green DVD to burn, as the MineOS site didn’t mention it working with anything else when dealing with physical hardware.

And my problems began. I left my tablet at home when I sometimes pace around the room with it while continuing to research. When I got there and had everything set up, I put the DVD into my laptop drive and spent several minutes trying to figure out how I was going to burn the MineOS ISO. My go-to tool I thought was installed appearently never made it onto my laptop, and my virus scanner was suspicious when I tried downloading a tool to help with the procedure.

I turned to my target machine. As a dual booted system, I can work on one hard drive while keeping the other safe. I booted it to Ubuntu and looked up a Linux tutorial on how to burn a *bootable* disk, as it turns out that not all disk burners can do that. A short tutorial mentioned a tool called Brasero I could use. It should start automatically when trying to burn anything.

A quick search told me Brasero was not installed, so I had my computer apt-get update. Twelve minutes later, it said there were a number of errors. The repositories must have been having issues or something. For some reason, I tried updating again, to similar results. I moved to my laptop and started writing this blog post, introducing the subject. Might as well use the time I have. When that was done, I told it to install Brasero, and the installer spat back an error, saying it was already installed.

I used a microfiber cloth to clean the DVD, as it looked like years on the spindle weren’t exactly the best for it. I burned it and it booted nicely to an option to install or run a live CD. I told it to install, and was given a command line error code I hardly recognized. The thing didn’t even act like it had the CD drive mounted after boot. That or it didn’t want to give it’s boot media up.

A new external hard drive came to my rescue. I moved the files that came with it into a folder on my laptop labeled as bloatware and used a utility I did have on my laptop already to write the installer to my device. It seemed to work just as poorly.

After I got home, I went to continue working on it, and I forgot to move the keyboard and mouse back to the active tower. As a result, I ended up booting correctly to the setup screen. It was only at this point that I recognized the installer as a fancy terminal program that only looks like it’s in something resembling a window. The clue was from a few strange-looking characters on the ASCII table that looked like some sort of boarder.

I wend back and forth over the machine, formatting and reformatting its poor, old 60 GB SSD. I had trouble with GRUB (GRand Unified Boot loader) not installing, so I had a stint of trying to tie into the one on the Ubuntu drive, but it took reformatting while both drives were connected before it accepted the install, but at that, it said it was unclean or something. I figured I could just go on ahead, as the installer wasn’t very imaginative if you did anything other than what it wanted to do.

During the first-boot config, I entered passwords for both the root and mc users. I ran into trouble with getting the network set up, and that’s about where I am now.

I know I didn’t finish like I said I would. It’s been way too long since I started this project that was supposed to take just two weeks. I’ve learned a ton, but right now, a lot of it feels like it’s going to waste.

Final Question: What are you looking forward to giving for Christmas?