2022-07-21 21:59:23 +03:00
|
|
|
|
# rockOS
|
|
|
|
|
Welcome to rockOS project, a hobby OS that aims to run rogue and nethack.
|
|
|
|
|
|
|
|
|
|
## Currently implemented
|
|
|
|
|
- GDT
|
|
|
|
|
- IDT
|
|
|
|
|
- PIC initialization
|
2022-07-22 17:50:10 +03:00
|
|
|
|
- PIT timer
|
|
|
|
|
- Keyboard driver
|
2022-07-25 02:09:15 +03:00
|
|
|
|
- Paging and Kheap
|
2022-07-22 17:50:10 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
Just grab the latest ISO from the releases and run it on a virtual machine
|
|
|
|
|
such as QEMU or Virtualbox, bare-metal not tested.
|
|
|
|
|
|
|
|
|
|
## Build
|
|
|
|
|
### Dependencies
|
|
|
|
|
- a decent compiler such as gcc or clang
|
|
|
|
|
- grub2 (if under GNU/Linux)
|
|
|
|
|
- xorriso
|
|
|
|
|
- make
|
2022-07-30 17:55:30 +03:00
|
|
|
|
- tar
|
|
|
|
|
### Dependencies for compiling toolchain
|
|
|
|
|
- wget/curl
|
2022-07-22 17:50:10 +03:00
|
|
|
|
|
|
|
|
|
If it is your first time building, you need to compile the toolchain first.
|
|
|
|
|
For that, you just need to run build-toolchain.sh, which will download binutils,
|
|
|
|
|
gcc, grub if youre on macOS, and then compile them to $HOME/opt/cross-i686 by default
|
|
|
|
|
which can be changed from the prompt.
|
|
|
|
|
|
|
|
|
|
After you compiled the toolchain and added $PREFIX/bin to your PATH as instructed by the script,
|
|
|
|
|
you can run qemu.sh to compile and open the OS on QEMU or iso.sh to just generate the ISO.
|
2022-07-21 21:59:23 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Credits
|
|
|
|
|
- Furkan Mudanyalı
|
|
|
|
|
- Uko Kokņevičs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Acknowledgements
|
2022-07-22 17:50:10 +03:00
|
|
|
|
- osdev.org community for huge documentation on OS Development
|
2022-07-21 21:59:23 +03:00
|
|
|
|
- musl for libc implementation
|
2022-07-25 02:09:15 +03:00
|
|
|
|
- James Molloy for his paging and kheap tutorial
|
|
|
|
|
- Free Software Foundation for multiboot specification
|
2022-07-21 21:59:23 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## License
|
2022-07-30 17:55:30 +03:00
|
|
|
|
This project is licensed under GPLv3.0 or later.
|