Skip to content

singl3focus/xenon-os

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Xenon-OS

Xenon-OS — это проект операционной системы с нуля, созданный в учебных и эксперементальных целях.

Основные особенности

Проект подразумевает поэтапное расширение функционала, что позволит внедрять уникальные особенности и улучшения по мере углубления знаний в области разработки ОС. /

...

Project structure

  1. Корневая директория
  • Makefile, make.sh, make_clear.sh: Скрипты сборки и управления проектом
  • README.md: Документация верхнего уровня
  1. Архитектурно-зависимый код (arch/i386/)
arch
└── i386
    ├── boot.S    - Точка входа (ассемблерная загрузка)
    ├── crti.S    - Начало CRT (C Runtime)
    ├── crtn.S    - Окончание CRT
    ├── io.S      - Низкоуровневые операции ввода/вывода
    ├── linker.ld - Скрипт линковщика (расположение секций)
    ├── tty.c     - Драйвер текстового терминала
    └── vga.h     - Заголовок для работы с видеобуфером
  • Позволяет поддерживать несколько архитектур (x86, ARM, RISC-V). При добавлении новой архитектуры просто создаёте аналогичную директорию.
  1. Конфигурации (configs/)
configs
└── grub.cfg - Конфигурация загрузчика GRUB
  • Отделяет конфигурацию от кода, упрощает управление разными средами (debug/release).
  1. Документация (docs/)
docs
├── project.md - Общее описание проекта
├── tech.md    - Технические детали реализации
└── tools.md   - Инструменты разработки
  • Соблюдает принцип разделения кода и документации.
  1. Драйверы устройств (drivers/)
drivers
├── io.h      - Интерфейс ввода/вывода
├── serial.c  - Драйвер последовательного порта
├── serial.h  - Заголовок для UART
└── vga.c     - Драйвер видеоконтроллера
  • Изоляция аппаратно-зависимого кода
  • Упрощает добавление новых драйверов
  • Позволяет загружать драйверы как модули (в будущем)
  1. Системные заголовки (include/kernel/)
include
└── kernel
    └── tty.h - Интерфейс терминала
  • Чёткое разделение публичных и приватных заголовков
  • Эмулирует структуру системных заголовков (#include <kernel/tty.h>)
  • Упрощает распространение SDK для разработчиков
  1. Ядро ОС (kernel/)
kernel
└── kernel.c - Основной код ядра (инициализация, главный цикл)
  • Центральный компонент системы, должен быть легко находимым.
  1. Стандартная библиотека (libc/)
libc
├── include     - Системные заголовки
│   ├── stdio.h
│   ├── stdlib.h
│   ├── string.h
│   └── sys
│       └── cdefs.h
├── stdio       - Реализация stdio
│   ├── printf.c
│   ├── putchar.c
│   └── puts.c
├── stdlib      - Реализация stdlib
│   └── abort.c
└── string      - Реализация string
    ├── memcmp.c
    ├── memcpy.c
    ├── memmove.c
    ├── memset.c
    └── strlen.c
  • Изолирует пользовательское пространство от ядра
  • Позволяет использовать разные реализации libc
  • Соответствует POSIX-совместимой структуре
  • Упрощает портирование существующего ПО

Начало работы

...

Usage

  1. Clone the project: git clone https://github.com/singl3focus/xenon-os

  2. Change dir and run scripts: ./make_clear.sh && ./make.sh

TODO (ignore it now):

### Makefile 

Make command form:

[command]


1. For collect ISO and start it to Bochs emulator: \
```make run```
  1. Start OS with emulation:
    • QEMU: qemu-system-i386 -cdrom xenon-os.iso
    • BOCHS: TODO

Use it!

Git navigation

  1. Иерархия веток:

    • maindevelopfeature/*/bugfix/*

    • Каждая функция или исправление изолированы в своей ветке.

    • Связанность:

      • Feature-ветки интегрируются через Pull Requests в develop после code review.
      • Bugfix-ветки для main выпускаются как патчи, а для develop — как улучшения.
      • Релизы из develop в main помечаются тегами (v0.1.0, v0.2.0 и т.д.).
    • Пример:

      • Разработка драйвера USB:
      • Создана ветка feature-usb-driver из develop.
      • После завершения — PR в develop.
      • Тестирование в develop → слияние в main при релизе.
  2. Commits

Обозначение Описание
major Добавление блока, который значительно меняет поведение ПО
feat Новая функциональность (например, добавление драйвера VGA)
fix Исправление ошибки (например, устранение зависания при обработке прерываний)
chore Незначительные изменения, к примеру, обновление в документации

Contributors (a.k.a. Authors):

  • Anton Smirnov (ascom8)
  • Imran Tursunov (singl3focus)

About

A minimalist OS project written by two enthusiasts from scratch

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors