README.md (2201B)
1 **Migrated from Rekketstone/cowos** 2 3 # cowos 4 Custom OS from scratch in C 5 6 # Notes 7 **Heavily UNDER DEVELOPMENT** 8 9 I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu). 10 11 ## BUILDING 12 You'll need a few things: 13 - LLVM/Clang (default C compiler) 14 - LLD (linker) 15 - xorriso (iso creation) 16 - git 17 - make 18 19 ### OPTIONAL: 20 - qemu (for virtual machine) 21 - LLDB (debugging purposes) 22 23 After acquiring those just run make and it'll do everything for you: 24 ```bash 25 make 26 ``` 27 28 By default the kernel is compiled with debug symbols, if you would like to avoid this, you can simply override the CFLAGS: 29 ```bash 30 cd kernel/ # it is recommended to go to the actual directory yourself 31 make CFLAGS="-O3 -pipe" 32 llvm-strip --strip-all ./kernel/bin/cowos # strip everything 33 cd .. # return to root 34 make 35 ``` 36 Eventually 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. 37 38 ## RUNNING 39 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: 40 ```bash 41 make run # This will require qemu 42 ``` 43 44 For developers, running with the DEBUG flag will launch lldb with qemu to help debug issues with cowos: 45 ```bash 46 make DEBUG=1 run 47 ``` 48 if 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: 49 ```bash 50 ./scripts/run-gdb 51 ``` 52 It will automatically exit qemu if gdb is exited, and by default gdb will run in tui mode. 53 54 # Credits 55 - [Limine](https://github.com/limine-bootloader/limine): modern, advanced, portable, multiprotocol bootloader and boot manager. 56 57 ## People 58 - [micl](https://micl.dev): random guy on the interweb in the LHL discord server gave me a free vga driver to use lol