diff --git a/README.md b/README.md index b1d4af8..3074820 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,40 @@ -# popcorn: A toy microkernel x64 UEFI OS +# popcorn: A toy OS kernel -**popcorn** is a hobby OS for x64 UEFI environments to play with building a -microkenerl architecture. It's far from finished, or even being usable - for -now, it's a sandbox for me to explore the UEFI architecture, microkernels, and -OS-related concepts that I want to play with. +**popcorn** is the kernel for the hobby OS that I am currently building. It's +far from finished, or even being usable. Instead, it's a sandbox for me to play +with kernel-level code and explore architectures. +The design goals of the project are: + +* Modernity - I'm not interested in designing for legacy systems, or running on + all hardware out there. My target is only 64 bit architecutres, and modern + commodity hardware. Currently that means x64 systems with Nehalem or newer + CPUs and UEFI firmware. Eventually I'd like to work on an AArch64 port, + partly to force myself to factor out the architecture-dependent pieces of the + code base. + +* Modularity - I'd like to pull as much of the system out into separate + processes as possible, in the microkernel fashion. A sub-goal of this is to + explore where the bottlenecks of such a microkernel are now, and whether + eschewing legacy hardware will let me design a system that's less bogged down + by the traditional microkernel problems. Given that there are no processes + yet, the kernel is monolithic by default. + +* Exploration - I'm really mostly doing this to have fun learning and exploring + modern OS development. Modular design may be tossed out (hopefully + temporarily) in some places to allow me to play around with the related + hardware. + +## Building + +Popcorn uses the `waf` build tool, which is included in the repo. The other +requirements are: + +* python (to run waf) +* gcc +* nasm + +After cloning, run `waf configure`. Then you can run `waf build` to build the +project, and `waf test` to run the tests. A floppy disk image will be built in +`build/popcorn.img`. If you have `qemu-system-x86_64` installed, then you can +run `waf qemu` to run it in `-nographic` mode.