Experimental OS base on
Goal: Get into the user space and run the syscall
Learn in this project:
- Kernel structure
- Memory layout
- Interrupt and Trap
- Context and context switch
- Kernel and User space
- Framebuffer rendering
- Syscall
- install toolchain
./init.sh
- build user programe
cd user
make
- build and run kernel
cd os
cargo clean && cargo krun
TODO LIST && Known BUG:
-
-
Convert TSS table into implementation with memory allocator
-
-
- Fix render overflow
-
- Make textrenderer support cursor
-
- Package TextWriter as editor and console
- Document it!
- Editor
- Console
- Support Del?
- Package TextWriter as editor and console
-
- Setup kernel process
-
-
print
andprintln
not work, need to check framebuffer and textwritter
-
-
- clean warning
Note.
- Leave the Qemu: ctrl+a x (-serial mon:stdio)
- keyboard interrupt only work on graphic mode currently
- TextWriter: Support console like input
- Make cargo ktest work
- Implement APIC (current use 8259 PIC)
- Learn E820 (memory controller?)
- Waiting for new version of osdev/bootloader and rewrite
[2022-10-30]
- BUGFIX: Context switch will be arbitrary crushed, due to idt overflow
Add a guard stack when step up tss table
- BUGFIX -- STDIN: children process framebuffer render not work
Add framebuffer memory_set copy into
memory.page.mod.kernel_mapped_new_page_table
- BUGFIX: framebuffer writer will crash at last byte
Fix cursor render
- BUGFIX: Print key typing in framebuffer
- MODIFY: user_shell improve
[2022-10-29]
- Implement process and context switch
- BUG: STDIN
[2022-10-27]
- Error: syscall jmp to 0x0H in user mode
[2022-09-28]
- enter user mode
- syscall/sysretq
[2022-09-26]
- Setup syscall software interrupt
- Learn on ext2 filesystem
[2022-08-31]
- Finished async implement
[2022-08-25]
- Finished keyboard interrupt
- Update TextEditor: Support cursor, Bugfix
[2022-08-24]
- Solve ireqt double fault exception
[2022-08-23]
- Setup interrupt handler: breakpoint, doubl_fault
[2022-08-22]
- Modulize unittest, qemu, panic handler
- Fix ktest error: rust-lang/cargo#7359
[2022-08-21]
- Change module name: render -> renderer
- Make document for renderer
- Append features: change fore/background color for TextWriter
[2022-08-20]
- Due to make the screen output interface consistent on both bios and uefi, VGA_Buffer no longer to use.
- Package the screen print interface from bootloader logger as library/render.
[2022-08-19]
- Initialization this project.
- bootloader Config setting: https://docs.rs/bootloader/latest/bootloader/struct.Config.html#structfield.kernel_stack_size