summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md237
1 files changed, 4 insertions, 233 deletions
diff --git a/README.md b/README.md
index 21d8ae2..f9b5d79 100644
--- a/README.md
+++ b/README.md
@@ -1,236 +1,7 @@
-Welcome to FoolOS
-=================
+# FOOL-OS
-![FoolOS Logo](https://gitweb.softwarefools.com/?p=miguel/fool-os.git;a=blob_plain;f=img/logo.png;hb=HEAD)
+Welcome to the git repository of the worlds most useless operating system.
-Abstract
---------
-Welcome to the Home of the worlds most useless operating system.
+You can read more about this project on:
-Quick-start
------------
-Simply boot from the __FoolOS.iso__ in your favourite emulator
-or __dd__ to an USB stick and test on real hardware.
-
-Features
---------
-
-* Booting with Multiboot (e.g. GRUB 2)
-* 32-bit protected mode
-* Logging to COM1
-* Parsing ACPI (incomplete) and Multiboot Data
-* Symmetrical Multiprocessing with LAPIC and IOAPIC
-* APIC and PIT Timers
-* Seperate GDT and IVT for each CPU
-* Paging / Virtual Memory
-* Ext2 RAM Disk
-* Pipes
-* Standard streams (stdin/stdout/stderr)
-* Mouse and Keyboard support
-* Multi-threading & Multitasking
-* Kernel and Userspace Tasks
-* CPU Private Memory
-* Support for ELF binaries.
-* IRQ Handling Framework
-* Finegrained Spinlocks
-* Superfast Task Scheduler
-* PCI Bus scanning
-* Ethernet E1000 PCI Driver
-* VESA Framebuffer with fallback to a text-only terminal
-* Composite Window Manager
-* C-library for Userspace (Newlib)
-* Simple Network Stack (ARP, IPv4, ICMP, UDP)
-* Simple FoolShell
-* Snake Game
-* Ships with some useless userspace software
-
-_Please note that most features are only very rudimentary and mostly buggy._
-
-Multiboot
----------
-The FoolOS Kernel is following the Multiboot Specification (0.6.96)
-providing a multiboot header and the entry point _start().
-
-This in turn calls the C function kernel_main().
-
-Building
---------
-
-You should at least setup a gcc cross-compiler and setup newlib to
-build FoolOS yourself.
-
-GCC CROSS-COMPILER (i686-elf)
-
- https://wiki.osdev.org/GCC_Cross-Compiler (18 AUG 2018)
- ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-8.2.0/gcc-8.2.0.tar.gz
- https://sunsite.icm.edu.pl/pub/gnu/binutils/binutils-2.31.1.tar.gz
-
-NEWLIB
-
- https://wiki.osdev.org/Porting_Newlib (18 AUG 2018)
- ftp://sourceware.org/pub/newlib/newlib-3.0.0.20180802.tar.gz
- https://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
- https://ftp.gnu.org/gnu/automake/automake-1.11.6.tar.gz
-
-Supported Platforms
--------------------
-__TODO: update/recheck__
-
-FoolOS was/is tested/developed on the following emulators/machines
-
-* bochs 2.6 (try compiled with: ./configure --enable-clgd54xx --enable-a20-pin --enable-debugger --enable-disasm --enable-e1000 --with-x --with-x11 --with-term --enable-smp) (add -lpthread to LIBS in the Makefile!)
-* qemu 2.8.1
-* qemu 3.0.0
-* virtual box
-* Acer Aspire 1810TZ (Notebook)
-* Q6600 on Asus p5n32-e sli plus (Desktop PC)
-* 4790K on Asus z97-pro gamer (Desktop PC)
-
-Todos
------
-
-break out reusable parts. use typedefs
-
-two buffers for programms , never lock both. lock is syscall?
-port as secondary user.. ? zlib libpng
-
- https://wiki.osdev.org/Text_Mode_Cursor
-cnrom civis term
-pipes! schedulig! DMA! splice (2)
-
-Autobuild via Jenkins (sanbboxed?)
-streamline: binutils,gcc,newlib,ncurses,ncurses-examples.vim building
-mesa3d, quake,doom, netwookring tcp/ip
-
-* PRIO: ringbuffers (spinlock on/off, interrupts on/off, read/write blocks of data);
-* PRIO: Writing to ext2 RAM-image!!!!
-* PRIO: Fix scheduler. use all cpus! / accounting/bookkeppiung x86: tsc /rdtscp? / load bareer / queues?
-* PRIO: gcc toolchain
-* PRIO: /dev/tty / function and arrow keys
-
-* PRIO: semaphores/ mutexes
-* PRIO: return value / argv / env
-* PRIO: create/remove pages on demand (sbrk, stack, load prog)
-* PRIO: grow kernel memory!
-
-* PRIO: optimized Mouse & KB processing in seperate task. (Kb all chars and different layouts, arrow keys, ctrl-c etc)
-
-* NETWORKING: tcp/ip stack/ traceroute / arptables / sockets! /
- vbox E1000! (remap) / virtio / NS2000 / ipxe network drivers / laptop acer card
-
-* TODO: check Kernel Stuff Reentrancy? multicpu? interrupt syscall processing? Cleanup syscalls
-* TODO: GCC optimizations (break kernel?) / volatile keyword etc?
-* TODO: gcc-foolos (Porting (ncurses, gcc, binutils, vim, apache...)
-* TODO: why do we provide 2 versions of syscalls (underscore and no underscore?) for newlib (non underscore collide with standard!)
-* TODO: flush open streams on exit as discussed in 7.21.3 : n1570, c11: https://port70.net/~nsz/c/c11/n1570.html#7.21.3
-* TODO: signals
-
-* EXTRA: fallback to pic/pit
-
-* EXTRA: switch to DMA where possible!?
-* EXTRA: Unit Testing
-* EXTRA: GUI / Window Manager (update\_rect, etc..) / double buffering / physical, virtual sizE? virtio ? / Cairo library/ xvfb?
- /forum.osdev.org/viewtopic.php?t=10018&p=64358 / vsync
-* EXTRA: qemu tcg , slower other cpus
-* EXTRA: Crazy & Funny terminal effects while typing (idea)
-* EXTRA: port to arm and berryboot / minicom?
-* EXTRA: port doom/quake/mesa 3d
-* EXTRA: ghc cross compiler / ghc port
-* EXTRA: piper-os
-* EXTRE: matrix desgin. star wars terminal etc..
-
-
-1.GCC & Binutils
-================
-
- * ref: GCC Cross Compiler
- * ref: OS Specific Toolchain
- * ref: Hosted GCC Cross Compiler
-
-2.Porting Newlib
-================
-
- * ref: Porting_Newlib
- * Add fool-os specifics under ../newlib-foolos/newlib/libc/sys/foolos
- * TODO: os specifics diff
- * cd newlib-build
- * ../newlib-foolos/configure --prefix=/usr --target=i686-foolos
- * make all
- * make DESTDIR=${SYSROOT} install (e.g. make DESTDIR=/home/miguel/temp/foolos/ install)
-
-3.Porting Software
-===================
-
- I get sources via: apt-get source zlib , etc..
-
- * ref: Cross Porting Software
-
- * ncurses: ../ncurses-6.1/configure --host=i686-foolos --without-tests
- --with-fallbacks="fool-term" --with-debug --prefix=/usr --with-termlib
-
-
- ../ncurses-6.1/configure --host=i686-foolos --with-fallbacks="fool-term" --prefix=/usr --with-termlib --with-debug
-
- * ncurses-examples: ../ncurses-examples-20180127/configure --host=i686-foolos --prefix=/usr --with-ncurses
- make DESTDIR=/home/miguel/temp/foolos/ install
-
- * vim:
- vim_cv_memcpy_handles_overlap=no vim_cv_bcopy_handles_overlap=no vim_cv_memmove_handles_overlap=no vim_cv_stat_ignores_slash=no vim_cv_getcwd_broken=no vim_cv_tty_group=world vim_cv_tty_mode=0620 vim_cv_tgetent=zero vim_cv_terminfo=no vim_cv_toupper_broken=no ./configure --host=i686-foolos --prefix=/usr --with-tlib=tinfo
-
- set CFLAGS="-ggdb -O0" to get debug symbols
-
- * zlib-1.2.8 (via apt-get)
- CC=i686-foolos-gcc ./configure --prefix=/usr
-
- * libpng1.6-1.6.28 (via apt-get)
-
- inside the dir:
-
- 1) add -foolos* to config.sub
- 2) ./configure --prefix=/usr --host=i686-foolos
- 3) make
- 4) make DESTDIR=/home/miguel/temp/foolos/ install
-
-
-Content
-=======
-
-Third party software and content used some of which is:
-(I have likely forgotten most of credit)
-
-grub
-
-newlib
-ncurses
-ncurses-examples
-vim
-
-envypn fonts
-solarized colors
-
-
-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 <m.i@gmx.at> 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.
-
-NOTES
-=====
-
-extract lines and comments (Does not work in all cases)
-
-$ pcregrep -M '(\/\*(.(?!(\*\/))|\n)*.*)|(^ *$)|(^ *\/\/)'
+<https://www.idziorek.net/blog/Fool-Operating-System/>.