docs: removed '.wiki' directory from git
This commit is contained in:
parent
e9cd7c63b6
commit
148dfe5a62
|
@ -1,45 +0,0 @@
|
||||||
# Build instructions
|
|
||||||
**DISCLAIMER: To build this project you need a linux system (WSL could work for windows users, but I haven't tested it)**
|
|
||||||
|
|
||||||
|
|
||||||
First you need to clone the repository:
|
|
||||||
|
|
||||||
`git clone https://codeberg.org/antifallobst/noxos/`
|
|
||||||
|
|
||||||
then there are a few tools required, that need to be installed:
|
|
||||||
* **gcc** - compiler
|
|
||||||
* **ld** - linker
|
|
||||||
* **nasm** - assembler
|
|
||||||
* **cmake** - build system
|
|
||||||
* **xorriso** - ISO creation tools
|
|
||||||
* **qemu** - emulator
|
|
||||||
|
|
||||||
There is a shell script to setup the workspace and compile.
|
|
||||||
Just run it using the following commands:
|
|
||||||
```bash
|
|
||||||
cd noxos
|
|
||||||
./build.sh
|
|
||||||
```
|
|
||||||
If the Bootloader (Limine ([github](https://github.com/limine-bootloader/limine))) isn't downloaded yet, the script will download it.
|
|
||||||
|
|
||||||
The final ISO file will be written to the *build* directory.
|
|
||||||
|
|
||||||
To launch the ISO, run the `run.sh` script.
|
|
||||||
|
|
||||||
# UEFI Emulation
|
|
||||||
To emulate an UEFI system, you need to install the `ovmf` package.
|
|
||||||
Then you can do `./run.sh uefi` to start qemu with uefi instead of bios.
|
|
||||||
|
|
||||||
# Debugging
|
|
||||||
## Logs
|
|
||||||
When running through the script, qemu is configured to write the kernels logs to *STDOUT* and a file called *noxos.log*.
|
|
||||||
## GDB
|
|
||||||
You can connect GDB to qemu.
|
|
||||||
To achieve this, run `./run.sh debug`.
|
|
||||||
QEMU will wait until you connect GDB to it as a 'remote' target on `localhost:1234`.
|
|
||||||
```bash
|
|
||||||
gdb build/cmake/kernel/kernel
|
|
||||||
target remote localhost:1234
|
|
||||||
c
|
|
||||||
```
|
|
||||||
(note, that the last to commands have to be 'executed' in gdb not in your shell)
|
|
|
@ -1,61 +0,0 @@
|
||||||
# Code Style
|
|
||||||
## Naming conventions
|
|
||||||
- **structs** are suffixed with **_T**
|
|
||||||
- **typedefs** are suffixed with **_t**
|
|
||||||
- **enums** are suffixed with **_E**
|
|
||||||
- **global** variables are prefixed with **g_**
|
|
||||||
|
|
||||||
Everything is **snake_case**.
|
|
||||||
|
|
||||||
## Code readability
|
|
||||||
To make the code as readable and self explaining as possible, there are a few patterns that should be used.
|
|
||||||
|
|
||||||
### Avoid abbreviations
|
|
||||||
Give your variables, functions, etc. meaningfull names.
|
|
||||||
The times of 80char wide screens are over, feel free to use that space :D
|
|
||||||
|
|
||||||
Example: `sym_at_idx` -> `get_symbol_at_index`
|
|
||||||
|
|
||||||
But you're not forced to (anything) write out everything.
|
|
||||||
For example the **Interrupt Descriptor Table** is simply referred to as **idt** (this abbreviation is btw standard).
|
|
||||||
|
|
||||||
### Avoid indentation nesting
|
|
||||||
In a perfect codebase, the maximum indention level would be 3.
|
|
||||||
The goal of NoxOS is not to be a perfect codebase, but please avoid huge indention nesting.
|
|
||||||
To achieve this, you can break parts into extra functions and/or use the early return pattern.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```c
|
|
||||||
bool likes_pigs (void* a) {
|
|
||||||
if (a != NULL) {
|
|
||||||
if (a == 0xACAB) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
->
|
|
||||||
```c
|
|
||||||
bool likes_pigs (void* a) {
|
|
||||||
if (a != NULL) { return true; }
|
|
||||||
if (a != 0xACAB) { return true; }
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### align declarations
|
|
||||||
|
|
||||||
Please align declarations, definitions, etc like in the example:
|
|
||||||
```c
|
|
||||||
char am_i_a_variable = '?';
|
|
||||||
uint64_t number = 0;
|
|
||||||
bool i_waste_bits = true;
|
|
||||||
```
|
|
||||||
|
|
||||||
### namespaces
|
|
||||||
Unlike C++ C has no namespaces.
|
|
||||||
To achieve the goal of namespaces, please prefix your functions, structs, etc. with the "namespace" they are in.
|
|
||||||
|
|
||||||
Example: `out_byte` -> `io_out_byte`
|
|
|
@ -1,47 +0,0 @@
|
||||||
Welcome :D
|
|
||||||
|
|
||||||
Nice, that you're interested in contributing.
|
|
||||||
|
|
||||||
There are several ways to contribute to NoxOS:
|
|
||||||
- Write code
|
|
||||||
- Maintain Documentation
|
|
||||||
- Typos
|
|
||||||
- Grammar
|
|
||||||
- Is the documentation up to date?
|
|
||||||
- Plan stuff (e.g. syscalls)
|
|
||||||
- open Issues
|
|
||||||
|
|
||||||
# Before Contribution
|
|
||||||
Please read the [Code-Style wiki entry](https://codeberg.org/antifallobst/noxos/wiki/Code-Style) before you start to contribute.
|
|
||||||
|
|
||||||
For workspace setup and build instructions look at [this wiki entry](https://codeberg.org/antifallobst/noxos/wiki/Build-instructions).
|
|
||||||
|
|
||||||
**We don't accept any Assholes! If you're a fascist, racist, or discriminate others for anything, go fuck yourself.**
|
|
||||||
|
|
||||||
# Contributing
|
|
||||||
|
|
||||||
When you contribute code, please [document](https://codeberg.org/antifallobst/noxos/wiki/Kernel-documentation) it.
|
|
||||||
You don't have to (and you also shouldn't) write romans, but a few lines for every in a header exposed function, struct etc. help others (and yourself) understanding how to interact with your code.
|
|
||||||
|
|
||||||
|
|
||||||
## What dafuq is ...?
|
|
||||||
OS development can be quite complicated/confusing. That's Ok.
|
|
||||||
Stuff like Paging can be really weird, if you don't have osdev experience.
|
|
||||||
But there are learning resources and places, where you can ask questions.
|
|
||||||
|
|
||||||
**A small overview about such resources and places:**
|
|
||||||
- The [osdev wiki](https://wiki.osdev.org) is like wikipedia - just for hobby os developers.
|
|
||||||
- The [osdev subreddit](https://reddit.com/r/osdev) is a great place to ask questions and share knowledge
|
|
||||||
- Intel's [developer manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html) is a more advanced but kinda precise information source
|
|
||||||
|
|
||||||
Also feel free to join the [NoxOS Matrix space](https://matrix.to/#/#noxos:systemausfall.org),
|
|
||||||
where you can chat with other NoxOS devs and ask questions.
|
|
||||||
**But Stay Respectful, Or We `sudo rm -rf /` Your PC ;)**
|
|
||||||
|
|
||||||
# Where to start?
|
|
||||||
|
|
||||||
Get the codebase and play a bit around with it.
|
|
||||||
Try to understand basic concepts of the codebase, the [documentation](https://codeberg.org/antifallobst/noxos/wiki/Kernel-documentation) will help you.
|
|
||||||
After that you can search the [Issues](https://codeberg.org/antifallobst/noxos/issues) for the `Good First Issue` label,
|
|
||||||
to find easy improvements, etc. that you can try to implement.
|
|
||||||
Another option is to ask in the [Matrix Space](https://matrix.to/#/#noxos:systemausfall.org).
|
|
|
@ -1,11 +0,0 @@
|
||||||
**DISCLAIMER: We don't accept any Assholes! If you're a fascist, racist, or discriminate others for anything, go fuck yourself.** If not, welcome :)
|
|
||||||
|
|
||||||
The wiki on codeberg is probably less frequently updated, than the `.wiki` directory in the codebase.
|
|
||||||
|
|
||||||
Wiki Content:
|
|
||||||
|
|
||||||
* [Contribution guide](https://codeberg.org/antifallobst/noxos/wiki/Contribution-guide)
|
|
||||||
* [Build instructions](https://codeberg.org/antifallobst/noxos/wiki/Build-instructions)
|
|
||||||
* [Code Style](https://codeberg.org/antifallobst/noxos/wiki/Code-Style)
|
|
||||||
* [Kernel Documentation](https://codeberg.org/antifallobst/noxos/wiki/Kernel-documentation)
|
|
||||||
* [Project Roadmap](https://codeberg.org/antifallobst/noxos/wiki/Roadmap)
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,29 +0,0 @@
|
||||||
# Roadmap
|
|
||||||
- [x] Bootable system
|
|
||||||
- [x] Logger
|
|
||||||
- [X] Page frame manager
|
|
||||||
- [X] Interrupts
|
|
||||||
- [X] Page maps
|
|
||||||
- [X] Heap
|
|
||||||
- [X] Format strings
|
|
||||||
- [X] Graphics Renderer
|
|
||||||
- [X] Text
|
|
||||||
- [X] Double buffering
|
|
||||||
- [X] Buffer requests
|
|
||||||
- [X] Panic Screen
|
|
||||||
- [X] Register dump
|
|
||||||
- [X] Stack tracing
|
|
||||||
- [X] Scheduler
|
|
||||||
- [X] (Kernel) Threads
|
|
||||||
- [X] Ramdisk
|
|
||||||
- [X] USTAR
|
|
||||||
- [X] RAMFS
|
|
||||||
- [X] VFS
|
|
||||||
- [X] ELF loading
|
|
||||||
- [X] Processes
|
|
||||||
- [ ] Keyboard input (ps/2 int)
|
|
||||||
- [ ] Shell
|
|
||||||
- [ ] JSON parser for system config
|
|
||||||
- [ ] FAT32
|
|
||||||
- [ ] Text Editor
|
|
||||||
- [ ] TCC
|
|
Loading…
Reference in New Issue