An open source operating system for x86 machines
This is the news archive for the Araxes website. Click here to return to the home page.
Araxes still lives, though I've not pushed code to public in some time. My current focus is on nailing down the new system design overall, and documenting thoroughly as the design is implemented. I have an internal goal to release a functional system preview for testing this summer in hopes that it will pique the interest of more than just a handful of people in #osdev on Freenode.
About a year ago I committed to redesigning the system completely, with the internet of building something new and entirely unlike the myriad Unix-like systems produced in the hobby operating systems space. The new Araxes design is unique enough to stand alone, but should be comfortable enough for any programmer familiar with either Unix or NT to work with. The underlying goal of the project however is not a lofty one of revolutionizing computing; it is to be a platform to provide specific services, and to provide them well.
The two key goals of the system are clear: Prioritizing user experience and complete documentation. The method of configuring a system through a smattering of text files and arcane incantations increases the complexity of bringing up and maintaining a system and the number of focus switches an administrator needs to make to find and reference some buried manual page somewhere just to change a few options. And often that manual page is crude and standalone. The Araxes project will provide in-line documentation in its user interface for expediency when configuring and maintaining a system, and a full manual and reference book that describes both the back and front ends of the system for more complex and in-depth troubleshooting and optimization.
More will be available about the system in the coming weeks.
I've been using the Blacklight name for operating system development for several years now. I chose it completely at random one day. As such, it's never really had any meaning to it. Today, I have decided to rename the project to Araxes. The name, which is the Greek name of the largest river in the Caucasus, was one used early in the history of what would later become the Cordilon Group, and was originally borrowed from one of the stage names in the racing video game XGRA: Extreme-G Racing Association. Our past trend of borrowing names from the Extreme-G series has come back to me, and I have decided that the first release of the Araxes operating system will be codenamed Farron (from Extreme-G 2.
Work continues steadily on the operating system and manual. The vast majority of the work is being committed to a private repository. When a pre-beta test is available, I will merge the code from the private repository into the public one, build a number of test images, and make several announcements.
Oh, and we'll get a new domain name soon. Unfortunately, araxes.org is taken...
We now have an actual half-decent VGA terminal which handles ANSI colour codes. It currently handles 3-bit colour codes (30-37,40-47), intensity/bold bits, resets, and default -- I have yet to write a way to reduce xterm colours and truecolor to the EGA/VGA 16-color palette. It's a working terminal and a working framework to extend as a more hardware-agnostic terminal, which I believe to be important for future growth. Also, a fresh pair of commits constructs a list of available VBE modes through our new real mode call interface. Unfortunately, there's no support for actually setting a graphics mode and using it as a terminal (though that is a near-future goal!)
The new real mode call interface is composed of two pieces of code and 512 bytes of scratch space in low memory. The first piece of code, void rmode_call(unsigned int magic), disables interrupts and paging, hands control to the second piece of code, void rmode_subkernel(unsigned int magic), which drops to 16-bit real mode, executes a function based on the magic number passed to it, places any applicable results in the 512 bytes of scratch space, reinitializes 32-bit protected mode, and returns. rmode_call() takes control, reloads the kernel's GDT and IDT, enables paging, enables interrupts, and returns control to where it was originally called from. This gives us an easy (if slightly arcane) way to make calls to the BIOS for VBE and VGA control without needing to implement a virtual 8086 monitor or use something like libx86emu.
If you're reading this, your nameservers have updated and are pointing at the new website, which is no longer hosted on GitHub Pages. I decided to move the website to my usual web server as I don't expect much traffic and I missed having more control over the output. A little bit of PHP and some .htaccess can go a long way.
I've delved back into the world of operating system development. BlacklightEVO isn't dead (again), and work has resumed on the kernel and build code. Lots of design work has been done behind the scenes, which I'm looking forward to implementing. So far the kernel has a basic physical and virtual memory manager and exception handler.
I'm hoping to have something on the internet within a few weeks. Occasionally progress might be posted to #osdev on Freenode and associated channels. Today's work was getting paging enabled and confirming that the paging scheme works (at least for now), as well as a few aesthetic pieces such as a custom GRUB menu for development builds and some wallpapers.
Okay, so I *totally* missed the "two meaningful commits per week" mark. The good news is I'm not dead, and I've started design work for the system's underlying structures, including a filesystem called EVOfs. I'm hoping to have the EVOfs version 0 spec done within the next couple days, at which point I can upload the docs/ directory and its contents to the GitHub repository.
Implementation-wise, the OS hasn't progressed a whole lot. I've gotten a basic test bootloader (MBR, VBR, Stage2) chain working, which I'll expand upon once I have the EVOfs spec written and write some tools to create and manipulate EVOfs partitions. Once I have that done, I'll write a second stage bootloader for EVOfs that loads the kernel binary, parses the ELF, sets up a protected mode environment, and transfers control to the kernel.
Development on BlacklightEVO has restarted, using a fresh codebase, a new lease on life and systems development, and a saner environment (GCC on Linux). A bare initial codebase has been committed and will be updated over the next few days. While the code does indeed build and boot, it does next to nothing at this point. My intent is to have at least two meaningful commits per week to the master branch and to post news updates semi-frequently.
Commits are likely to slow down in September as I am returning to school full-time, and while I do not intend to cease development of the system for a second time, I cannot promise a constant update stream through exam periods and such. In the meantime, though, lots of work to be done, lots of time to do it in, and my determination to get this project to a generally usable state is higher than ever. Stay tuned for more updates on the development of BlacklightEVO and the roadmap the release of EVOlution.