From 85bcae89e09186034ac13aa6755368c9fdf30625 Mon Sep 17 00:00:00 2001 From: Miguel Date: Tue, 11 Sep 2018 12:17:18 +0200 Subject: update readme --- README.md | 135 +++++++++++++++++++++++++++----------------------------------- 1 file changed, 59 insertions(+), 76 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 056a5be..06ca753 100644 --- a/README.md +++ b/README.md @@ -3,31 +3,50 @@ Welcome to FoolOS ![FoolOS Logo](https://gitweb.softwarefools.com/?p=miguel/fool-os.git;a=blob_plain;f=img/logo.png;hb=HEAD) -Multiboot ---------- -The FoolOS Kernel is following the Multiboot Specification (0.6.96) -providing a multiboot header and the entry point _start(). +Abstract +-------- +Welcome to the Home of the most useless operating system. -This in turn calls the C function kernel_main(). +Quick-start +----------- +Simply boot from the FoolOS.iso in your favourite emulator or +_dd_ to an USB stick and test on real hardware. -Disclaimer ----------- +Features +-------- -THIS IS A WORK IN PROGRESS. +* Booting with Multiboot (grub) +* 32-bit protected mode +* VESA and EGA-standard text-mode +* Logging to COM1 +* Parsing ACPI and Multiboot Data (partly) +* Symmetrical Multiprocessing with LAPIC and IOAPIC +* APIC and PIT Timers +* Seperate GDT and IVT on each CPU +* Paging / Virtual Memory +* RAM image (ext2 read-only) +* VESA Framebuffer with fallback to a text-only terminal +* Standard streams (stdin/stdout/stderr) +* Mouse and Keyboard +* Multithreading & Multitasking +* Kernel and Userspace Tasks (ring 0/ring 3) +* CPU Private Memory +* Superfast Task Scheduler +* Newlib C library for Userspace +* ELF binaries +* IRQ Handling Framework +* Spinlocks +* Simple Shell +* PCI bus scanning -This is a simple and useless "operating system", with a very basic set -of features. It is the fruit of my fundamental explorations of the x86 -architecture and operating system design. +_Please note that most features are only very rudimentary and mostly buggy._ -Copyright M.Idziorek 2014-2015,2018 unless stated otherwise. +Multiboot +--------- +The FoolOS Kernel is following the Multiboot Specification (0.6.96) +providing a multiboot header and the entry point _start(). -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +This in turn calls the C function kernel_main(). Prequisites ----------- @@ -45,14 +64,10 @@ NEWLIB https://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz https://ftp.gnu.org/gnu/automake/automake-1.11.6.tar.gz -Usage ------ -Use the FoolOS.iso in your favourite emulator or `dd` to an usb stick -and test on real hardware. Supported Platforms ------------------- -TODO: update/recheck +__TODO: update/recheck__ FoolOS is tested/developed on the following emulators/machines @@ -64,69 +79,37 @@ FoolOS is tested/developed on the following emulators/machines * Q6600 on Asus p5n32-e sli plus (Desktop PC) * 4790K on Asus (Desktop PC) -Features --------- - -Please note that most features are only very rudimentary and mostly buggy. - -* Booting with Multiboot (grub) -* 32-bit protected mode -* VESA and EGA-standard text-mode -* Logging to COM1 -* Parsing ACPI and Multiboot Data (partly) -* Symmetrical Multiprocessing with LAPIC and IOAPIC -* APIC and PIT Timers -* Seperate GDT and IVT on each CPU -* Paging / Virtual Memory -* RAM image (ext2 read-only) -* VESA Framebuffer with fallback to a text-only terminal -* Standard streams (stdin/stdout/stderr) -* Mouse and Keyboard -* Multithreading & Multitasking -* Kernel and Userspace Tasks (ring 0/ring 3) -* CPU Private Memory -* Superfast Task Scheduler -* Newlib C library for Userspace -* ELF binaries -* IRQ Handling Framework -* Spinlocks -* Simple Shell -* PCI bus scanning - -Discontinued Features ---------------------- - -* Floppy Disk Driver -* Custom Bootloader (2 stages) - Todos ----- +* Unit Testing * Mouse & KB processing in seperate task. * Kernel Stuff Reentrancy & Newlib Reeentrancy Struct -* Unit Tests * Ethernet driver E1000 / NS2000 & Networking stack (ipxe network drivers?) * Porting (ncurses, gcc, binutils, vim, apache...) * Posix getdents * GCC optimizations (break kernel?) * Writing to ext2 RAM-image -* Mutes +* Mutexes * Flush TLB * GUI / Window Manager (update\_rect, etc..) -REFERENCES -========== - - http://www.brokenthorn.com/Resources/OSDev17.html - http://www.jamesmolloy.co.uk/tutorial_html/9.-Multitasking.html - http://pdos.csail.mit.edu/6.828/2011/labs/lab6/ - http://pdos.csail.mit.edu/6.828/2011/xv6.html - http://www.nongnu.org/ext2-doc/ - http://www.osdever.net/tutorials/view/multiprocessing-support-for-hobby-oses-explained - http://forum.osdev.org/viewtopic.php?f=1&t=10944 - http://wiki.osdev.org/Virtual_8086_Mode - http://wiki.xomb.org/index.php?title=ACPI_Tables - http://wiki.osdev.org/Hosted_GCC_Cross-Compiler - https://sourceware.org/newlib/ - and many many more... +Disclaimer +---------- + +THIS IS A WORK IN PROGRESS. + +This is a simple and useless "operating system", with a very basic set +of features. It is the fruit of my fundamental explorations of the x86 +architecture and operating system design. + +Copyright M.Idziorek 2014-2015,2018 unless stated otherwise. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- cgit v1.2.3