Pack Your Bags – Systemd Is Taking You To A New Home

Home directories have been a fundamental part on any Unixy system since day one. They’re such a basic element, we usually don’t give them much thought. And why would we? From a low level point of view, whatever location $HOME is pointing to, is a directory just like any other of the countless ones you will find on the system — apart from maybe being located on its own disk partition. Home directories are so unspectacular in their nature, it wouldn’t usually cross anyone’s mind to even consider to change anything about them. And then there’s Lennart Poettering.

In case you’re not familiar with the name, he is the main developer behind the systemd init system, which has nowadays been adopted by the majority of Linux distributions as replacement for its oldschool, Unix-style init-system predecessors, essentially changing everything we knew about the system boot process. Not only did this change personally insult every single Perl-loving, Ken-Thompson-action-figure-owning grey beard, it engendered contempt towards systemd and Lennart himself that approaches Nickelback level. At this point, it probably doesn’t matter anymore what he does next, haters gonna hate. So who better than him to disrupt everything we know about home directories? Where you _live_?

Although, home directories are just one part of the equation that his latest creation — the systemd-homed project — is going to make people hate him even more tackle. The big picture is really more about the whole concept of user management as we know it, which sounds bold and scary, but which in its current state is also a lot more flawed than we might realize. So let’s have a look at what it’s all about, the motivation behind homed, the problems it’s going to both solve and raise, and how it’s maybe time to leave some outdated philosophies behind us.

Continue reading “Pack Your Bags – Systemd Is Taking You To A New Home”

Raspberry Pi Streams Music Using Only The Default Linux Tools

Getting a  home music streaming system off the ground is typically a straightforward task. Using Apple devices with Airplay makes this task trivial, but if you’re a computing purist like [Connor] who runs a Linux machine and wants to keep it light on extra packages, the task gets complicated quickly. His goal is to bring audio streaming to all Linux platforms without the need to install a lot of extra software. This approach is friendly to light-footprint devices like the Raspberry Pi that he used in his proof of concept.

[Connor] created a set of scripts which allow streaming from any UNIX (or UNIX-like) machines, using only dependencies that a typical OS install would already have. His Raspberry Pi is the base station and streams to his laptop, but he notes that this will work between virtually any UNIX or Linux machine. The only limitation is what FFmpeg can or can’t play.

We definitely can appreciate a principled approach to software and its use, although it does seem that most people don’t have this issue at the forefront of their minds. This results in a lot of software that is bulky, making it difficult to maintain, use, or even know what it does, and also makes it harder for those of us that don’t want to use that type of software to find working solutions to other problems. It’s noble that [Connor] was able to create something without sacrificing any principles.

The Raspberry Pi Cluster From Outer Space

We see a lot of weird and esoteric stuff here at Hackaday, but even by our standards, Bell Lab’s Plan 9 operating system is an oddball. Named after the science fiction film Plan 9 from Outer Space, it was designed to extend the UNIX “everything is a file” mentality to the network. It envisioned a future where utilizing the resources of another computer would be as easy as copying a file. But as desktop computers got more powerful the idea seemed less appealing, and ultimately traditional operating systems won out. Of course, that doesn’t mean you still can’t play around with it.

Logically to make use of a distributed operating system you really need something to distribute it on, but as [Andrew Back] shows, today that’s not nearly the challenge it would have been back then. Using the Raspberry Pi, he builds a four-node Plan 9 cluster that’s not only an excellent way to explore this experimental operating system, but looks cool sitting on your desk. Even if you’re not interested in drinking the Bell Lab’s Kool-Aid circa 1992, his slick desktop cluster design would work just as well for getting your feet wet with modern-day distributed software stacks.

The enclosure for the cluster is built from laser cut acrylic panels which are then folded into shape with a hot wire bending machine. That might seem like a tall order for the home hacker, but we’ve covered DIY acrylic benders in the past, and the process is surprisingly simple. Granted you’ll still need to get access to a beefy laser cutter, but that’s not too hard anymore if you’ve got a hackerspace nearby.

[Andrew] uses short extension cables and female panel mount connectors to keep everything tidy, and with the addition of some internal LED lighting the final product really does look like a desktop computer from a far more fashionable future. Combined with the minimalist keyboard, the whole setup wouldn’t look out of place on the set of a science fiction movie. Perhaps that’s fitting, giving Bell Lab’s futuristic goals for Plan 9.

Its been the better part of a decade since we first brought you word that Plan 9 was available for the Raspberry Pi, and yet in all that time we’ve never really seen it put to use. Hopefully builds like this will inspire others to play around with this fascinating piece of computing history.

[Thanks to Dave for the tip.]

Arduino Gets A Command Line Interface

When using an Arduino, at least once you’ve made it past blinking LEDs, you might start making use of the serial connection to send and receive information from the microcontroller. Communicating with the board while it’s interacting with its environment is a crucial way to get information in real-time. Usually, that’s as far as it goes, but [Pieter] wanted to take it a step farther than that with his command line interpreter (CLI) for the Arduino.

The CLI allows the user to run Unix-like commands directly on the Arduino. This means control of GPIO and the rest of the features of the microcontroller via command line. The CLI communicates between the microcontroller and the ANSI/VT100 terminal emulator of your choosing on your computer, enabling a wealth of new methods of interacting with an Arduino.

The CLI requires a hex file to be loaded onto the Arduino that you can find at a separate site, also maintained by [Pieter]. Once that’s running, you can get all of that sweet command line goodness out of your Arduino. [Pieter] also has some examples on his project page, as well as the complete how-to to get this all set up and running. There’s a lot going on in the command line world, in Linux as well as windows. So there’s plenty to explore there as well.

Doing One Thing, Well: The UNIX Philosophy

The Unix operating system has been around for decades, and it and its lookalikes (mainly Linux) are a critical part of the computing world. Apple’s operating system, macOS, is Unix-based, as are Solaris and BSD. Even if you’ve never directly used one of these operating systems, at least two-thirds of all websites are served by Unix or Unix-like software. And, if you’ve ever picked up a smart phone, chances are it was running either a Unix variant or the Linux-driven Android. The core reason that Unix has been so ubiquitous isn’t its accessibility, or cost, or user interface design, although these things helped. The root cause of its success is its design philosophy.

Good design is crucial for success. Whether that’s good design of a piece of software, infrastructure like a railroad or power grid, or even something relatively simple like a flag, without good design your project is essentially doomed. Although you might be able to build a workable one-off electronics project that’s a rat’s nest of wires, or a prototype of something that gets the job done but isn’t user-friendly or scalable, for a large-scale project a set of good design principles from the start is key.

Continue reading “Doing One Thing, Well: The UNIX Philosophy”

It’s UNIX. On A Microcontroller.

It’s difficult to convey in an era when a UNIX-like operating system sits in your pocket, how there was once a time when the mere word was enough to convey an aura of immense computing power. If you ran UNIX, your computer probably filled a room, and you used it for Serious Stuff rather than just checking your Twitter feed. UNIX machines may still perform high-end tasks, but Moore’s Law has in the intervening years delivered upon its promise, and your phone with its UNIX-like OS is far more powerful than that room-sized minicomputer of the 1970s. A single chip for a few cents can do that job, which begs the question: just how little do we need to run UNIX today? It’s something [Joerg Wolfram] could advise you upon, because he’s got a functional UNIX running on a microcontroller.

Of course, the UNIX in question is not exactly the same as the one you’d find on a supercomputer, either in the 1970s or now. Mini UNIX is a minimalist version of the operating system developed by [Heinz Lycklama] at Bell Labs four decades ago. It gives you a complete UNIX V6 system for the DEC PDP-11, but which needs only 56K of RAM, and no MMU. Emulating a PDP-11 on an STM32 microcontroller allows it to run happily, and while it’s not the most minimalist of microcontrollers it’s still a pretty cheap part upon which to run UNIX.

It’s doubtful whether a 1970s version of an operating system on a commodity microcontroller will take the world by storm, but that’s hardly the point of such a neat hack. It’s certainly not the first time we’ve seen similar work, though this PIC32 offering has a little more in the way of resources to offer.

Header image: Golonlutoj [CC BY-SA 3.0].

Emulating A Forgotten UNIX Box

The AT&T 3B2 series of computers are historically significant, being the main porting platform for System V Release 3 UNIX. Unfortunately, the documentation for these computers has been nearly lost to the sands of time. They are, however, architecturally interesting machines, and [Seth Morabito] has been working for some time on reverse engineering them. Now, [Seth] is calling it: his AT&T 3B2/400 emulator is almost complete, resurrecting an ancient machine from the dead by studying UNIX source code.

The architecture of this computer is unlike anything you’ve seen before, but well-suited to a UNIX machine. The chipset is built around the WE32100 manufactured by Western Electric, and includes a WE32101 MMU for all the fancy memory-mapped I/O. The implementation of this computer is fairly complex, with oodles of glue logic, over a dozen PALs, and various support chips for a PLL and DRAM controllers. This is computer architecture the way it was intended: inscrutable, baroque, and with a lot of fancy custom chips.

The emulator for this system is a bit simpler: you can just download and run it with simh. This emulator simulates 1, 2, or 4MB of system memory, one 720KB floppy diskette, and either one or two 30MB, 72MB, or 161MB MFM hard disk drives. Not everything is implemented so far — [Seth] is still working on an 8-port serial card and a network card — but this is a minimum viable system for developing and analyzing the history of UNIX.