99 lines
3.7 KiB
Markdown
99 lines
3.7 KiB
Markdown
# 🦀 Elyz
|
||
|
||
---
|
||
|
||
## 📂 Структура проекта
|
||
|
||
* `kernel/` — Исходный код ядра на.
|
||
* `limine/` — Файлы загрузчика Limine.
|
||
* `ovmf/` — Файлы прошивки для поддержки загрузки через UEFI.
|
||
* `limine.conf` — Конфигурация меню загрузки.
|
||
* `GNUmakefile` — Основной сценарий сборки и запуска.
|
||
|
||
---
|
||
|
||
## 🛠 Требования
|
||
|
||
Для работы со сборкой понадобятся следующие инструменты:
|
||
|
||
| Инструмент | Описание |
|
||
| :--- | :--- |
|
||
| **GNU Make** | Утилита для сборки (`make`). |
|
||
| **Rust** | Nightly версия, включая `rust-src`. |
|
||
| **xorriso** | Необходим для создания загрузочных ISO-образов. |
|
||
| **sgdisk & mtools** | Необходимы для создания образов жесткого диска (HDD/USB). |
|
||
| **QEMU** | Эмулятор для тестирования ядра. |
|
||
|
||
---
|
||
|
||
## Запуск и отладка
|
||
|
||
* **Склонируйте репозиторий**
|
||
```bash
|
||
git clone https://git.inotfail.com/INotFail/Elyz.git
|
||
cd elyz
|
||
```
|
||
|
||
* **Сборка ядра**
|
||
```bash
|
||
cd kernel
|
||
make all
|
||
cd ../
|
||
```
|
||
|
||
* **Запуск (основные способы)**
|
||
```bash
|
||
make run-bios
|
||
```
|
||
или
|
||
```bash
|
||
make run
|
||
```
|
||
или
|
||
```bash
|
||
make run-uefi
|
||
```
|
||
|
||
|
||
`make all` скомпилирует ядро (из kernel/), а затем сгенерирует загрузочный ISO-образ.
|
||
|
||
`make run` соберет ядро и загрузочный ISO-образ (эквивалент команды make all), а затем запустит его с помощью команды qemu (если установлено).
|
||
|
||
`make all-hdd` скомпилирует ядро, а затем сгенерирует исходный образ, подходящий для записи на USB-накопитель или жесткий диск/SSD.
|
||
|
||
`make run-hdd` соберет ядро и необработанный образ жесткого диска (эквивалентно созданию образа для всех жестких дисков), а затем запустит его с помощью qemu (если установлено).
|
||
|
||
`run-uefi` и `run-hdd-uefi` цели эквивалентны своим нецелевым `-uefi` аналогам, за исключением того, что они загружаются `qemu` с использованием прошивки, совместимой с UEFI.
|
||
|
||
|
||
## 🏗 Поддерживаемые архитектуры
|
||
|
||
Переменная `KARCH` определяет целевую архитектуру. По умолчанию используется `x86_64`.
|
||
|
||
Вы можете изменить архитектуру при вызове `make`:
|
||
```bash
|
||
make run KARCH=aarch64
|
||
```
|
||
|
||
**Доступные варианты:**
|
||
* `x86_64` (Default)
|
||
* `aarch64`
|
||
* `riscv64`
|
||
* `loongarch64`
|
||
|
||
> Для архитектур, отличных от x86, потребуется настройка соответствующих целевых платформ в `kernel/rust-toolchain.toml`.
|
||
|
||
---
|
||
|
||
## 📝 Важное
|
||
|
||
* **Очистка проекта:** Чтобы удалить все артефакты сборки и скомпилированные файлы, выполните:
|
||
```bash
|
||
make clean
|
||
```
|
||
* **Логи:** Ядро выводит данные в консоль QEMU.
|
||
|
||
---
|
||
|
||
**Boot основан на оригинальном шаблоне:** [jasondyoungberg/limine-rust-template](https://github.com/jasondyoungberg/limine-rust-template)
|