osdev
osdev
Инструмент для разработки операционных систем на Windows — без WSL, без MSYS2, без кросс-компилятора.
Одна команда — и у тебя есть весь тулчейн: компилятор C/C++ для bare-metal, ассемблер, линкер, эмулятор и отладчик. Всё нативно под Windows.
Зачем
Классический путь OSDev на Windows выглядит так:
- поставить WSL или MSYS2,
- собрать
i686-elf-gcc(полдня), - разобраться с
xorriso,grub-mkrescue,mtools, - писать Makefile,
- ловить странные ошибки путей.
osdev убирает всё это. Ты пишешь kernel.c, нажимаешь osdev run и видишь
своё ядро в QEMU через 5 секунд.
Быстрый старт
:: 0. установить инструмент
pip install python-osdev
:: 1. поставить тулчейн (один раз)
osdev setup
:: 2. проверить, что всё на месте
osdev doctor
:: 3. создать проект
osdev new myos
cd myos
:: 4. собрать и запустить
osdev run
В окне QEMU появится:
Hello from osdev! i686, protected mode, C kernel.
## Команды
| Команда | Что делает |
|---|---|
| `osdev doctor` | Проверить, что установлено (Zig, NASM, QEMU, GDB) |
| `osdev setup` | Скачать и распаковать тулчейн в `~/.osdev/tools/` |
| `osdev new <name>` | Создать новый проект ОС из шаблона |
| `osdev build` | Собрать образ (`build/<name>.img`) |
| `osdev run` | Собрать и запустить в QEMU |
| `osdev debug` | Собрать и запустить под GDB (с брейкпоинтом на `kernel_main`) |
### `osdev debug` — что попробовать в GDB
(gdb) info registers # состояние регистров (gdb) x/10i $pc # дизассемблер вокруг текущей инструкции (gdb) si # шаг (gdb) c # продолжить (gdb) q # выход
## Требования
- **Windows 10/11**
- **Python 3.10+**
Больше ничего. Zig, NASM и QEMU `osdev setup` поставит сам.
GDB нужен только для `osdev debug` (можно взять из mingw-w64).
## Что внутри
osdev/ ├── cli.py # команды Typer ├── detect.py # поиск тулчейна в ~/.osdev/tools и в системе ├── doctor.py # вывод таблицы ├── setup.py # скачивание NASM, Zig ├── build.py # сборка ядра: nasm → zig cc → ld.lld → .img ├── errors.py # человеческие подсказки к ошибкам компилятора └── templates/ └── i686-c-mbr/ # шаблон: свой bootloader + C-ядро
### Что делает `osdev build`
1. `nasm -f bin src/boot.asm -o build/boot.bin` — 512-байтный MBR.
2. `zig cc -target x86-freestanding-none -c src/kernel.c` — объектник.
3. `zig cc ... -fuse-ld=lld -T src/linker.ld` — линковка в ELF.
4. Python извлекает загружаемые секции → `kernel.bin`.
5. Склеивает `boot.bin + kernel.bin` → `build/<name>.img` (1.44 MB).
## Стек тулчейна
| Задача | Инструмент | Почему |
|---|---|---|
| C/C++ компилятор | **Zig (`zig cc`)** | Один бинарник, включает clang + lld + freestanding headers. Не нужен кросс-gcc. |
| Ассемблер | **NASM** | Стандарт для OSDev, 16-bit + 32-bit + 64-bit. |
| Линкер | **ld.lld** | Внутри Zig. |
| Эмулятор | **QEMU** | i386, x86_64, ARM — всё в одном пакете. |
| Отладчик | **GDB** | Подключается к QEMU через `-gdb tcp::1234`. |
## Roadmap
- [x] CLI + `doctor` + `setup` (NASM, Zig)
- [x] `new` + `build` + `run` + `debug`
- [x] Шаблон `i686-c-mbr`
- [x] Человеческие подсказки к ошибкам (`errors.py`)
- [ ] Шаблон `i686-cpp-mbr`
- [ ] Шаблон `i686-c-printf` (своя мини-реализация printf)
- [ ] Шаблон `x86_64-c-mbr` (long mode, page tables)
- [ ] Обработка прерываний (IDT, PIC, клавиатура)
- [ ] ARM (`aarch64`)
- [ ] GUI поверх CLI
## Лицензия
MIT.
Metadata
Release files for python-osdev 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python_osdev-0.1.1.tar.gz | 13.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_osdev-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.5 kB
Release files / python_osdev-0.1.1.tar.gz
| Download URL | python_osdev-0.1.1.tar.gz |
|---|---|
| Size | 13.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9e311b7d0536234920cf2c1e086d8f28dcb34c7c926286378a863dc6a74b8a12
|
|
BLAKE2b-256 checksum How to use checksums |
0cf34ea2ae04fc606179b04e492ec4208d3a85d0dc66ffac45e0551b9f8cb385
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / python_osdev-0.1.1-py3-none-any.whl
| Download URL | python_osdev-0.1.1-py3-none-any.whl |
|---|---|
| Size | 16.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9aee94b1e14053be21a78e3188bdbb532a14c0a7df45e87b114efd3d3568ca83
|
|
BLAKE2b-256 checksum How to use checksums |
c684e2fcfb0f8531d6927ab914593f29f4b6d9c755d9040afd13ae206911d868
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency log