dlbuunk/vidad
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Welcome to the ViOS project, this is an attempt to write an OS for the x86 architecture. The project is (almost) fully written in C++. The goal is to write a mostly monolithic kernel. As for naming, i am not sure yet, both ViOS and Vidad seem nice. After a half-succesfull attempt in early 2011, i am now doing a full rewrite. (Now is early january 2012) ===== Outline of the project =================================================== The ViOS kernel consists of the following parts, whose names are the same on directories and on namespaces. ==> A bootloader, specifically written for the kernel. ==> Some functions for early kernel init (*_entry files). ==> util, contains memory (memcpy/memset), string, and kernel output functions. As the project goes along several parts of needed functionality may be added (think of locks). ==> system, contains the main part of startup/shutdown code. ==> memory, the memory management code, provides both physical memory management (paging) and logical memory management (new/delete). ==> stream, contains the interface for the stream/device model. Most data is transferred throug a stream. ==> event, contains the code for the event subsystem, all sorts of "events" are passed throug this system, IRQ's, some keystrokes, signals. ==> thread, provides the code for multithreading. ==> process, manages processes and exposes kernel functions to userspace. ==> IO, contains all in-kernel drivers. ===== Status of the project ==================================================== (as of June 11, 2012) ==> Bootloader done. ==> *_entry files mostly complete. ==> util contains several useful functions. ==> system contains a bit of startup code. ==> memory is mostly functional. ==> stream: there is a rather complete header. ==> thread: works, but there is a need for a better scheduling algo. ==> there are port io functions in io, and there is work done on the root/legacy devices. And that's about it. ===== Further planning ========================================================= The stream/device interface should be completed, this requires writing a system for translating device/file numbers to Stream pointers. We will need a proper screen driver, i will postpone writing a PCI driver. I'll start working on the legacy devices. Keyboard handling will require irq's and thus event, which, when finished should make it possible to finally have a functional terminal! Apart from user programs the kernel proper should than be functional, i will than add several drivers. ==> Apart from that i will try adding bootblocks for harddisk (PATA?/SATA?), CD-ROM (El-Torito no-emulation), and multiboot (Grub). ===== Building && running ====================================================== ViOS now uses Scons to build. Compiling ViOS works best when using a cross-compiler, but any ordinary compiler (with gcc-style inline asm) should do. Changing 'Csonset' should do. To buid the kernel run: scons in the main dir. To test you need bochs, just run: bochs If you want to test it on a real computer, you'll need to have a floppy drive. First copy the kernel to the floppy (this will shred the floppy!): dd if=image of=/dev/fd0u1440 count=72 and then reboot to test it. (at your own risk) ===== Contact ================================================================== The Vidad kernel is written by D.L.Buunk (dlbuunk@gmail.com). Issues can be submitted to the issue tracker of the main Vidad repository. NOTE: the kernel/bootloader is released under the GPL version 2.