Unix Archive

How the Atari ST almost had Real Unix

The latest problem I was working out was how to run Unix on the Atari ST. The Tramiels had somehow wrangled a license for AT&T's SVR-something-or-other version of Unix (might have been SVR3, but this was in the bad old days when AT&T was actively fucking up Unix, and it could have been just about any version, including SVR666). The license was for a mind boggling, nay, jaw-dropping ten bucks a seat. The problem was that the ST didn’t have any kind of memory management hardware, just a raw CPU flinging real addresses at naked DRAM, and the machine's cheap-ass vanilla 68000 was incapable of recovering from a fault unless you cheated.

On a related note, there's MiNT.

A history of modern init systems

The subject of process management, supervision and init(8) for Unix-like systems is one plagued by a large degree of ahistoricity and "pop culture" explanations. This leads to a lot of confusion and misunderstanding surrounding feature sets and how one formulates the problems surrounding reliable process management on Unix in general, making it a ripe topic for demagogues of all persuasions.

The purpose of this article is to set the record straight on the history of attempts to create "modern" init systems, where we define "modern" somewhat broadly as anything that tries to improve the classical BSD and System V styles of initialization and service management.

Coherent UNIX clone goes Open Source

We missed this earlier this year, but Coherent has been released as open source. Coherent is a UNIX clone originally developed for the PDP-11, but later ported to a number of other platforms, including the IBM PC. It was developed by the Mark Williams Company, and despite an official investigation by AT&T, no signs of copied code were ever found.

Mark Williams Company closed in 1995. In 2001, Bob Swartz asked me to archive the hard disks containing the Mark Williams source repository; the command and system sources here are from that repository. I have long intended to catalog and organize these sources, but in the meantime they are posted here as is. MWC's documentation guru Fred Butzen provided the MWC documentation sources.

“Have you ever kissed a girl?”

An old (2010) story from former Sun employee Jeremy Allison.

David Miller wrote (at the end of a long email explaining how Sparc Linux used cache optimizations to beat Solaris on performance):

"One final note. When you have to deal with SunSOFT to report a bug, how "important" do you have (ie. Fortune 500?) to be and how big of a customer do you have to be (multi million dollar purchases?) to get direct access to Sun's Engineers at Sun Quentin? With Linux, all you have to do is send me or one of the other SparcLinux hackers an email and we will attend to your bug in due time. We have too much pride in our system to ignore you and not fix the bug."

To which Bryan Cantrill replied with this amazing retort:

"Have you ever kissed a girl?"

Talk about missing the point and underestimating the competition.

The article offers an interesting look at why Sun eventually failed. I stumbled upon this story because Rob Landley mentioned the girl comment in his email about BSD/SysV.

The BSD/System V split

Rob Landley:

So gcc's library bindings strongly preferring System V system calls to BSD was due to the flood of Solaris end-users dominating the late 80's gcc development community to avoid paying Ed Zander extra for Sun's Solaris compiler. This combined with Linus reading Sun workstation manuals to get a system call list gave linux a very System V flavor.

Interesting - if opinionated - view on the whole situation. Not sure if all the dates check out, but it's a fun read nonetheless.

The history of grep, the 40 years old Unix command

grep is a Unix command line utility (well most Unix utilities are command line) that searches the input files for pattern and prints lines that contain the pattern. If you are reading this you, you are probably no stranger to grep.

grep was written by Ken Thompson, the same guy who wrote Unix. grep first appeared in Unix v4 with limited features as compared to today's grep.

I've used grep so much over the years. One of the countless little utilities that's the staple of all UNIX-like systems that you never really think about, but use all the time.

RetroBSD: Run old BSD Unix on a microcontroller

Modern microcontrollers are becoming quite beefy. The Microchip PIC32 line is actually an implementation of the MIPS32 4K architecture - and with 512K of flash and 128K of RAM you can even run Unix! RetroBSD is a port of BSD 2.11 for the PIC32. You might not be able to run X11, but it is still very useful and a great reminder of how small Unix used to be - and how far it has come.

Explorations in Unix

"Few tools are more indispensable to my work than Unix. Manipulating data into different formats, performing transformations, and conducting exploratory data analysis (EDA) is the lingua franca of data science.1 The coffers of Unix hold many simple tools, which by themselves are powerful, but when chained together facilitate complex data manipulations. Unix's use of functional composition eliminates much of the tedious boilerplate of I/0 and text parsing found in scripting languages. This design creates a simple and succinct interface for manipulating data and a foundation upon which custom tools can be built. Although languages like R and Python are invaluable for data analysis, I find Unix to be superior in many scenarios for quick and simple data cleaning, idea prototyping, and understanding data. This post is about how I use Unix for EDA."

Unix doesn’t follow the Unix philosophy

James Hague: "But all the little bits of complexity, all those cases where indecision caused one option that probably wasn't even needed in the first place to be replaced by two options, all those bad choices that were never remedied for fear of someone somewhere having to change a line of code... They slowly accreted until it all got out of control, and we got comfortable with systems that were impossible to understand." Counterpoint by John Cook: "Some of the growth in complexity is understandable. It's a lot easier to maintain an orthogonal design when your software isn't being used. Software that gets used becomes less orthogonal and develops diagonal shortcuts." If there's ever been a system in dire need of a complete redesign, it's UNIX and its derivatives. A mess doesn't even begin to describe it (for those already frantically reaching for the comment button, note that this applies to other systems as well).

Understanding the /bin, /sbin, /usr/bin, /usr/sbin Split

Finally something really interesting to talk about. If you've used UNIX or any of its derivatives, you've probably wondered why there's /bin, /sbin, /usr/bin, /usr/sbin in the file system. You may even have a rationalisation for the existence of each and every one of these directories. The thing is, though - all these rationalisations were thought up after these directories were created. As it turns out, the real reasoning is pretty damn straightforward.

The /bin/true Command and Copyright

"One of the fun examples among all the copyright fuss is the extreme example of copyright claims made by AT&T some time in the 1980s. It's the /bin/true program. This is a dummy' library program whose main function is to make it easy to write infinite loops (while true do ...) in shells scripts. The 'true' program does nothing; it merely exits with a zero exit status. This can be done with an empty file that's marked executable, and that's what it was in the earliest unix system libraries. Such an empty file will be interpreted as a shell script that does nothing, and since it does this successfully, the shell exits with a zero exit status. But AT&T's lawyers decided that this was worthy of copyright protection." Three blank lines. Copyrighted. You can't make this stuff up.

Dennis Ritchie, Creator of UNIX and C, Dead at 70

Twitter is currently buzzing about the death of Dennis Ritchie, the visionary creator of UNIX and C, among other things. We hope it's just a false rumor. Story developing, we will be updating. Update: Unfortunately, it seems to be confirmed. Rob Pike, co-creator of the Plan 9 and Inferno OSes, who has worked with Ritchie in the past, and he's currently working for Google's GO language, posted this.

How the Atari ST Almost Had Real Unix

What would have happened if the ST had run a BSD based UNIX rather than TOS and GEM? "To run Unix effectively we needed some hardware that was very fast, that was simple enough to put into a minor spin of the ST’s memory controller with little project risk, and that would still provide some kind of memory relocation and protection. The ability to have separate address spaces to isolate processes would be good, too."

HP-UX Gets Biannual Face-Lift

"Hewlett-Packard is rolling out Update 5 for the HP-UX Unix operating system that runs its Itanium and PA-RISC lines of Integrity and HP 9000 servers, keeping to its pattern of two updates per year for its flagship operating system. As has been the case with the prior HP-UX updates, the changes are important to existing HP-UX shops, but they're probably not going to cause a stampede of buyers for HP-UX systems. It's no different with the updates to IBM's AIX or Sun Microsystems' Solaris Unixes do."