Обзор

Заметки по сборке ядра 🧠

(Инструментация с учетом RTT, не переписывание ядра)

NawderOS не заменяет ядро Linux.
Он слегка инструментаризует его.

В этом документе описывается где находятся хуки, согласованные с RTT, что они наблюдают и что они намеренно не делают.

Если вы можете собрать пользовательское ядро Linux, вы можете собрать NawderOS 🙂


Философия дизайна#

Перед тем как касаться кода, несколько основных правил:

  • Мы наблюдаем, мы не контролируем
  • Мы излучаем сигналы, мы не навязываем политику
  • Мы предпочитаем точки отслеживания логике
  • Мы сохраняем патчи маленькими и читаемыми

RTT — это о согласованности во времени — а не о добавлении хитрых поведений в ядро.


Поддерживаемая базовая версия ядра#

NawderOS в настоящее время нацеливается на:

  • Linux 6.x (предпочтительно LTS)
  • Исходный код ядра Vanilla
  • Не требуются зависимости вне дерева

Если вы можете собрать стандартное ядро, вы уже на 90% на правильном пути.


Где NawderOS подключается 🔧#

NawderOS касается только нескольких стратегических мест:

1️⃣ Путь загрузки (init/)#

Цель: Проверка выравнивания подложки

  • Запись версии ядра, хеша конфигурации и параметров загрузки
  • Выдача значка SUBSTRATE_BASELINE
  • Без ветвлений, без путей сбоя

🙂 Это отвечает на вопрос: “Что мы на самом деле загрузили?”


2️⃣ Границы планировщика (kernel/sched/)#

Цель: Обернуть проверки переходов контекста

  • Наблюдать за переключениями задач
  • Собирать минимальные метаданные (PID, состояние, временная метка)
  • Выдавать WRAP_CHECK значки только при аномалиях

🙂 Нам не важно, кто выполняет — нам важно, когда переходы отклоняются.


3️⃣ Границы доступа к памяти (mm/)#

Цель: Наблюдение за коридором валидации

  • Подключение к существующей логике ошибок или границ
  • Обнаружение доступа вне объявленных коридоров
  • Выдача CORRIDOR_BREACH значков

🙂 Это не защита памяти — это осведомленность о памяти.


4️⃣ Жизненный цикл модуля (kernel/module/)#

Цель: Обнаружение дрейфа Substrate

  • Наблюдать за загрузкой/выгрузкой модуля
  • Сравнивать с заявленными ожиданиями
  • Выдавать SUBSTRATE_DRIFT значки в случае несоответствия

🙂 “Система изменилась под нашими ногами?”


Как выдаются значки 🏷️#

Значки — это события, а не журналы.

Первоначальные реализации могут использовать:

  • trace_printk
  • точки трассировки
  • или простой кольцевой буфер

Поздние версии могут предоставлять:

  • /proc/nawderian
  • интеграцию tracefs
  • коллекторы пользовательского пространства

Правила эмиссии значков#

  • Только добавление
  • Без блокировок
  • Без побочных эффектов
  • Без политических решений

Если эмиссия значка может привести к сбою системы, не эмитируйте его 😄


Что NawderOS не делает ❌#

Чтобы все было разумно:

  • Нет перехвата системных вызовов
  • Нет изменения планировщика
  • Нет изменений в выделении памяти
  • Нет обеспечения безопасности
  • Нет настройки производительности

Это инструментирование, а не вмешательство.


Минимальная стратегия патчей 🧩#

Хороший патч ядра NawderOS должен:

  • Затрагивать как можно меньше файлов
  • Быть читаемым за одно сидение
  • Удаляться без повреждения ядра
  • Компилироваться без ошибок с отключенным RTT

Если ваш патч кажется «умным», вероятно, его слишком много.


Этапы сборки (Высокий уровень)#

  1. Клонировать ванильное ядро Linux
  2. Применить набор патчей NawderOS
  3. Включить флаги RTT в .config
  4. Собрать ядро как обычно
  5. Загрузить и наблюдать за выводом значка

Подробные команды находятся в INSTALLATION.md.


Отладка и безопасность 🛟#

Если что-то пойдет не так:

  • Отключите RTT хуки через конфигурацию
  • Пересоберите ядро
  • Загрузите чистую систему

NawderOS никогда не должен препятствовать загрузке системы.


Почему это важно#

RTT становится реальным, когда:

  • предположения видимы
  • сдвиг наблюдаем
  • согласованность можно обсуждать без догадок

Этот уровень ядра не решает ничего.
Он позволяет вам видеть, что происходит.

А видеть — это первый шаг 🙂

Updated