mirror of
https://github.com/EnderIce2/Fennix.git
synced 2025-05-25 22:14:34 +00:00
docs: update build instructions
Signed-off-by: EnderIce2 <enderice2@protonmail.com>
This commit is contained in:
parent
27ad61fa17
commit
1c842ef3d1
@ -19,3 +19,8 @@ indent_size = 2
|
|||||||
[{CMakeLists.txt,*.cmake}]
|
[{CMakeLists.txt,*.cmake}]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
indent_style = space
|
indent_style = space
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
72
INSTALL.md
Normal file
72
INSTALL.md
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
# 🚀 Installation Guide
|
||||||
|
|
||||||
|
This guide will help you install Fennix on your system.
|
||||||
|
|
||||||
|
## 🛠️ Preparing the Environment
|
||||||
|
|
||||||
|
There are two ways to build the project:
|
||||||
|
|
||||||
|
1. **🐳 Use Dev Container (Recommended)**
|
||||||
|
* This is the easiest way to prepare the environment for building the project. But firstly, you need to install [Docker](https://docs.docker.com/get-docker/) and [Visual Studio Code](https://code.visualstudio.com/).
|
||||||
|
* After installing Docker and Visual Studio Code, you can open the project in Visual Studio Code and click on the "Reopen in Container" button.
|
||||||
|
* This will open the project in a Dev Container with all the required tools installed.
|
||||||
|
* If you encounter errors while the Dev Container is building, ensure the following are correctly configured:
|
||||||
|
* `/tmp/.X11-unix`
|
||||||
|
* Environment variable `XAUTHORITY`
|
||||||
|
* `/run/user/1000/pulse/native`
|
||||||
|
* **Note:** These configurations are only necessary if you plan to use QEMU inside the container.
|
||||||
|
2. **💻 Build the Project Locally**
|
||||||
|
* The instructions below will guide you through the process of building the project locally.
|
||||||
|
|
||||||
|
**NOTE:** You MUST have `autoconf 2.69` and `automake 1.15.1` versions installed on your system. A complete list of dependencies can be found in the [.devcontainer/Dockerfile](.devcontainer/Dockerfile) file.
|
||||||
|
|
||||||
|
Before building the project, you need to build the cross-compiler toolchain and QEMU.
|
||||||
|
You can do this by running the following command:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make setup
|
||||||
|
```
|
||||||
|
|
||||||
|
This will clone, patch, and build the required tools for you.
|
||||||
|
|
||||||
|
Alternatively, if you wish to skip building QEMU, you can run `make setup-no-qemu`.
|
||||||
|
However, in this case, you will need to manually specify the path to the QEMU binary in the `config.mk` file.
|
||||||
|
|
||||||
|
## 🏗️ Building the Project
|
||||||
|
|
||||||
|
To build the project, run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make build
|
||||||
|
```
|
||||||
|
|
||||||
|
This will build the kernel, userspace, and drivers. The resulting ISO image will be `Fennix.iso`.
|
||||||
|
|
||||||
|
## 🚀 Running the OS
|
||||||
|
|
||||||
|
To run the OS, execute:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make run
|
||||||
|
```
|
||||||
|
|
||||||
|
The `run` target will automatically build the project if it hasn't been built yet.
|
||||||
|
|
||||||
|
## ⚙️ Additional Configuration
|
||||||
|
|
||||||
|
You can customize the project by editing the `config.mk` file.
|
||||||
|
|
||||||
|
## 🧪 Debugging
|
||||||
|
|
||||||
|
If you use Visual Studio Code, you can press `F5` to start debugging the OS.
|
||||||
|
The configuration is already set up for you.
|
||||||
|
|
||||||
|
Alternatively, you can run the following command to start debugging:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make debug
|
||||||
|
```
|
||||||
|
|
||||||
|
This will start QEMU in debug mode, allowing you to connect to it using GDB.
|
||||||
|
|
||||||
|
The GDB FIFO file is located at `/tmp/gdb-fennix`.
|
5
Makefile
5
Makefile
@ -111,6 +111,9 @@ setup:
|
|||||||
$(MAKE) prepare
|
$(MAKE) prepare
|
||||||
$(MAKE) tools
|
$(MAKE) tools
|
||||||
|
|
||||||
|
setup-no-qemu:
|
||||||
|
$(MAKE) --quiet -C tools ci
|
||||||
|
|
||||||
build: build_kernel build_bootloader build_userspace build_drivers build_image
|
build: build_kernel build_bootloader build_userspace build_drivers build_image
|
||||||
|
|
||||||
dump:
|
dump:
|
||||||
@ -313,6 +316,8 @@ endif
|
|||||||
|
|
||||||
vscode_debug: build_kernel build_userspace build_drivers build_image vscode_debug_only
|
vscode_debug: build_kernel build_userspace build_drivers build_image vscode_debug_only
|
||||||
|
|
||||||
|
debug: vscode_debug
|
||||||
|
|
||||||
qemu: qemu_vdisk clean_logs
|
qemu: qemu_vdisk clean_logs
|
||||||
touch serial.log
|
touch serial.log
|
||||||
# x-terminal-emulator -e tail -f serial.log &
|
# x-terminal-emulator -e tail -f serial.log &
|
||||||
|
87
README.md
87
README.md
@ -5,9 +5,9 @@
|
|||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/EnderIce2/Fennix">
|
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/EnderIce2/Fennix">
|
||||||
<img alt="GitHub Actions Workflow Status" src="https://img.shields.io/github/actions/workflow/status/EnderIce2/Fennix/makefile.yml">
|
<img alt="GitHub Actions Workflow Status" src="https://img.shields.io/github/actions/workflow/status/EnderIce2/Fennix/makefile.yml">
|
||||||
<img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/m/EnderIce2/Fennix">
|
<img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/m/EnderIce2/Fennix">
|
||||||
<img alt="GitHub License" src="https://img.shields.io/github/license/EnderIce2/Fennix">
|
<img alt="GitHub License" src="https://img.shields.io/github/license/EnderIce2/Fennix">
|
||||||
</p>
|
</p>
|
||||||
</p>
|
</p>
|
||||||
@ -24,15 +24,15 @@
|
|||||||
## Features
|
## Features
|
||||||
|
|
||||||
- 🧩 Flexible and modular
|
- 🧩 Flexible and modular
|
||||||
- You can easily choose the components you want to include in the kernel
|
- You can easily choose the components you want to include in the kernel
|
||||||
- 🎛️ Compatible with multiple platforms
|
- 🎛️ Compatible with multiple platforms
|
||||||
- Supports i386, AMD64 and AArch64 platforms
|
- Supports i386, AMD64 and AArch64 platforms
|
||||||
- 📦 Support for different operating system binaries
|
- 📦 Support for different operating system binaries
|
||||||
- You can run Linux and Windows binaries
|
- You can run Linux and Windows binaries
|
||||||
- 🖨️ Driver support
|
- 🖨️ Driver support
|
||||||
- Supports a variety of drivers for different hardware components
|
- Supports a variety of drivers for different hardware components
|
||||||
- 📖 Detailed documentation
|
- 📖 Detailed documentation
|
||||||
- The project is well-documented using Doxygen
|
- The project is well-documented using Doxygen
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> Some features are still in development and may not be fully functional.
|
> Some features are still in development and may not be fully functional.
|
||||||
@ -43,75 +43,14 @@
|
|||||||
|
|
||||||
You can download the development ISO image from the [Actions](https://github.com/EnderIce2/Fennix/actions/workflows/makefile.yml) tab on the GitHub repository.
|
You can download the development ISO image from the [Actions](https://github.com/EnderIce2/Fennix/actions/workflows/makefile.yml) tab on the GitHub repository.
|
||||||
|
|
||||||
|
### 🛠️ Compile from Source
|
||||||
|
|
||||||
### 🛠️ Prerequisites
|
Check out the [installation guide](INSTALL.md) to compile the project from source.
|
||||||
|
|
||||||
To build the project, you need to have the following tools installed:
|
|
||||||
|
|
||||||
- `make`
|
|
||||||
- `gcc`
|
|
||||||
- `ld`
|
|
||||||
- ... and other standard Unix tools
|
|
||||||
- These can be installed using `build-essential` on Ubuntu or `base-devel` on Arch Linux
|
|
||||||
- `doxygen` (optional)
|
|
||||||
- To generate the documentation
|
|
||||||
|
|
||||||
### 🚀 Installation
|
|
||||||
|
|
||||||
You can install the project by building it from source.
|
|
||||||
|
|
||||||
#### Cloning the Repository
|
|
||||||
|
|
||||||
First, clone the repository using Git:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
git clone https://github.com/EnderIce2/fennix.git
|
|
||||||
cd fennix
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Preparing the Environment
|
|
||||||
|
|
||||||
Before building the project, you need to build the cross-compiler toolchain and QEMU. You can do this by running the following command:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make setup
|
|
||||||
```
|
|
||||||
|
|
||||||
This will clone, patch, and build the required tools for you.
|
|
||||||
|
|
||||||
#### Building the Project
|
|
||||||
|
|
||||||
To build the project, run:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make build
|
|
||||||
```
|
|
||||||
|
|
||||||
This will build the kernel, userspace, and drivers. The iso image will be `Fennix.iso`.
|
|
||||||
|
|
||||||
#### Running the OS
|
|
||||||
|
|
||||||
You can run the OS using QEMU. First, build the project, then run:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make run
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Additional Configuration
|
|
||||||
|
|
||||||
You can configure the project by editing the `config.mk` file.
|
|
||||||
|
|
||||||
## 🧪 Debugging
|
|
||||||
|
|
||||||
If you use Visual Studio Code, you can press `F5` to start debugging the OS.
|
|
||||||
The configuration is already set up for you.
|
|
||||||
|
|
||||||
> [!TIP]
|
|
||||||
> Make sure you built the project at least once before debugging.
|
|
||||||
|
|
||||||
## 📚 Documentation
|
## 📚 Documentation
|
||||||
|
|
||||||
The project documentation is generated using Doxygen.
|
The current documentation is available [here](https://fennix.enderice2.com/docs/index.html).
|
||||||
|
|
||||||
To generate the documentation, run:
|
To generate the documentation, run:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -122,13 +61,13 @@ The documentation will be available in the `doxygen-doc/docs` directory.
|
|||||||
|
|
||||||
## 👨💻 Contributing
|
## 👨💻 Contributing
|
||||||
|
|
||||||
Contributions are welcome!
|
Contributions are welcome!
|
||||||
Please read the [CONTRIBUTING.md](CONTRIBUTING.md) file for guidelines on how to contribute to this project.
|
Please read the [CONTRIBUTING.md](CONTRIBUTING.md) file for guidelines on how to contribute to this project.
|
||||||
|
|
||||||
### Contributors
|
### Contributors
|
||||||
|
|
||||||
<a href="https://github.com/EnderIce2/Fennix/graphs/contributors">
|
<a href="https://github.com/EnderIce2/Fennix/graphs/contributors">
|
||||||
<img src="https://contrib.rocks/image?repo=EnderIce2/Fennix" />
|
<img src="https://contrib.rocks/image?repo=EnderIce2/Fennix" />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
## 📃 License
|
## 📃 License
|
||||||
|
Loading…
x
Reference in New Issue
Block a user