With most of the “fun” of buying a house and moving to a new part of the Bay behind me, I’ve finally had some leisure time to turn my attention to something I’ve really missed doing…namely, developing ArcanOS. What have I been up to on that front?
Well, after having been off the project for several months due to the whole “becoming a homeowner” thing, I took a not-so-long look at the project and concluded that I needed to be more realistic about the boot loader situation. When we last left our hero, he was intending to continue development on his boot loader until such time as it could produce a working memory map, at which point ArcanOS would be ported to the Multiboot Specification so that it could be booted by GRUB. While I still think it would have been a lot of fun to do that, I ultimately had to be realistic about what I was getting myself into. I’d be building multiple boot loader stages, making a new build process to support them, and enjoying the hair-pulling process of chain loading and making sure I hold onto the memory map in the process. That would have been a good learning experience, but it would take a lot of time to do and I already lost a lot of momentum over the past few months. Doing a lot of work only to throw it away and do a portage effort just didn’t look as appetizing.
So, as of a recent commit, ArcanOS now boots via GRUB. The current commit will generate a disk image file for Bochs which contains the GRUB stage1 and stage2 boot loaders already. As of tonight’s commit, ArcanOS now receives an accurate memory map from GRUB and this will give me the material I need to make a frame allocator and then work on enabling paging.
Part of me is tempted to take a side trip and include some bells and whistles to make the boot process easier. I’m getting tired of typing in the block list of the kernel on every test boot. I’m fairly sure that much of that sort of thing, though, requires a file system GRUB understands, and if I leap onto a canonical file system, I might never get out. I should also note that my build process needs some tweaking…right now I have to regenerate the file in boot/post_pad every time the kernel size changes!
Since I’m back to proper feature development for the MAGUS goals, I’ve changed the version name to PRE-MAGUS.