nos_
ENRU

Документация

Справочник по nos, который собирается из каталога docs/ репозитория при каждом развёртывании: как устроена каждая подсистема, как собрать, запустить, протестировать и отладить ядро.

С чего начать

Как это устроено

ЗагрузкаОт GRUB/Multiboot2 и протокола Linux Image до boot: complete на обеих архитектурах и как поднимаются остальные процессоры.Страничная памятьНачальное линейное отображение, настоящая таблица страниц, список свободных страниц, аллокаторы, MMIO и W^X, TLB shootdown.ПланировщикОчереди задач на каждом CPU, переключение контекста, вытеснение, блокировки и балансировка нагрузки.ПрерыванияIDT и IOAPIC, MSI-X, GICv3 и ITS, IPI, NMI, балансировка IRQ, отложенная работа.ПрофилировщикСэмплирование по счётчику производительности или по тику и как читать отчёт profile.HTTPSКак работает wget https://: шов транспорта, rustls в no_std, сертификаты и во что это обходится.Случайные числаПул ChaCha20, источники энтропии, которые находятся на каждой машине, и чего стоит джиттер таймингов.Rust в ядреКак устроены крейты, как сервис ядра попадает в Rust, типы вместо unsafe, карта kcore и как написать драйвер.Файловые системыКорневая ФС и root=, файловый API, что и как пишет драйвер ext2, создание и проверка корневого образа.Загружаемые модулиСервисы ядра на Rust в виде .ko, загружаемые в работающее ядро через insmod: как написать, собрать и загрузить.netblkNVMe-диск, который модуль раздаёт по UDP без копирования в обе стороны, и сравнение с Linux.sshdSSH-сервер в модуле: вход по ключу Ed25519, запуск при загрузке из /etc/rc, какие алгоритмы он поддерживает.ГипервизорГипервизор первого типа из крейтов Rust и выгружаемого модуля: AMD-V и Intel VT-x, гостевые Linux.

Инструменты