Migrated from Rekketstone/cowos
Custom OS from scratch in C
Heavily UNDER DEVELOPMENT
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu).
You'll need a few things:
- LLVM/Clang (default C compiler)
- LLD (linker)
- xorriso (iso creation)
- git
- make
- qemu (for virtual machine)
- LLDB (debugging purposes)
After acquiring those just run make and it'll do everything for you:
makeBy default the kernel is compiled with debug symbols, if you would like to avoid this, you can simply override the CFLAGS:
cd kernel/ # it is recommended to go to the actual directory yourself
make CFLAGS="-O3 -pipe"
llvm-strip --strip-all ./kernel/bin/cowos # strip everything
cd .. # return to root
makeEventually in the future this will be changed to be something much more convienent, however for now the inclusion of debug symbols is nessacary for development.
There is now a script to automate running cowos, although it's quite simple right now, this is important for the future as cowos will eventually require a root partition and other things as it grows to userspace slowly. To run, simply run this in the root of the repository:
make run # This will require qemuFor developers, running with the DEBUG flag will launch lldb with qemu to help debug issues with cowos:
make DEBUG=1 runif you do not like LLDB, I included a script called run-gdb in the scripts/ directory for the gdb fans out there. I personally want to keep this project as gnu-free as possible, since I want cowos to not be GNU/cowos, I want it to just be cowos. And this means that I will even avoid anything as simple as the debugger being used to be non-GNU. Run in the root like so:
./scripts/run-gdbIt will automatically exit qemu if gdb is exited, and by default gdb will run in tui mode.
- Limine: modern, advanced, portable, multiprotocol bootloader and boot manager.
- micl: random guy on the interweb in the LHL discord server gave me a free vga driver to use lol