* vi: ft=markdown Welcome to FoolOS ================= Copyright M.Idziorek 2014 Disclaimer ---------- This is a simple and useless "operating system", with very basic features, sorry. It is the fruit of my fundamental explorations of the 32-bit protected mode, interrupt handling, memory management and some other things. ![Screenshot of FoolOS](/screenshots/foolos.png?raw=true "FoolOs Kernel") NOTES ===== cli; disable interrupts lgdt lidt sti; enable interrupts Linux Startup x86 ================= 1. arch/x86/boot/header.S Contains the header and linux 16 bit code. This code should be entered with a bootloader at the address specified within the header (as _start) which will put us at 'start_of_setup' Direct loading will put us at 'start2' at the very start which will show an error message If everyhing goes right we will enter the 16-bit real mode C module with: call main ; should not return 2. arch/x86/boot/main.c void main(void) will do some checks and detections (cpu,mem,..) and invoke: go_to_protected_mode(); 3. arch/x86/boot/pm.c go_to_protected_mode() - will disable interrupts and set up the initial idt and gdt descriptor tables before calling: protected_mode_jump() and passing the address of code32_start. 4. arch/x86/boot/pmjump.S back in assembly-world the actual transition is made inside 'protected_mode_jump' and we move on to 'in_pm32' where the data segment is set up and we jmpl to the 32-bit entry point of the kernel. 5. arch/x86/kernel/head32.c (assumption!?) void i386_start_kernel(void) 6. init/main.c start_kernel(void) setup_arch()!! Interrupts ========== arch/x86/include/asm/irq_vectors.h each entry is 8 bytes ISA interrupts: 0x30 0x0000 0x0000 0x0000 0x0000 0x31 0x32 .. 0x3f TODOS ===== * study LINUX KERNEL * GNU HURD * MINIX * FreeBSD etc. NETWORK ======= look at following linux drivers: * e1000 notes ===== * posix - minimal set of function calls! * distributed os * caches L1,L2,L3 * controller -> ide inteface of device * probe memory! * a20~ wrap * ssd card reader * cobol fortran algol? compilers? * quotation: ontogeny nrecapitulates phylogeny * own simple sell check: apertium? clang freebsd user-mode-linux REFERENCES ========== http://www.brokenthorn.com/Resources/OSDev17.html