OSNews sat down with Ian Seyler, the Founder and Lead Programmer at Return Infinity, the maker and sponsor of Baremetal OS, a 64-bit OS for x86-64 based computers written entirely in Assembly. Editor’s note: We’d love to do similar interviews with the people behind other alternative or hobby OS projects. If there’s a project that you’d like to learn more about, let us know.
Why did you think the world needs another OS?
The main reason is that nothing else like BareMetal OS existed. Many new Operating Systems that are in development try to duplicate the full features of something like Windows, Linux, or Mac OS but I feel new OS developers are spreading themselves too thin. I looked for a possible niche market and have focused on that.
What makes BareMetal different from other OSes that existed before?
The main difference is that BareMetal OS takes older software concepts and applies them to current hardware. Every modern Operating System these days has a Graphical User Interface along with all of the bells and whistles like multitasking and journaled filesystems. BareMetal OS is a mono-tasking system, so the overall system structure is very simplified. BareMetal OS is more geared towards running number-crunching tasks or experimentation with different algorithms. Some people have mentioned that BareMetal OS is like a 64-bit version of DOS.
Once you decided to do it, how did you get started?
BareMetal OS started as a hobby project based on MikeOS. I read about MikeOS (on OSNews) and started to mess around with it as it rekindled my interest in Assembly programming. I even submitted some code that was included with the official distribution. While MikeOS was great to learn Assembly it was a bit limiting after a while. I decided to create a new Operating System that would be like MikeOS but take advantage of the latest hardware that was available. Mainly this meant switching from 16-bit Real Mode to 64-bit Long Mode as well as rewriting all of the system API calls from scratch as MikeOS uses BIOS calls to do much of the heavy lifting.
Who are your primary contributors, and what special skills do they bring to the project?
I am the primary contributor to the code and I’ve been working with x86 Assembly for about 5 years now. There are also a couple of people that hang out in the IRC channel that have their own projects that compliment BareMetal OS and provide the occasional bug report/fix.
BareMetal is Open Source software. How successful have you been in attracting developers to your community so far?
Not as successful as I had hoped, honestly. I think a lot of people shy away from the project because it is written in Assembly as opposed to a more widely used programming language like C.
There seems to be a stigma that programming in Assembly is very difficult and takes much more time. While there is a bit of truth to that I don’t find it to be the case. When you work in Assembly you need to visualize the computer in its most simplified form, which is pretty much a big calculator that preforms math and moves data around within memory. BareMetal OS is intentionally simplified so that programming in Assembly is not such a massive task to manage. Writing a full-featured OS in Assembly is possible (See the MenuetOS project), but we are sticking to just the basics.
Why the BSD License?
BareMetal OS is open-source so others can learn from the code and provide new features or bug fixes if they are able. BareMetal makes use of our Pure64 bootloader, which was closed-source but is now open under the BSD license as well. Also, as it is open source, our code can be used in other projects. For instance the folks behind MenuetOS have successfully ported our i8254x and rtl8169 network drivers to their system.
Do you have a business model, or is this purely a hobby project? If so, how do you plan on making money?
At the moment BareMetal OS is a hobby project. There are plans to offer BareMetal Node and Parallax OS commercially but they are still in pretty early stages. BareMetal Node is our take on an HPC platform. According to top500.org, most of the big clusters out there are running Linux on x86-64. Linux is a great general-purpose OS, but it does too much in the background. BareMetal Node is a very lightweight (8KiB binary) and very simplified system that requires no maintenance. Initial testing looks good and the system works well, but more development is required. I would like to see BareMetal Node running on some x86-64 cluster like Pixar’s RenderFarm, but I think it has a way to go yet. Parallax is our limited multi-tasking system (One application per CPU core can be run). Both BareMetal Node and Parallax offer orchestration software to control what is running on a cluster. There are videos of BareMetal Node and Parallax on our website.
Can you talk about BareMetal’s hardware requirements?
The main requirement is a computer with a 64-bit compatible processor. Anything less than 5 years old or so should work just fine. As of about a month ago I completed drivers for the Intel PRO/1000 (i8254x) line of Gigabit network cards as well as the Realtek 816x/811x-based family of Gigabit cards. The addition of the Intel PRO/1000 driver enables BareMetal OS to be run with network support under VirtualBox and VMware as well as physical hardware. The Realtek 816x/811x chipset is built into a lot of older and current motherboards.
How does your limited hardware support affect adoption?
I think it really used to limit the adoption as the only network driver we used to have was for the older 100mbit Realtek 8139 chipset. I phased out that older driver once the new gigabit drivers were written. The main thing that is holding the OS back right now is software support. At the moment the OS communicates over the network via raw Ethernet frames so I am working on writing a full TCP/IP stack. Also, C applications cannot use standard ANSI calls like printf() and memcpy() since a C library has not yet been finalized. I think that TCP/IP support as well a C library will increase the popularity of the OS and I am working towards both of those items.
What are your future plans?
I already mentioned the TCP/IP stack and C library which are high on the priority list. Other than that a few under the hood things like activating the IO-APIC in the computer as apposed to using the legacy PIC to manage interrupts. For BareMetal Node it would be very interesting to enable the basics of GPU processing if it is available (I think help from AMD and nVIDIA would be required for this). Using the VT extensions of the CPU to create a very lean hypervisor is also on our roadmap.
I remember writing a high-low game in Assembly for a class assignment. That was fun but obviously took a lot of code to get the job done. I think it would be fun to contribute to this project but I doubt I’d be any help