Introducing Cobalt

Screenshot of Cobalt running on Windows 11

FreeDOS is a free and open-source operating system that has been around for over 20 years, designed to mimic MS-DOS and run DOS applications. It’s a fantastic project, but I want to try my own take: Cobalt.

Cobalt is a lightweight operating system I’m working on, based on FreeDOS. To use Linux terminology, it’s a ‘distribution’ of FreeDOS — the kernel, command line, applications, and drivers all come from the FreeDOS project (or at the very least, FreeDOS mirrors). Since it’s so close to FreeDOS, it also runs DOS games and applications (like DOOM, Microsoft Word 5.5, and Oregon Trail Deluxe).

The main difference right now is that FreeDOS has many different versions, some of which allow people to choose which packages they want during installation, while Cobalt has one single version with a fixed set of packages. My initial goal is to include the base drivers and utilities that covers the common bases, as well as a more friendly setup and interface. Going back to Linux analogies, FreeDOS is sort of like Debian or Arch Linux, while I’m trying to make something closer to Ubuntu or Elementary OS.

List of fixed drives with a prompt to select a drive
Cobalt 0.1 CD Installer

Cobalt also has a completely custom installer, which takes you from a blank PC or virtual machine to a working installation in just a few clicks. The FreeDOS installer was a bit overwhelming when I first tried it years ago, and even though FreeDOS 1.3 is a massive improvement in this area, I still want to see if I can make something that balances simplicity with helpful features.

The current Cobalt package includes FreeDOS Kernel Build 2040 (the same included in FreeDOS 1.1), FreeCom 0.85a for the command line, Jemm for memory management, CuteMouse for mouse support, UDVD2 for CD/DVD drive support, and other basic drivers and utilities. It also boots into DOS Navigator at startup, which gives you a text-mode graphical interface for viewing files, but I might replace that with another shell in the future.

Screenshot of Cobalt with
Cobalt 0.1 with DOS Navigator

Most of my work on Cobalt so far has been creating the build infrastructure. Cobalt installation images are generated by a bash script, which pulls the latest-available packages from the FreeDOS project and creates a CD image ready for a VM or real PC. Since the script doesn’t require any interaction and can run on any Linux host, I’m using GitHub Actions to generate “nightly” releases automatically each week. Nightly builds can be used to test the latest FreeDOS packages and Cobalt changes before a full release is ready — something FreeDOS doesn’t currently offer.

Cobalt is still far from being ready for most people to use, though. The installer can’t boot from USB or handle multiple fixed drives yet, and there’s no option yet to install Cobalt on a drive while keeping files/folders. There are also a few more drivers and utilities that would be nice to have, which still need to be tested.

There are also a few features I hope to add soon. Making Cobalt available with multiple options for the DOS kernel (FreeDOS, MS-DOS, DR-DOS, etc.) would be helpful for some situations, like how Ubuntu Linux is available in multiple “flavors” that have different desktop environments. I also want to add built-in configurations for networking in VirtualBox and other popular VMs, which would allow file transfers and basic web browsing.

If the name Cobalt sounds familiar, it’s because it’s actually a reboot of an earlier project with the same name and similar goals. Three releases were made in 2016, then I stopped working on it and developer Ercan Ersoy took over the project. The original Cobalt was a jumbled up mess of proprietary and open-source code, which is why the new Cobalt is almost entirely a clean slate.

If you’re interested in learning more, check out and the GitHub repository. There’s also a channel for Cobalt in the Discord server for my software projects.

%d bloggers like this: