OS News Archive

Reverse-engineering MenuetOS 64: primary boot loader

Now that we have the MenuetOS 64 disk image file (M6414490.IMG), it is time to analyze! We will analyze the image file both statically and dynamically. Static analysis is reading and analyzing code without running it, whereas dynamic analysis is running the code and watching how it changes registers and memory during execution. Each analysis mode compliments the other; there are some things that can only be discerned through code execution, like register values or stack layout at a specific point in time during execution. Static analysis is useful for “filling in the blanks” when executing code to understand what the code should do next (or just did). Since MenuetOS 64 is written in Intel x64 assembly, our static analysis will consist of memory mapped disassembly in Ghidra. After reading this post, readers should understand how to launch a MenuetOS 64 virtual machine using QEMU as well as how to attach a debugger (gdb) to QEMU in order to debug while code is executing. Also, readers should understand how MenuetOS 64 begins the boot process as control of execution is passed to MenuetOS 64 code from the virtualization firmware. ↫ Nicholas Starke This is an old post – from late 2022 – but a great read nonetheless, and considering MenuetOS doesn’t change very much from year to year, it’s still mostly relevant.

OSNews needs your help to stay alive

As some of you will know, I recently started working on OSNews as my full-time job, and that means I sometimes need to be annoying and remind you all that I need your help in keeping the website going. Ad income has been going down the drain for years and years now, so your support is crucial in keeping OSNews online. We’ve been providing you with the latest technology news for over 25 years now, and I’d really like to keep things going for another 25 years. So, how can you help? You can become an OSNews Patreon, which will remove ads from OSNews, and give you a little bit of flair on every comment you post to show off that you support us. We offer three pricing tiers with an increasing level of prominence for your flair, with the highest tier giving you the option of choosing your own flair to really show off to your fellow readers and commenters that you are just a little bit more equal than everyone else. You can also make individual donations through Ko-Fi. Since I really need to replace the monitor of my OSNews workstation – after eight years of loyal use, the cheap monitor is started to show ghosting and flickering, and I feel like it could give out at any moment – I’ve set a goal on Ko-Fi for this very purpose. I don’t expect this goal to be met any time soon, but it’s a nice target to aim for and look forward to. I intend to replace the old 4K display with the cheapest 4K/144Hz panel I can find here in Sweden, but since that will most likely be unrealistic price-wise, the goal is rooted more in aspiration than reality. There are other ways to support us too – you can make a donation through Liberapay, or go to our merch store and buy T-shirts, mugs, and other cool items. The ultimate goal that I’m working towards is to eventually be able to offer ad-free by default, fully supported by you, our generous readers. This is a long-term goal and not something we’ll achieve overnight, but I want to maintain OSNews’ independence at all costs. Virtually every other technology news site you visit is part of a major media empire, such as The Verge or Ars Technica, with huge amounts of staff and massive funds backing them – and all the questionable relationships between writers and the technology companies that entails. Add to it the rise of artificial intelligence and the negative consequences that’s going to have, and the need for independent, reader-funded technology websites is greater than ever. That being said, we will not be gating content behind paywalls, so even if you cannot or are unwilling to support us, you will still get all the same content as everyone else. As such, supporting OSNews financially is entirely optional, and will not degrade your experience in any way. Still, OSNews’ continued existence is entirely dependent on me being able to generate enough income through it, so while you do not have to support us, it’s definitely needed.

Tock: a secure embedded operating system for microcontrollers

Tock is an embedded operating system designed for running multiple concurrent, mutually distrustful applications on Cortex-M and RISC-V 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 and type safety. 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. ↫ Tock GitHub page We’ve never featured Tock on OSNews before, as far as I can tell, which seems odd considering it’s been around for a while. The most recent release stems from January 2023, so a short while ago, but that’s not too surprising considering the target audience of this embedded operating system. It’s licensed under either Apache or MIT.

Help identify these obscure operating systems and vendors

Over on the GNU config-patches mailing list, Zack Weinberg is looking for help identifying a number of ancient operating systems and vendors. These are probably all either vendor or OS names from the late 1980s or early 1990s. Can anyone help me fill out the following list of things that ought to appear in testsuite/config-sub.data, if I knew what to put in place of the question marks? ???-pc533 ???-pc533-??????-sim ???-sim-??????-ultra ???-ultra-??????-unicom ???-unicom-??????-acis ???-???-aos???-triton ???-???-sysv3???-oss ???-???-sysv3???-storm-chaos ???-???-??? ↫ Zack Weinberg One of them has already been identified – “storm-chaos” turns out to have been added to binutils and/or maybe GCC in 2000, and after some digging around, John Marshall found what it’s referring to: chaos, a hobby operating system for x86 written in C. It has a long history, and after a period of inactivity came back in 2015 with a new website. Some new releases followed, with the last one being version 0.3.0 in 2019. It’s been silence since then. The others are still up for grabs to be discovered. There is some talk that the pc533 one might be a misspelling of pc532, which would refer to the “NS32K-based PC532 board running NetBSD”. This is an incredibly obscure complete system built around the NS32532, of which only around 150 were built in the early ’90s. However, Weinberg is hesitant to accept this theory without more information, since there is already code to handle the pc532, and he wants to be sure before making any changes. If there is one place on the internet outside of the GNU mailing lists that might be able to help Weinberg, it’s the OSNews audience. We have so many older people reading OSNews who have been working or otherwise active in this field for many decades, and I wouldn’t be surprised if these cryptic names make some bells ring for some of you. If one of you does e-mail a reply, be sure to mention this article – organic marketing to help keep us going!

State of the terminal

It’s only been in the last couple of years that I’ve begun to dig deep into the inner workings of how terminal emulators, and the applications that run inside of them, really work. I’ve learned that there is a lot of innovation and creative problem solving happening in this space, even though the underlying technology is over half a century old. I’ve also found that many people who use terminal based tools (including shells like Bash and editors like Vim) know very little about terminals themselves, or some of the modern features and capabilities they can support. In this article, we’ll discuss some of the problems that terminal based applications have historically had to deal with (and what the modern solutions are) as well as some features that modern terminal emulators support that you may not be aware of. ↫ Gregory Anders I don’t use the terminal much – usually just to update my systems – but on occasion I’ve had to really sit down and explore them more than usual, especially now that my workstation runs OpenBSD, and the depth and breadth of features, options, and clever tricks they possess is amazing. Over the past half century they’ve accumulated a lot of features along the way, and even though its unlikely to ever be for me, I can somewhat begin to appreciate why some people just tile a bunch of terminals on their screens and do all their computing that way. I grew up with MS-DOS and Windows 3.x and later, so I’m just too attached to my mouse and pretty icons to switch to a terminal lifestyle, but over the years I’ve seen some pretty amazing terminal applications, from Mastodon clients to complex mail applications and web browsers, and you can be sure none of them steal your data or show you ads. Maybe the terminal people are right after all.

9front “DO NOT INSTALL” released

There’s a new 9front release! So, what exactly is 9front, you may ask? Well, after it became clear that Bell Labs wasn’t doing much with plan9, a group of developers took matters into their own hands and created 9front, a fork of plan9. Their latest release is called DO NOT INSTALL, and brings things like more USB audio support, DNS over TLS, WiFi support for the Raspberry Pi, I2C support, and much more. I’m not particularly well-versed in the world of plan9, and more often than not it feels like a form of high-level programming performance art that I’m just not smart enough to understand. The whole community and its associated web sites have a very unique feel to it, and I always feel like I’m just not cool enough to be part of it. That’s not a dig at the plan9 community – it’s more of an indictment of my lack of coolness. Which really shouldn’t come as a surprise.

VMS Software guts its community licensing program

VMS Software, the company developing OpenVMS, has announced some considerable changes to its licensing program for hobbyists, and the news is, well, bad. The company claims that demand for hobbyist licenses has been so high that they were unable to process requests fast enough, and as such, that the program is not delivering the “intended benefits”. Despite this apparent high demand, contributions from the community, such as writing and porting open-source software, creating wiki articles, and providing assistance on their forums, “has not matched the scale of the program”. Now, I want to stop them right here. The OpenVMS hobbyist program was riddled with roadblocks, restrictions, unclear instructions, restrictive licensing, and similar barriers to entry. As such, it’s entirely unsurprising that the community around a largely relic of an operating system – with all due respect – simply hasn’t grown enough to become self-sustainable. The blame here lies entirely with VMS Software itself, and not at all with whatever community managed to form around OpenVMS, despite the countless restrictions. So, you’d expect them to expand the program, right? Perhaps embrace open source, or make the various versions and releases more freely and easily available? No, they’re going to do the exact opposite. To address not getting enough out of their community, they’re going to limit that community’s options even more. First, they’re ending the community program for the Alpha and Itanium (which they call Integrity, since it covers HP’s Integrity machines), effective immediately, so they won’t be granting any new licenses for these architectures. Existing licenses will continue to work until 2025. Effective immediately, we will discontinue offering new community licenses for non-commercial use for Alpha and Integrity. Existing holders of community licenses for these architectures will get updates for those licenses and retain their access to the Service Portal until March 2025 for Alpha and December 2025 for Integrity. All outstanding requests for Alpha and Integrity community licenses will be declined. ↫ VMS Software announcement This sucks, but with both Alpha and Itanium being end-of-life, there’s at least some arguments that can be made for ending the program for these architectures. Much less defensible are the changes to x86-64 community licensing, which basically just come down to more bureaucracy for both users and VMS Software. For x86 community licenses, we will be transitioning to a package-based distribution model (which will also replace the student license that used to be distributed as a FreeAXP emulator package). A vmdk of a system disk with OpenVMS V9.2-2 and compilers installed and licensed will be provided, along with instructions to create a virtual machine and the SYSTEM password. The license installed on that system will be valid for one year, at which point we will provide a new package. While this may entail some inconvenience for users, it enables us to continue offering licenses at no cost, ensuring accessibility without compromising our sustainability. ↫ VMS Software announcement The vibe I’m getting from this announcement is that by offering some rudimentary and complicated form of community licensing, OpenVMS hoped to gain the advantages of a vibrant open source community, without all the downsides. They must’ve hoped that by throwing the community a bone, they’d get them to do a bunch of work for them, and now that this is not panning out, they’re taking their ball and going home. That’s entirely within their right, of course, but I doubt these changes are going to make anyone more excited to dig into OpenVMS. All of this feels eerily similar to the attempts by QNX – before being acquired by BlackBerry – to do pretty much the same thing. QNX also tried a similar model where you needed to sign up and jump through a bunch of hoops to get QNX releases, and the company steeped it in talks of building a community, but of course it didn’t pan out because people are simply not interested in a one-way relationship where you’re working for free for a corporation who then takes your stuff and uses it to sell their, in this case, operating system. This particular mistake is made time and time again, and it seems VMS Software simply did not learn this lesson.

GNU Hurd ported to AArch64, and more Hurd news

Hurd, the kernel that is supposed to form the basis of the GNU operating system, is perpetually a research project that doesn’t get anywhere close to being a replacement for Linux, but that doesn’t mean the project doesn’t make progress and has a place in the world of operating systems. Their most recent major improvement has been porting GNU Hurd to AArch64, spearheaded by Hurd developer Sergey Bugaev. Since then, however, I have been (some may say, relentlessly) working on filling in the missing piece, namely porting GNU Mach (with important help & contributions by Luca D.). I am happy to report that we now have an experimental port of GNU Mach that builds and works on AArch64! While that may sound impressive, note that various things about it are in an extremely basic, proof-of-concept state rather than being seriously production-ready; and also that Mach is a small kernel (indeed, a microkernel), and it was designed from the start (back in the 80s) to be portable, so most of the “buisness logic” functionality (virtual memory, IPC, tasks/threads/scheduler) is explicitly arch-independent. Despite the scary “WIP proof-of-concept” status, there is enough functionality in Mach to run userland code, handle exceptions and syscalls, interact with the MMU to implement all the expected virtual memory semantics, schedule/switch tasks and threads, and so on. Moreover, all of GNU Mach’s userspace self-tests pass! ↫ Sergey Bugaev On top of all this, glibc works on the AArch64 port, and several important Hurd servers work as well, namely ext2fs, exec, startup, auth, and proc, as a do a number of basic UNIX programs. This is an exceptional effort, and highlights that while people tend to make fun of Hurd, it’s got some real talent working on it that bring the platform forward. While we may not see any widely usable release any time soon, every bit of progress helps and is welcome. Speaking of progress, the progress report for GNU Hurd covering the first quarter of 2024 has also been published, and it lists a number of other improvements and fixes made aside from the AArch64 port. For instance, the console will now use xkbcommon instead of X11 for handling keyboard layouts, which reduced code complexity a lot and improved keyboard layout coverage, to boot. The port of GDB to the 64 bit version of Hurd is also progressing, and SMP has seen a ton of fixes too. Another awesome bit of news comes from, once again, Sergey Bugaev, as he announced a new Hurd distribution based on Alpine Linux. Work on this project has only recently begun, but he’s already had some success and about 299 Alpine packages are available. His reasons for starting this new project is that while Debian GNU/Hurd is a great base to work from for Hurd users and developers, Debian is also a bit strict and arcane in its packaging requirements, which might make sense for Debian GNU/Linux, but is annoying to work with when you’re trying to get a lot of low-level work done. For now, there’s no name yet, and he’s asking for help from the Hurd community for name ideas, hosting, and so on. That’s a lot of GNU Hurd progress this quarter, and that’s good news.

lEEt/OS: graphical shell and multitasking environment for DOS

lEEt/OS is a graphical shell and partially posix-compliant multitasking operating environment that runs on top of a DOS kernel. The latest version can be downloaded from this site. lEEt/OS is tested with FreeDOS 1.2 and ST-DOS, but it may also work with other DOS implementations. It can be compiled with Open Watcom compiler. 8086 binaries are also available from this site. ↫ lEEt/OS website I had never heard of lEEt/OS before, but it looks quite interesting – and the new ST-DOS kernel the developer is making further adds to its uniqueness. A very cool project I’m putting on my list of operating systems to write short ‘first look’ article about for y’all.

Friends don’t let friends export to CSV

I worked for a few years in the intersection between data science and software engineering. On the whole, it was a really enjoyable time and I’d like to have the chance to do so again at some point. One of the least enjoyable experiences from that time was to deal with big CSV exports. Unfortunately, this file format is still very common in the data science space. It is easy to understand why — it seems to be ubiquitous, present everywhere, it’s human-readable, it’s less verbose than options like JSON and XML, it’s super easy to produce from almost any tool. What’s not to like? ↫ Robin Kåveland I’m not going to pretend to be some sort of expert on this matter, but even as a casual it seems CSV isn’t exactly scalable to large data sets. It seems to work great for smaller exports and imports for personal use, but any more complicated matters it seems wholly unsuited for.

Run Windows 95 to XP, Mac OS 8.6 to 10.4 in your browser, sort of

Complete desktops contain all operating system components as well as Internet Explorer and Outlook Express. Where possible, I have tried to include built in file transfer programs (Web Publishing Wizard, Web Folders), useful system tools (System File Checker, System Restore) and certain wizards (Network Setup Wizard, Internet Connection Wizard). As a result, some of the desktops are quite large and can take some time to load. ↫ VirtualDesktop.org These are easily loaded virtual machines inside your browser, for various versions of Windows and macOS. There’s more and more of these websites now, and while I don’t use them for anything, they’re still quite handy in a pinch. And let’s face it – it’s still kind of magical to see entire operating systems running inside a browser. The website also has several virtual machines without applications, and application-specific virtual machines, too, focused on browsers and mail clients.

C64 OS gets hidden files, here’s how it works

Version 1.06 is a more modest release than 1.05 or 1.04. But I think that’s okay. v1.06 includes one new Application, three new Utilities and new features and improvements to several existing Apps and Utilities, and even some new low-level features in the KERNAL and libraries. This latest release makes use of a combination of all of the above to provide a handy new feature for users and a potentially powerful and useful feature for developers, when put to creative uses at a low-level. Discussions of just this nature have already been spurred on in the developer forums on the C64 OS Discord server. That feature is: Hidden Files. ↫ Greg Naçu C64 OS is a marvel of engineering, and what the developers are managing to squeeze out of the C64 is stunning. This article delves deep into how hidden files were implemented in the latest release.

Some personal news

I’ve got two bits of related news that will affect the future of OSNews. The first bit of news kind of led to the second bit of news. You don’t have to care much about former, but the latter will be important for where OSNews will be going from here on out. First, after 14 years, I’ve effectively quit my job as a translator – I am self-employed so there’s no dramatic clearing of my desk of being led out by security, which is probably a little bit of a letdown to some of you. The translation industry is in the process of collapsing – you know why – and I’ve been feeling the squeeze for a while now, and I like going out on my own terms. I’ve known this day would come, and I’m not sad about it. My motto: it is what it is. Of course, this meant I had to think of what to do next. Well, I have decided to work on OSNews full-time. This is risky, scary, and I’m absolutely terrified of what this will mean. Right now, my OSNews income – ads plus Patreon – does not even remotely come close to what I earned as a translator, and as any translator will tell you, translating isn’t exactly a cornucopia either. This means I’ve got some serious work ahead of me to change that. After talking things over with David, OSNews’ owner who takes care of the commercial/advertisement side, we’ve already taken a few steps. First, we’ve switched hosting providers and saved considerably on our hosting costs in the process. Second, David changed advertising partners to one that will most likely yield us some better rates, but since I don’t know much about that side of OSNews – as it should be – I can’t comment much on it. There are two main ways in which I can increase OSNews’ revenue, and that is by growing our readership, and by giving people more reasons to become a Patreon, make individual donations, or buy our merch. In other words, you can expect more original articles so that people will want to keep coming back, and possibly support me financially because they like what I do. A third avenue for revenue I’m exploring is sponsorships – this is a longer-term project, and I’m approaching and talking to several (tech) companies about this. If you happen to work for a company who would be a good fit for an OSNews weekly sponsorship, feel free to contact me for more information. The end goal: have OSNews be entirely funded by readers and sponsors, and remove all regular advertising. This all sounds great, but there is a dark side to this news, too. If all of this fails, if I am unable to attract more readers and make my work for OSNews financially sustainable, I’ll have to find work elsewhere – and that would mean the end of OSNews. I’m not trying to be alarmist or scare you; I just want to be as honest and realistic as possible about where we stand. Anyway, this is a big deal for me. I’ve really only ever had one job, and that’s being a translator, a job I am trained for with two university degrees to show for it. My only other job was a teenage thing where I worked at a hardware store (think hammers and screws, not computers) for eight years. I don’t like taking risks with these sorts of matters, so I’m absolutely terrified, and while I believe there’s a sustainable income hiding in this ol’ website, it’s not always clear how to get at it. Anyway, want to become a Patreon? Or a sponsor? Pretty please? Now would be kind of a really good time to do so.

OSNews sponsorships

Did you know we offer sponsorships at OSNews? A weekly sponsorship puts your display ad on our site for a week. We will make an introductory post at the start of the week, and a thank you post at the end of the week, which will both make it to our RSS feed and social accounts. OSNews gets about 450,000 visits per month with more than 32,000 registered users, spread out over North America and Europe. In addition, for any sponsorship you buy, you can opt to give a free weekly sponsorship to any open source and/or small project of your choosing. Does your company make use of an open source project you’d wish to help out? Let us know, and we’ll see if they’re interested in that free weekly sponsorship. Read our Sponsorship page for more information, or contact Thom Holwerda for sponsorship inquiries.

Nanos: a kernel designed to run one application in a virtualized environment

Nanos is a new kernel designed to run one and only one application in a virtualized environment. It has several constraints on it compared to a general purpose operating system such as Windows or Linux – namely it’s a single process system with no support for running multiple programs nor does it have the concept of users or remote administration via ssh. ↫ Nanos GitHub page The project has a website with more information and instructions, and the code’s on GitHub.

MenuetOS 1.50.00 released

MenuetOS has released two new versions recently, version 1.49.60 on 5 February, and 1.50.00 on 1 March. Aside from the usual bugfixes and updates, these two new versions bring, among other things, new screensavers, a musical chord calculator, and support for UEFI booting thanks to Easyboot. MenuetOS is a small operating system written entirely in assembly, available in both 32bit and 64bit versions for x86.

The Plop boot managers

I wrote different boot managers. Three boot managers are available as download. The Plop Boot Manager 5, PlopKexec and the new boot manager PBM6. The new boot manager is under development. ↫ Elmar Hanlhofer I had never heard of the three Plop boot managers, written by Elmar Hanlhofer, but they seem like quite the capable tools. First, Plop Boot Manager 5 is the most complete version, but it’s also quite outdated by now, with its last release stemming from 2013. That being said, it’s incredibly feature-packed, but since it lacks UEFI support, its use case seems more focused on legacy systems. PBM6, meanwhile, is the modern version with UEFI support, but it’s not complete and is under development, with regular releases. Finally, PlopKexec is exactly what the name implies – a boot manager that uses the Linux kernel. I’ve never encountered these before, but they seem quite interesting, and if it wasn’t for how much I do not like messing with bootloaders, I’d love to give these a go. Have any of you ever used it?

What is B-right/V release 4.5?

What if I told you there is an immensely popular operating system that you likely used it at least once, but did not realise what it was? In fact, it is so popular and important there is an IEEE standard based on it. It is uncanny how immensely popular AND immensely obscure this system is. It is scary that until today I have never even heard of its reference desktop implementation. The system is called “TRON”. ↫ Nina Kalinina This Mastodon thread is OSNews bait. Delicious.

SeaweedFS: a simple and highly scalable distributed file system

SeaweedFS is a simple and highly scalable distributed file system. There are two objectives: to store billions of files!, to serve the files fast! SeaweedFS started as an Object Store to handle small files efficiently. Instead of managing all file metadata in a central master, the central master only manages volumes on volume servers, and these volume servers manage files and their metadata. This relieves concurrency pressure from the central master and spreads file metadata into volume servers, allowing faster file access (O(1), usually just one disk read operation). There is only 40 bytes of disk storage overhead for each file’s metadata. It is so simple with O(1) disk reads that you are welcome to challenge the performance with your actual use cases. ↫ SeaweedFS’s GitHub page It’s Apache-licensed and the code is, as usual, on GitHub.

GNU Hurd’s 64bit port progress, porting started to Aarch64, POWER9

While GNU Hurd predates the Linux kernel, its hardware support has been woefully behind with very limited and dated hardware support compared to modern PC/server hardware. Not only that, its been largely x86 limited but during Q4’2023 the developers involved have made progress on x86_64 support and begun tackling AArch64 porting. Developer Samuel Thibault shared that the GNU Hurd 64-bit port now has enough packages in the debian-ports archive to be able to bootstrap a chroot. A 64-bit Debian + GNU Hurd build daemon is getting setup and the other infrastructure work is coming along. ↫ Michael Larabel In addition, work has started to port Hurd to POWER9, and someone is working on bringing the Ladybird web browser to Hurd, for a more modern browsing experience, among many other points of progress.