this is a very poor attempt at making an operating system, you should take everything that i did here as a what not to do.
- an original project, most of the kernel wouldn't even work without me referencing other osdev projects.
you need:
- git
- make
- qemu
- x86_64-elf-gcc
- x86_64-riria-gcc (this one is not publicly available, it's on my self-hosted git repo)
to build the kernel just run
make run
that should get it working... in the event that it doesn't, use sync, it forces userspace/initramfs to be rebuilt
make sync run
it is also recommended to use clean as well, the compilation will happen in /tmp (which i hoped you set up to be ram)
make clean sync run
kernel is compiled and tested with Arch Linux (btw), so if youre using something similar, it should work :D
- gdt/idt/irq/isr
- GDT INIT... OK! /j
- as far as i can tell, these part of the CPU code is more or less safe now.
- syscall
- exit, open, close, read, write, mmap, unmap, get_thread_id, write_fs_base
- apparently this is enough to get a DOOM port running, so there's that.
- pmm + vmm + paging
- pmm, vmm and the paging are mostly based off Arikoto's, which are then modified to work with this kernel
- malloc (heap)
- we have kmalloc, kmalloc_phys and kfree
- vfs
- devfs, tarfs
- open, close, read, write, seek, mmap, exists
- PCI
- ac97 audio driver which somewhat works
- scheduling
- super basic singly linked list round robin scheduling, good enough.
- program execution
- programs now run (somewhat) properly in userspace now :D
- proper libc
- riria's userspace uses mlibc as it's libc, pretty cool!
- tooling
- binutils and gcc has been ported, we use these now to compile userspace applications.
- filesystem
- ext2 would be nice to have
- pipe would be nice to have
- multithreading
- there is no support for multi-core
- syscalls
- lots of syscalls are still not implemented, but basic stuff works mostly fine.
- scheduling/process
- it would be nice to have a multiple list for waiting/ready/reap processes.
- a lot of the code written was hacked in, i still dont like it.
- stability
there is some weird bug with userspace shell'sfixed (i think), apparently my IRQ_OFF/RES/ON implementation was wrong and so theres race condition everywhere, userspace seems to be a lot more stable now :Dplaycommand, it detects stack smashing a few seconds in, dunno what it was.
- programs
- it would be nice to have more stuff ported in to the userspace, maybe one day we will have a desktop enviroment :D (a wm would be cool)
- process
- forking
... and thousand other stuff that i don't remember and know yet.
- [Limine] - the x86_64 branch uses Limine as it's bootloader, makes everything much easier
- [Flanterm] - this is what we used for the /dev/fb0 console output
- [mlibc] - quite possibly the easiest libc to port ever
ISC License