OS News Archive

Tenox.net’s archive of computer books

Yesterday, we linked to a 1997 book about the Windows 95 file system, which is a great read. Don't let the fun end there, though - the site hosting said book, Tenox.net by Antoni Sawicki, is a true treasure trove of in-depth books that while outdated today, are still amazingly detailed reads. I honestly have no idea which to pick to quote here as an example, so out of my own personal interest, I couldn't really pass up "Configuring CDE: The Common Desktop Environment" by Charles Fernandez.

If you spend the major portion of your work day in front of a workstation chasing bits through the electronic networks of cyberspace, aka the information highway, so that your users can be more productive, this book is for you.

If you spend your days (or, thanks to some corporate edict, are about to spend your days) living in the Common Desktop Environment, so that your users can focus on their work and not the mechanics of getting to their work, this book shows you what you can do to make that environment their home.

There's countless other great reads in the list, so peruse them and find your own favourites.

Sailfish for Gemini Community Edition released

The first version of Sailfish OS for the Gemini has been released.

As the first step in bringing Sailfish to Gemini, our friends at Planet Computers have today made the community edition of Sailfish OS 2.1 available for the Gemini PDA. This version has been tested and verified by both Jolla and Planet.

As it's a community initiative, the version is still somewhat limited, but essential features are supported. With this version you won't yet get software updates or support for Android apps. Also the overall support is limited to our community's efforts.

The Gemini is a fascinating device, reminiscent of the Psion devices of the early '90s, and the ability to run Sailfish only makes the device more interesting. I find the Gemini's price a little too steep for something I'd buy as a fun project, but I can totally see using it as the only device you carry, since it has both phone and laptop-like features. If you don't need to do a whole lot of mobile laptop computing, the Gemini could certainly satisfy your needs.

Sculpt OS available as live system

Sculpt for The Curious (TC) is the second incarnation of the general-purpose operating system pursued by the developers of the Genode OS Framework. It comes in the form of a ready-to-use system image that can be booted directly from a USB thumb drive. In contrast to earlier versions, Sculpt TC features a graphical user interface for the interactive management of storage devices and networking. The main administrative interface remains text-based. It allows the user to "sculpt" the system live into shape, and introspect the system's state at any time.

The technological foundation of Sculpt is a combination of Genode's microkernel architecture with capability-based security and virtualization. It does not resemble a POSIX system, rather it supports hosting POSIX and Unix software as an option. This way, security-critical components are not exposed to the complexities of POSIX while the system retains compatibility to existing applications. Sculpt TC features several examples of such applications, ranging from Qt-based software over a custom Unix runtime to VirtualBox.

The downloadable system image with the accompanied documentation is available at the Sculpt download page of the Genode project.

The 640K memory limit of MS-DOS

At the beginning of the '90s, the PC platform was often mocked by its rivals. Of course, PCs were much more powerful than, say, an Amiga 500. But the Amiga offered a flat memory address, while a DOS program could only access memory using cumbersome 64 KiB segments. And to add insult to injury, there was this strange 640 KiB memory limitation. No matter how much physical memory you had in your box, the utter most important Conventional Memory was limited to 640 KiB!

The Legend teaches us that Bill Gates once declared that "640 KB ought to be enough for anybody", then designed MS-DOS to enforce this limitation.

The truth is of course a little more complicated than that.

This article brings back so many confusing childhood memories of MS-DOS and memory management - memories I wouldn't wish on my biggest enemies. All kidding aside, this is a great insight into how memory is organised in MS-DOS.

Nebulet: microkernel that implements WebAssembly in Ring 0

Nebulet is a microkernel that executes WebAssembly modules instead of ELF binaries. Furthermore, it does so in ring 0 and in the same address space as the kernel, instead of in ring 3. Normally, this would be super dangerous, but WebAssembly is designed to run safely on remote computers, so it can be securely sandboxed without losing performance.

Eventually, once the Cretonne compiler matures, applications running on Nebulet could be faster than their counterparts running on Linux due to syscalls just being function calls, low context-switch overhead, and exotic optimizations that aren't possible on conventional operating systems.

AsteroidOS 1.0 released

Four years ago, I envisioned an open-source operating system for smartwatches that would eventually become known as AsteroidOS. This project has steadily grown and gathered contributions from about 100 contributors from all around the world, all united behind the idea of an open wearable platform. When I first started, I never imagined how big this project would become and the quantity of work required to reach a stable version for daily usage.

Today, it is my great pleasure to finally announce the availability of AsteroidOS 1.0, the first stable release of this project!

This is a remarkable achievement. AsteroidOS is a Linux-based operating system using Wayland, Qt5, and various other open source technologies. It is quite full-featured, and currently works on seven Android Wear smartwatches. Sadly, I don't own one of the supported devices, because I'm incredibly curious to try this out.

AquilaOS: yet another hobbyist operating system

AquilaOS is a UNIX-like Operating System that started in 2016. Based on another OS I developed and many trials and failures since 2012, it finally came to light.

The goal behind AquilaOS is to make a UNIX-like OS adhering to a quote by K. Thompson in UNIX Implementation.

The kernel is the only UNIX code that cannot be substituted by a user to his own liking. For this reason, the kernel should make as few real decisions as possible. This does not mean to allow the user a million options to do the same thing. Rather, it means to allow only one way to do one thing, but have that way be the least-common divisor of all the options that might have been provided.

From the start, AquilaOS focused on being as transparent and architecture-agnostic as possible. To even raise the challenge, strict compliance with C standard (C99) is a must which allows compiling with "-O3" (strict optimization in GCC) and "-Wall -Wextra -Werror". Currently AquilaOS v0.0.1a is released and awaiting testers and contributors.


Features

AquilaOS is mostly written in C with a few assembly parts when absolutely needed. It consists of a monolithic kernel and a set of user utilities.

Kernel Features:

  • Monolithic kernel
  • Supports x86 archticture (all arch dependent code is seperate from the kernel)
  • Multitasking and Multithreading using POSIX threads
  • Supports ELF format
  • Signals
  • Blocking and Non-blocking I/O
  • Sessions, process groups and job control
  • Virtual file system (VFS) with support for initramfs, tmpfs, devfs, devpts, procfs and ext2
  • Devices subsystem using devices files with major/minor numbers
  • Supported devices include: PS/2 Keyboard, IDE/ATA Harddisk, Framebuffer device (fbdev, Linux API) with VESA 3.0, 8250 UART
  • Memory management subsystem (with demand paging and copy-on-write)

System Utilities:

  • aqbox: several UNIX/POSIX utilities in one binary (similar to BusyBox)
  • fbterm: Framebuffer based terminal (with wallpaper) with VT100 emulation using libvterm
  • lua: Lightweight, multi-paradigm programming language
  • kilo: Simple text editor for ANSI/VT100 terminal
  • tcc: Tiny C Compiler by Fabrice Bellard (Who made Qemu and FFmpeg)
  • nuklear: Immediate mode graphics library - experimental

The source code is released under GPLv3 licence and hosted on Github, https://github.com/mohamed-anwar/Aquila. Make sure to check it out and follow up with suggestions, or better yet, contributions.

LG releases webOS as open source again

Pretty big news out of LG - they're releasing their variant of webOS - the TV and smartwatch one - as open source.

webOS is a web-centric and usability-focused software platform for smart devices. The operating system has constantly evolved, passing through its journey from Palm to HP, and most recently to LG Electronics. Now, we are releasing webOS as an open source project, named webOS Open Source Edition (OSE).

This marks the second time webOS has been released as open source. It's released under the Apache License, version 2, and there's instructions for getting it to run on a Raspberry Pi 3.

We are a truly open project. You will see us working in the open like any community member, so you can see what we're doing in real time. We operate using typical open practices: the Project uses the Apache 2.0 license, is hosted on GitHub, and accepts contributions via a Contributor License Agreement (CLA) approach. As the community grows and individuals and organizations emerge who make significant contributions, it is our intention to invite them into the governance of the Project.

It seems like a truly open project, but at the same time, one has to wonder what this means for webOS' commercial future at LG. The cold and harsh truth is that moves like this generally mean the end of commercial viability, not the beginning. This isn't necessarily a problem though - at least this move ensures the code and operating system will continue to exist.

Genode 18.02 introduces Sculpt OS

The just released version 18.02 of the Genode OS Framework features the first version of Sculpt, which is a Genode-based general-purpose operating system. To our knowledge, it is the first usable open-source general-purpose OS that facilitates capability-based security from the ground up.

Being currently targeted at users that are close to the project, this initial version is named Sculpt for Early Adopters (EA). It is accompanied with detailed documentation that covers everything needed to install Sculpt on a real machine. The topics include the creation of the boot image, disk preparation, wireless networking, storage, software installation and deployment, and virtualization. Along the way, many concepts that are unique to Genode are explained.

Without any doubt, most topics of Genode 18.02 were motivated by the work on Sculpt. Most importantly, the release introduces new infrastructure for installing, updating, and deploying software from within a running Genode system. The underlying concepts are very much inspired by Git and the Nix package manager, enabling the installation of multiple software versions side by side, or the ability to roll back the installation to an earlier state. Also the on-target tooling breaks with the traditional notion of package management. Instead of executing package-management steps with vast privileges, each single step, for example extracting downloaded content, is executed in a dedicated sandbox.

Besides Sculpt, the Genode release 18.02 also includes many other noteworthy improvements. E.g., the user-level networking stack received a lot of attention, the Nim programming language can now be used for implementing Genode services, there are new tracing facilities, and improved drivers support for NXP i.MX hardware. Furthermore, many 3rd-party software packages received updates. All the improvements are covered by the detailed release documentation.

Tock: a secure embedded operating system

Tock is an embedded operating system designed for running multiple concurrent, mutually distrustful applications on Cortex-M based embedded platforms. Tock's design centers around protection, both from potentially malicious applications and from device drivers. Tock uses two mechanisms to protect different components of the operating system. First, the kernel and device drivers are written in Rust, a systems programming language that provides compile-time memory safety, type safety and strict aliasing. Tock uses Rust to protect the kernel (e.g. the scheduler and hardware abstraction layer) from platform specific device drivers as well as isolate device drivers from each other. Second, Tock uses memory protection units to isolate applications from each other and the kernel.

Visit the official site and the github repository for more information.

An open letter to Intel

Andrew S. Tanenbaum, creator of MINIX, has published an open letter to Intel regarding Intel's use of MINIX in the IME:

The only thing that would have been nice is that after the project had been finished and the chip deployed, that someone from Intel would have told me, just as a courtesy, that MINIX 3 was now probably the most widely used operating system in the world on x86 computers. That certainly wasn't required in any way, but I think it would have been polite to give me a heads up, that's all.

If nothing else, this bit of news reaffirms my view that the Berkeley license provides the maximum amount of freedom to potential users. If they want to publicize what they have done, fine. By all means, do so. If there are good reasons not to release the modified code, that's fine with me, too.

I can still barely believe this whole story.

PC-MOS released under GPL

The old PC-MOS was released under the GNU GPL this Summer. From Wikipedia:

PC-MOS/386 was a multi-user, computer multitasking operating system produced by The Software Link (TSL), announced at COMDEX in November 1986 for February 1987 release. PC-MOS/386, a successor to PC-MOS, can run many MS-DOS software titles on the host machine or a terminal connected to it. Unlike MS-DOS, PC-MOS/386 is optimized for the Intel 80386 processor; however early versions will run on any x86 computer.

The GitHub project includes a 1.44MB disk image for the latest version that will work under VirtualBox, but does not include older versions of the operating system from before it required an 80386+. The system won't work properly if you set a modern date at the boot up prompt.

ChrysaLisp: an assembler/C-Script/Lisp 64bit OS

Assembler/C-Script/Lisp 64 bit OS. MIMD, multi CPU, multi threaded, multi core, multi user.

Runs on OSX or Linux for x64, PI64 Linux for Aarch64. Will move to bare metal eventually but it's useful for now to run hosted while experimenting. When time allows I will be doing a VM boot image for UniKernel type appliances and a WebAssembly target to play around within the browser.

Allows modelling of various network topologies with point to point links. Each CPU in the network is modelled as a separate host process, point to point links use shared memory to simulate CPU to CPU, point to point, bi directional connections. There is no global bus based networking on purpose.

The first commercial Asteroid OS smartwatch revealed

The first ever commercial Asteroid OS smartwatch, Connect Watch, was revealed today by a French company going by the same name. A Wi-Fi only model and a 3G model were unveiled with prices 99€ and 129€ respectively. Sales for these watches will commence tomorrow. Connect watch aims to provide a free watch alternative to the Android Wear and Tizen watches. The watches are capable to function on their own without the need for a smartphone and the 3G model can perform calls as well.

Asteroid OS, for those of you who don't know, is a Nemo Mobile based open source smartwatch OS and thus shares a lot of blood with Sailfish OS. Spearheaded by a talented young programmer Florent Revest, The project has matured a lot in 2 years since it inception and garnered lot of interest around the world. Jolla's Sailfish OS for smartwatch demo displayed in Slush 2016 and MWC 2017 was also based on Asteroid OS. No Asteroid OS sync application for Sailfish OS is yet to be in development.

It's 2017, and I can post a news item about an alternative operating system shipping on a smartwatch.

Today was a good day.

Genode 17.08 supports Intel Gen-8 GPUs

With version 17.08, the Genode OS project conquers the highly complex topic of hardware-accelerated graphics. In true microkernel fashion, Genode's new Intel-GPU multiplexer provides the bare minimum of functionality to enable (potentially untrusted) components to use the GPU without interfering with each other. Further highlights of the new release are the broadened support for the seL4 microkernel on ARM and 64-bit x86, the ability to boot via UEFI, and Genode's use as Xen DomU domain.

Seven years ago, the Genode developers took their first baby steps with the use of hardware-accelerated graphics. However, their original port of the Intel graphics execution manager along with Mesa/Gallium to the Genode user land never outgrew an experimental stage. One particular limitation was that the GPU could only be used by a single application exclusively. At that time, the secure sharing of GPUs among multiple - and potentially malicious - applications was an afterthought in the predominant driver architectures like Linux' DRI. A port of this driver architecture to Genode would not magically solve that.

In the meanwhile, hardware features like per-process graphics translation tables (PPGTT) and hardware contexts have proliferated and are now present in all modern Intel GPUs. What MMU-based virtual memory is to a CPU, these features are to a GPU. They in principle allow the sandboxed execution of GPU commands under the regime of a potentially very small GPU driver, analogously to how a microkernel facilitates an MMU to sandbox user-level components. However, with about 100K lines of code, Intel's official i915 driver stack as used in the Linux kernel is far from being small and simple. To put the number in perspective, modern microkernels like seL4 or NOVA consist of merely 10K lines of code. Inflating Genode's trusted computing base by on order of magnitude would be a tough decision. There had to be another way. Hence, one year ago, an experiment was started to develop a clean-slate GPU multiplexer as a Genode component. In contrast to the i915 driver stack that needs to accommodate a mind boggling number of legacy hardware that is still in broad use, Genode's custom GPU multiplexer could do a clear cut by only supporting very recent GPUs. The result is quite reassuring. At far less than 10K of code, Genode's new user-land GPU multiplexer is able to accommodate trusted and untrusted OpenGL applications side by side. The current release features the first version of this component along with several examples.

Besides the GPU topic, the new release comes with numerous other improvements. Most noteworthy is the ability to use Genode with the seL4 kernel on the ARM and 64-bit x86 architectures. The upgraded seL4 support also enables SMP on x86, priorities, and Genode's CPU-monitoring facilities. Following up on the big infrastructural changes of the previous releases, the current release comes with gradual refinements of the VFS infrastructure, the timing accuracy, and the package-management tools. The complete picture is presented in the official release documentation.

The lack of multilingual affordances in modern software

Before I link you to the story this item is actually about, I want to tell you about one of my biggest frustrations with computer hardware and software. It's something that I have to work around every single day, and its consequences bother me almost every few minutes.

Hardware and software have no idea how to handle people who lead multilingual lives.

Like hundreds of millions of people, I speak and understand several languages, but on top of that, I use two languages every single day: Dutch and English. I switch between these two all the time, often even multiple times a minute when juggling multiple friends, clients, work-related material, entertainment, and so on. I might be writing an e-mail to a client in English, work on a translation in Dutch, WhatsApp with a friend in English, and write a Facebook post in Dutch - switching between all of these.

Software has no idea what to do with this. The most operating systems like Windows and OS X can do is offer a small icon somewhere tucked away to manually switch input languages, which is incredibly cumbersome and just wholly impractical to perform every time you have to switch languages. It gets even worse on mobile operating systems, which are heavy on the autocorrect (I cannot type on a touchscreen), so if my input method is still set to English while I'm typing something in Dutch, it gets autocorrected into meaningless garbage (it's only recently that both Android and iOS at least offer some form of true multilingual input).

It's even worse when it comes to these voice assistants the entire technology industry is trying to ram down our throats, like Google Assistant or Apple's Siri. Do you know what you need to do to switch voice assistant input language on an Apple Watch or Android Wear device? Are you ready for it?

You need to perform a full wipe and set up the device as new.

Since my use of Dutch and English is split about 50/50 - or maybe 60/40 - the end result is that for about 50% of the time, I cannot use any of these devices to reply to an e-mail or write a text message. While Android Wear 2.0 has a keyboard and handwriting recognition, I have no idea how to change the input language for those input methods. Even if I could by tapping around - the point of these things is that you can use them without having to look away from whatever you're doing (e.g. cycling).

And just in case you think this kind of multilingual use is rare or an edge case: just in the United States alone, dozens of millions of people speak both Spanish and English every single day. This is not an edge case. This is not a peculiarity. This is daily reality for possibly hundreds of millions of people all over the world.

There's countless other daily irritations that arise from this inability of software to deal with multilingual use (Win32 vs. Metro vs. Chrome vs. Office vs. etc., which all have their own input language switching mechanisms I manually have to keep track of), but the point I want to make is the following.

Because software has no idea how to deal with multilingual use, I know for a fact that very few of the engineers working on Windows or Office or iOS or WatchOS or Android or whatever lead multilingual lives, because any person who uses multiple languages every single day would be able to spot these problems within 15 minutes of use. If the manager responsible for WatchOS led a multilingual life, or had a bunch of people on his team that led multilingual lives, WatchOS would've never been released without the ability to easily switch Siri input language.

Despite what some low-level Googler claims in his rambling manifesto of idiocy, diversity matters. Or, as ex-Googler Yonatan Zunger puts it way more eloquently:

Engineering is not the art of building devices; it's the art of fixing problems. Devices are a means, not an end. Fixing problems means first of all understanding them - and since the whole purpose of the things we do is to fix problems in the outside world, problems involving people, that means that understanding people, and the ways in which they will interact with your system, is fundamental to every step of building a system.

If, at this point in time, you still don't understand the importance of diversity when developing products, you are beyond help, and have no place on any product development team.

How old are operating systems?

Today, it hit me that iOS is already ten years old. I consider iOS a relatively new and fresh operating system, but can we really say that at ten years old? In order to figure that out, I quickly threw together a little graph to visualise the age of both current and deprecated operating systems to get a better look at the age of operating systems.

It counts operating system age in terms of years from initial public release (excluding beta or preview releases) to the last release (in case of deprecated operating systems) or until today (in case of operating systems still in active development). I've included mainly popular, successful, consumer-oriented operating systems, leaving out more server or embedded oriented operating systems (such as UNIX and QNX), which tend to have vastly different needs and development cycles.

As far as the nomenclature goes, Windows 9x includes everything from Windows 1.0 to Windows ME, and Mac OS covers System 1 through Mac OS 9.2.2. Windows CE is currently called Windows Embedded Compact, but its line also includes Windows Phone 7, Windows Mobile, and Windows PocketPC.

Red indicates the operating system is no longer being developed, whereas green means it's still under active development. The only question mark in this regard is Windows CE; its latest release is Embedded Compact 2013 in 2013, and while I think it's still in development, I'm not entirely sure.

This graph isn't a scientifically accurate, well-researched, quotable piece of information - it takes many shortcuts and brushes several questions aside for brevity's sake. For instance, looking at the last official release doesn't always make sense, such as with Windows Service Packs or Mac OS X point releases, and I haven't even been entirely consistent with these anyway.

On top of that, the graph doesn't take months or weeks into account, and just counts everything in terms of years. Linux shouldn't technically be included at all (since it's just a kernel), and you can conceivably argue that, for instance, Mac OS X is older than its initial release in the form of 10.0 since it's so heavily based on NEXTSTEP. Amiga OS is also a bit of a stretch, since its development pace is slow and has even died down completely on several occasions. You could maybe possibly argue that BeOS is still in active development in the form of Haiku, but I consider Haiku a reimplementation, and not a continuation.

In any event, I originally wasn't planning on doing anything with this, but I figured I might as well publish it here since it's an interesting overview.

The Multics CPU simulator

The Multics CPU simulator created by Harry Reed and Charles Anthony is available for public download. A complete QuickStart installation package is available that provides software, compilers, system source, install scripts, and several initial projects (SysDaemon, SysAdmin, Daemon, etc.) and users.

This is Multics, the complete multi-user operating system, running on a simulated Honeywell DPS8M processor. The simulator is available for Mac OS X, Linux, or Windows, both 32bit and 64bit versions, and also supports the Raspberry Pi.