[docs] Update readme with more stuff
This commit is contained in:
parent
9c476e9426
commit
f46fce0eb3
74
README.md
74
README.md
@ -10,3 +10,77 @@ For example, you can boot the disk in `qemu`:
|
||||
qemu -fda bootdisk.img
|
||||
|
||||
Or you could set up a VirtualBox machine and load the floppy image.
|
||||
|
||||
## Goals and Roadmap ##
|
||||
Overall, the goal of this project is to write a relatively POSIX-compatible OS from the ground up. With a focus on generic hardware functionality and universal specifications like VESA, I hope to eventually get something fairly complete in terms of what an OS should be. At some times, I may focus on an actual piece of complex hardware (I am looking to write a basic driver for Intel graphics cards based on the X driver and the Mesa components), but in general, I will stick to generic interfaces.
|
||||
|
||||
### Basic Goals ###
|
||||
* Create a working modular monolithic kernel capable of executing arbitrary ELF binaries
|
||||
* Write, from scratch, a C standard library using past experience in writing standard library functions
|
||||
* Support POSIX threads
|
||||
* Implement an existing file system, specifically EXT2
|
||||
* Be able to manipulate VESA modes to run at an optimal resolution for graphics
|
||||
* Handle basic networking on a virtual Ethernet device (DHCP, TCP, etc.)
|
||||
|
||||
### Loftier Goals ###
|
||||
Some things are far easier said than done, but I like to say them anyway. The time span for these depends greatly on how quickly the basic goals are completed and can range anywhere from a few months to years from now.
|
||||
|
||||
* Create a working implementation of Wayland under VESA (will be slow)
|
||||
* Port Qt (under Wayland) and some Qt apps
|
||||
* Support audio in a way that doesn't suck like Linux's mess of libraries and mixers
|
||||
* Various hardware-specific drivers (primarily for my T410):
|
||||
* Intel graphics driver, with acceleration so Wayland isn't slow
|
||||
* Realtek wireless driver, with WPA2
|
||||
* Specific drivers for the Thinkpad itself (or just acpi?)
|
||||
|
||||
### Roadmap ###
|
||||
Currently, I have a kernel capable of reading its multiboot parameters, which is terribly un-useful. The current, ordered, plan of attack is as follows:
|
||||
|
||||
* Finish James M's tutorial (second half), which covers:
|
||||
* Paging
|
||||
* Heap
|
||||
* VFS
|
||||
* Initial RAM Disk (except I'll probably use my own format for the directory structure)
|
||||
* Multitasking
|
||||
* User mode
|
||||
* Finish basic kernel functionality
|
||||
* Loading ELF binaries and executing them in user mode
|
||||
* Complete system call table
|
||||
* Get a better semblance of users and groups
|
||||
* Write a file system driver for a real file system
|
||||
* Target is EXT2, but might do FAT
|
||||
* Move OS development images to some form of virtual drive (VDI or something QEMU compatible)
|
||||
* Implement a VESA mode handler
|
||||
* Requires a Virtual 8086 monitor
|
||||
* Need to be able to use graphics modes and still have output, so write a framebuffer terminal
|
||||
* Complete libc
|
||||
* Enough to run basic unix tools...
|
||||
* Port some basic UNIX tools
|
||||
* a shell (bash and zsh, because I like bash, but the office uses zsh)
|
||||
* ls, mv, rm, etc.
|
||||
* here's a real test: perl
|
||||
* Implement networking
|
||||
* IPv4
|
||||
* Ethernet driver for QEMU or VirtualBox
|
||||
|
||||
*Anything beyond this point is part of the 'Loftier Goals' section*
|
||||
|
||||
* Wayland compositor
|
||||
* based on specifications for a Wayland environment
|
||||
* Port some of the Wayland sample applications
|
||||
* Write my own!
|
||||
* Port Qt
|
||||
* Specifically, for Wayland
|
||||
* Qt is huge and has its own standard library, might need more extensive libc
|
||||
* Need to support C++-built stuff, so will probably need a C++ stdlib.
|
||||
* Audio drivers
|
||||
* Maybe before Qt?
|
||||
* Should support software mixing at least, hardware under a virtual machine, maybe my Intel hw
|
||||
|
||||
## References ##
|
||||
I'll be more detailed here eventually, but for the most part, I have been using:
|
||||
|
||||
* [James M's kernel development tutorials](http://www.jamesmolloy.co.uk/tutorial_html/index.html)
|
||||
* [Bran's Kernel Development Tutorial}(http://www.osdever.net/bkerndev/) *completed*
|
||||
* [Skelix's OS tutorial](http://en.skelix.org/skelixos/)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user