OS News Archive

Samsung is porting Tizen to RISC-V

In case you missed it at the 2024 Samsung Developer Conference today, our partners at Samsung Visual Display discussed the work they have been doing to port the Tizen operating system to RISC-V. Tizen is an open-source operating system (OS) that is used in many Samsung smart T.V.s and it makes sense that they would look to the fast growing, global open-standard RISC-V to develop future systems. The presentation showed the results of efforts at both companies to expand the capabilities of the already robust Tizen approach. At the event they also demonstrated a T.V. running on RISC-V and using a SiFive Performance P470 based core. ↫ John Ronco The announcement is sparse on details, and there isn’t much more to add than this, but the reality is that of course Samsung was going to port Tizen to RISC-V. The growing architecture is bound to compete with the industry standard ARM in a variety of market segments, and it makes perfect sense to have your TV and other (what we used to call) embedded operating systems ready to go.

Notice

Just want to let y’all know that my family and I have been hit hard with bronchitis these past two weeks, and especially my recovery is going quite slowly (our kids are healthy again, and my wife is recovering quite well!). As such, I haven’t been able to do much OSNews work. I hope things will finally clear up a bit over the weekend so that I can resume normal service come Monday. Enjoy your weekend, y’all!

MenuetOS gets basic X server

There’s been a few new releases since the last time we talked about MenuetOS, back in March of this year when version 1.50.00 was released, so I figured it was time to take a look at what the project’s been up to. And just in case you don’t remember – MenuetOS is 64 bit operating system written in assembly that fits on a single 1.44 MB floppy disk. There’s also a 32 bit version that’s no longer being developed – I think. Weirdly enough, the 1.50.00 released is no longer listed, but recent changes include Mplayer being part of the disk image, further updates to the included X-Window Server, the usual bugfixes, and a few more things. The X server is quite cool – with it, you can run, say, Firefox on your Linux installation, but have the MenuetOS X server render the UI. In addition, thanks to MenuetOS now including a basic POSIX layer, it’s possible to create basic applications that run unmodified on both MenuetOS and a Linux distribution like Ubuntu. Neat.

SpecOS: an x86_64 OS kernel from scratch

It’s been busy in the world of hobby and teaching/learning operating systems these past few months, and today we’ve got another one – SpecOS. SpecOS is a 64 bit operating system kernel for x86-64 processors, still in quite early stages, written in (questionable quality) C. It is (not very) powerful. This used to be 32 bit, but has been transferred to a 64 bit operating system. It uses a monolithic kernel, because I like having everything in one place. This may take some inspiration from other operating systems, but it is not UNIX based. ↫ SpecOS GitHub page It’s got the basics covered with PS/2 keyboard and VGA support, a real-time clock driver, a basic hard disk driver, and physical and virtual memory management, among other things. We’re clearly looking at a hobby project, and the author is very clear about that. A virtual machine is highly advised, as running it on real hardware is… Well, you’re on your own, basically.

Limine: a modern, advanced, portable, multiprotocol bootloader and boot manager

Limine is an advanced, portable, multiprotocol bootloader that supports Linux, multiboot1 and 2, the native Limine boot protocol, and more. Limine is lightweight, elegant, fast, and the reference implementation of the Limine boot protocol. The Limine boot protocol’s main target audience is operating system and kernel developers that want to use a boot protocol which supports modern features in an elegant manner, that GRUB’s aging multiboot protocols do not (or do not properly). ↫ Limine website I wish trying out different bootloaders was an easier thing to do. Personally, since my systems only run Fedora Linux, I’d love to just move them all over to systemd-boot and not deal with GRUB at all anymore, but since it’s not supported by Fedora I’m worried updates might break the boot process at some point. On systems where only one operating system is installed, as a user I should really be given the choice to opt for the simplest, most basic boot sequence, even if it can’t boot any other operating systems or if it’s more limited than GRUB.

Managarm: microkernel-based OS with fully asynchronous I/O

Ah, another microkernel-based hobby operating system. The more, the merrier – and I mean this, without a hint of sarcasm. There’s definitely been a small resurgence in activity lately when it comes to small hobby and teaching operating systems, some of which are exploring some truly new ideas, and I’m definitely here for it. Today we have managarm. Some notable properties of managarm are: (i) managarm is based on a microkernel while common Desktop operating systems like Linux and Windows use monolithic kernels, (ii) managarm uses a completely asynchronous API for I/O and (iii) despite those internal differences, managarm provides good compatibility with Linux at the user space level. ↫ managarm GitHub page It’s a 64bit operating system with SMP support, an ACPI implementation, networking, USB3 support, and, as the quoted blurb details, a lot of support for Linux and POSIX. It can already run Weston, kmscon, and other things like Bash, the GNU Coreutils, and more. While not explicitly mentioned, I assume the best platform to run managarm on are most likely virtualisation tools, and there’s a detailed handbook to help you along during building and using this new operating system.

Fusion OS: writing an OS in Nim

I decided to document my journey of writing an OS in Nim. Why Nim? It’s one of the few languages that allow low-level systems programming with deterministic memory management (garbage collector is optional) with destructors and move semantics. It’s also statically typed, which provides greater type safety. It also supports inline assembly, which is a must for OS development. Other options include C, C++, Rust, and Zig. They’re great languages, but I chose Nim for its simplicity, elegance, and performance. ↫ Fusion OS documentation website I love it when a hobby operating system project not only uses a less common programming language, but the author also details the entire development process in great detail. It’s not a UNIX-like, and the goals are a single 64 bit address space, capability-based security model, and a lot more. It’s targeting UEFI machines, and the code is, of course, open source and available on GitHub.

Design and build the next version of OSNews

Despite being live since 1997, OSNews has had fairly few redesigns in the grand scheme of things. If my memory serves me correctly, we’ve had a grand total of 6 designs, and we’re currently on version 6, introduced about 5 years ago because of unpleasant reasons. It’s now 2024, and for a variety of reasons, we’re looking to work towards version 7 of our almost 30 year old website, and we need help. I have a very clear idea of what I want OSNews 7 to be like – including mockups. The general goals are making the site visually simpler, reducing our dependency on WordPress extensions, and reducing the complexity of our theme and website elements to make it a bit easier for someone like me to change small things without breaking anything. Oh and a dark mode that works. Note that we’re not looking to change backends or anything like that – WordPress will stay. If you have the WordPress, design, and developer skills to make something like this a reality, and in the process shape the visual identity of one of the oldest continuously running technology news websites in the world, send me an email.

Moving to an RTOS on the RP2040

I’ve been working on a bunch of small projects involving microcontrollers. Currently a lot of them are based around the Raspberry Pi Pico boards because I like the development experience of those a lot. They have a decent SDK and cheap hardware to get started and the debugger works with gdb/openocd so it just integrates in all IDEs that support that. One of my current projects is making a fancy hardware controller for a bunch of video equipment I use. The main things that will be controlled are two PTZ cameras (those are cameras that have motors to move them). One stationary camera and the video switching equipment that that’s hooked up to. ↫ Martijn Braam There’s more to building something like this than connecting up hardware components – there’s also software that needs to be taken care of. In this case, the author is weighing several real-time operating systems for use in the project, namely FreeRTOS, NuttX, and Zephyr. If you’re working on a similar project, this article may help in choosing the RTOS that’s right for you.

R9OS: Plan 9 in Rust

R9 is a work-in-progress effort to build a Plan 9 kernel to Rust. It was started a couple years back by the maintainers of the Harvey OS distribution of Plan 9, who threw in the towel after “loss of traction”. R9 is a reimplementation of the plan9 kernel in Rust. It is not only inspired by but in many ways derived from the original Plan 9 source code. ↫ R9OS GitHub page For now, the project is obviously mostly focused on running in virtual machines, specifically Qemu, in which it can be run using a variety of architectures: aarch64, x86-64 (with or without kvm), and RISC-V.

The ExectOS operating system

ExectOS is a preemptive, reentrant multitasking operating system that implements the XT architecture which derives from NT architecture. It is modular, and consists of two main layers: microkernel and user modes. Its’ kernel mode has full access to the hardware and system resources and runs code in a protected memory area. It consists of executive services, which is itself made up on many modules that do specific tasks, a kernel and drivers. Unlike the NT, system does not feature a separate Hardware Abstraction Layer (HAL) between the physical hardware and the rest of the OS. Instead, XT architecture integrates a hardware specific code with the kernel. The user mode is made up of subsystems and it has been designed to run applications written for many different types of operating systems. This allows us to implement any environment subsystem to support applications that are strictly written to the corresponding standard (eg. DOS, or POSIX). Thanks to that ExectOS will allow to run existing software, including Win32 applications. ↫ ExectOS website What ExectOS seems to be is an implementation very close to what Windows NT originally was – implementing the theory of Windows NT, not the reality. It’s clearly still in very early development, but in theory, I really like the idea of what they’re trying to achieve here. Windows NT is, after all, in and of itself not a bad concept – it’s just been tarred and feathered by decades of mismanagement from Microsoft. Implementing something that closely resembles the original, minimalist theories behind NT could lead to an interesting operating system for sure. ExectOS is open source, contains its own boot loader, only runs on EFI, and installation on real hardware, while technically possible, is discouraged.

Vinix now runs Solitaire

Way, way back in the cold and bleak days of 2021, I mentioned Vinix on OSNews, an operating system written in the V programming language. A few days ago, over on Mastodon, the official account for the V programming language sent out a screenshot showing Solitaite running on Vinix, showing off what the experimental operating system can do. The project doesn’t seem to really publish any changelogs or release notes, so it’s difficult to figure out what, exactly, is going on at the moment. The roadmap indicates they’ve already got a solid base going to work from, such as mlibc, bash, GCC/G++, X and an X window manager, and more – with things like Wayland, networking, and more on the roadmap.

StreamOS source code republished 15 years later

Way, way, way back in 2009, we reported on a small hobby operating system called StreamOS – version 0.21-RC1 had just been released that day. StreamOS was a 32-bit operating system written in Object Pascal using the Free Pascal Compiler, running on top of FreeDOS. It turns out that its creator, Oleksandr Natalenko (yes, the same person), recovered the old code, and republished it on Codeberg for posterity. It’s not a complete history, rather a couple of larger breadcrumbs stuck together with git. I didn’t do source code management much back in the days, and there are still some intermediate dev bits scattered across my backup drive that I cannot even date properly, but three branches I pushed (along with binaries, btw; feel free to fire up that qemu of yours and see how it crashes!) should contain major parts of what was done. ↫ Oleksandr Natalenko It may not carry the same import as Doom for the SNES, but it’s still great to see such continuity 15 years apart. I hope Natalenko manages to recover the remaining bits and bobs too, because you may never know – someone might be interested in picking up this 15 year old baton.

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.