Copyright (C) 2026 Free Software Foundation, Inc.
Licensed under the GNU General Public License version 3 (GPLv3).
Пингвин Гумбольдта в шапочке из фольги с Библией — официальный суверенный маскот SeldOS
Important
SeldOS — бескомпромиссная суверенная система с чистым ядром.
В системе нет ядра Linux, чужих рантаймов, демонов systemd или нагромождений glibc/musl. Система написана с нуля на ассемблере NASM и стандарте C99, контролируя аппаратные регистры x86_64, MMU-таблицы PML4, шину PCI и сетевые интерфейсы напрямую на «голом железе».
Развернуть интерактивное оглавление документации
| Раздел | Тематика | Ключевые компоненты |
|---|---|---|
| 📜 1. Манифест и философия | Идеология и принципы | Суверенитет, маскот-пингвин, палитра Humboldt |
| 🗺️ 2. Архитектура ядра и память | Системный базис | Higher-Half Kernel, PML4, W^X, Mermaid-схема |
| ⚙️ 3. Внутренние подсистемы ядра | Аппаратный слой | PMM, VMM, Fast Syscall, AC'97 DMA, e1000, SeldFS |
| 🐚 4. Пользовательское пространство SNL | Ring 3 Userspace | libsnl, утилиты /bin/*, Оракул TempleOS |
| 🛡️ 5. Архитектура OpSec и Anti-Forensics | Защитный комплекс | Seld-Pledge, Seld-Unveil, THL Jitter, DoD Wipe, Air-Gap Diode |
| 🌐 6. Сетевой стек, SeldTLS 1.3 и Tor | Сетевой рубеж | In-Kernel TCP Desync, DoT, RFC 7858, SOCKS5 |
| 🕹️ 7. Мобильный DOOM и Touch HUD | 3D-гейминг | Раскладка виртуального пульта, сенсорные зоны |
| 📱 8. Запуск в VirtualBox, Limbo, UTM | Эмуляция и ПК | Готовые конфиги для Android, iOS и VirtualBox |
| 🔨 9. Сборка и тестирование на ПК | Разработка | Makefile, QEMU runner, верификационные тесты |
| ⚖️ 10. Лицензия | Правовой статус | GNU General Public License v3 (GPLv3) |
SeldOS — бескомпромиссная 64-битная операционная система реального режима x86_64, спроектированная с чистого листа на ассемблере NASM и стандарте C99. Проект категорически отвергает современные тенденции многослойного абстрактного bloatware: в SeldOS нет ядра Linux, чужих рантаймов, неподконтрольных фоновых демонов или нагромождений glibc/musl. Каждый машинный цикл, регистр управления процессора (CR0, CR2, CR3, CR4), таблица дескрипторов (GDT/IDT/TSS), 4-уровневая таблица страниц PML4 и MSR-регистры управляются напрямую собственным кодом ядра.
-
Маскот проекта — Пингвин Гумбольдта (Spheniscus humboldti) в шапочке из фольги с Библией:
Подобно тому, как пингвин Tux стал символом Linux, а чертенок Beastie — символом BSD, пингвин Гумбольдта в шапочке из фольги со священным писанием в лапках выбран официальным маскотом SeldOS. Этот образ олицетворяет бескомпромиссную суверенную безопасность, параноидальную защиту личных данных (OpSec), следование традициям свободного ПО (GPLv3) и независимость от внешних корпоративных монополий.
- Векторные исходники:
seldos_logo.svgи компактный встроенный образseldos_logo.svgz(GZIP-сжатый векторный файл, 74 KiB). - Векторное изображение строго квантовано по 39-цветной палитре Humboldt Palette (0 цветов вне системного реестра).
- Векторные исходники:
-
Низкоуровневое растровое квантование (Разрешение 680×334):
Вместо произвольных стандартных разрешений компьютерной индустрии, геометрия фреймбуфера 680×334 жестко оптимизирована под безмасштабный рендеринг растрового консольного шрифта
$8 \times 16$ и локальность данных в кэше процессора:-
Ширина 680 px: Точно
$680 / 8 = 85$ символьных колонок. Стандартная 80-колоночная текстовая разметка размещается с фиксированным запасом в 5 колонок (40 пикселей) под системные индикаторы, маркеры состояния и отступы без дорогостоящих вычислений межсимвольных интервалов. -
Высота 334 px: Точно 20 полноценных текстовых строк по 16 пикселей (
$20 \times 16 = 320\text{ px}$ ) плюс аппаратно зафиксированная нижняя охранная полоса в 14 пикселей ($320 + 14 = 334\text{ px}$ ), используемая под статусную панель, разделители окон и системный буфер. -
Кэш-локальность и субмегабайтный линейный фреймбуфер: Общий размер 32-битного кадрового буфера составляет
$680 \times 334 \times 4\text{ байта} = 908{,}480\text{ байт}$ ($\approx 887.2\text{ KiB}$ ). Он целиком укладывается в непрерывный физический диапазон менее 1 МиБ (L2/L3 кэш современных процессоров), гарантируя молниеносный unaccelerated software blitting черезmemmove/memcpyбез промахов кэша и без необходимости пересечения многомегабайтных MMIO-границ.
-
Ширина 680 px: Точно
-
Фиксированная 39-цветная палитра (Humboldt Palette):
В видеоподсистеме зафиксирована детерминированная палитра из 39 цветов с прямым отображением в RGB32:
- 0..15: Полная совместимость со стандартной 16-цветной ANSI/VGA-палитрой для консольных утилит и терминальных эмуляторов.
-
16..26: Высококонтрастные эргономичные монохроматические и сигнальные токены (угольный фон
0x18181A, аспидные панели0x2A2D34, чистый белый текст0xF2F4F8, теплый песочный0xE5D9C5, сигнальный красный0xE0533C), рассчитанные на идеальное считывание текста шрифтами 8×16 и 5×7 без субпиксельного сглаживания. - 27..38: Расширенные спектральные токены (глубокий индиго, пелагический синий, акцентный циан, золотистая охра, базальтовый серый) для отрисовки TUI-интерфейсов, двухпанельного файлового менеджера, сетевых графиков и трансляции палитры DOOM.
-
Строгая аппаратная изоляция памяти (W^X & Privilege Separation):
- Разделение привилегий на уровне процессора: супервизор ядра работает в Ring 0 (CPL = 0), все программы пользователя — в Ring 3 (CPL = 3).
- Аппаратное правило W^X (Write XOR Execute): секции исполняемого кода
.textимеют флагиRX(User=1, Write=0, NX=0), а секции данных, стека и кучи —RW, NX(User=1, Write=1, NX=1). - Активация
EFER.NXE(бит 11 MSR0xC0000080) иCR0.WP(бит 16) защищает структуры ядра от перезаписи из супервизора. - Каждое обращение к пользовательским буферам в системных вызовах проходит строгую валидацию границ канонического адреса (
validate_user_buffer).
-
Аппаратный гейткипинг бинарников и Air-Gap On-Demand (Zero-Trust Immunity):
-
Криптографическая аттестация ELF: ядро в
elf_load_and_runаппаратно проверяет SHA-256 каждого исполняемого файла перед загрузкой в адресное пространство и сверяет с белым списком доверенных утилит. Запуск недоверенных бинарников, модифицированных файлов и вредоносных пейлоадов блокируется на уровне Ring 0. -
Air-Gap On-Demand Network Shield: сетевой трафик по умолчанию заглушен на уровне драйверов (
nic_send_packet/SYS_NET_TCP_CONNECT). Временная аренда (lease) выдается исключительно доверенным бинарникам (/bin/tor,/bin/download) или интерактивным командам пользователя. Любые скрытые майнеры, сетевые черви и RAT-бэкдоры не могут передать ни единого байта.
-
Криптографическая аттестация ELF: ядро в
-
Комплексный OpSec и Anti-Forensics Харденинг (Tinfoil Hat, Tails, OpenBSD):
-
Zero-on-Free (Защита от UAF и остаточных данных): Автоматическая DoD-зачистка нулями полезной нагрузки освобождаемых блоков памяти в диспетчере ядра
kfree(kmalloc.c) и в пользовательской библиотекеfree(libsnl/memory.c). -
Аппаратный RFC 7686 DNS Leak Guard: Полный запрет отправки открытых UDP/TCP DNS-запросов для доменов
.onionна уровне ядра (net_dns_resolve) и в userspace (seld_dns_resolve,seld_dns_resolve_dot). Попытки резолвинга немедленно сбрасываются с кодом-9без генерации сетевых пакетов. -
Криптографический TCP ISN и рандомизация эфемерных портов (RFC 6056): Защита от фингерпринтинга и предсказания TCP-соединений с использованием ядра CSPRNG (
rng_get_u64()) вместо последовательных счетчиков. -
Seld-Pledge Capability Sandboxing (
SYS_PLEDGE, вектор 48): Модель ограничения привилегий процессов (OpenBSDpledge(2)). Процесс может добровольно и необратимо ограничить свои системные вызовы битовой маской разрешений (PLEDGE_STDIO,RPATH,WPATH,NET,DNSи др.). Нарушение карается мгновенным завершением с кодом-37(EPERM). -
Seld-Unveil Filesystem Sandboxing (
SYS_UNVEIL, вектор 51): Модель изоляции файловой системы по путям в стиле OpenBSDunveil(2). Процесс объявляет белый список разрешенных путей с флагами (r- чтение,w- запись,x- исполнение,c- создание). Вызовunveil(NULL, NULL)необратимо блокирует конфигурацию. Попытка доступа к неавторизованным путям пресекается ядром с отказом в доступе. -
THL Keystroke Timing Obfuscation & Jitter (
kernel/drivers/kbd.c, векторы 52/53): Защита от тайминг-атак и кейлоггерного профилирования пользователя в стиле Tinfoil Hat Linux. Прерывания клавиатуры не отдают сканкоды немедленно: сканкоды буферизируются и квантуются по таймеру PIT в пачки ~50 мс со случайным CSPRNG микро-джиттером (4..6 тиков), скрывая межлитерные интервалы ввода. - Эфемерный спуфинг MAC-адреса: Автоматическая генерация случайного локально администрируемого MAC-адреса для сетевого контроллера Intel e1000 при каждом старте ядра, предотвращающая аппаратный трекинг на канальном уровне.
-
Cold-Boot & RAM Scrubbing Defense: Гарантированная зачистка нулями всех свободных страниц физической памяти (
pmm_secure_wipe_all_free()), принудительный сброс TCP-сессий и стирание видеопамяти VGA/FB при выключении (poweroff) и перезагрузке (reboot).
-
Zero-on-Free (Защита от UAF и остаточных данных): Автоматическая DoD-зачистка нулями полезной нагрузки освобождаемых блоков памяти в диспетчере ядра
-
Сетевая архитектура без иллюзий (Реальные протоколы вместо мифов):
- Никаких фиктивных заявлений о «100% неуязвимости» или рекламных слоганов. Сетевая безопасность строится на строгой реализации стандартов:
- Реализация SOCKS5 по RFC 1928 с адресным типом
ATYP=0x03(Domain Name). При запросах через прокси целевые доменные имена (включая адреса.onion) передаются внутри SOCKS5-хэндшейка напрямую в upstream Tor-демон, исключая отправку открытых DNS-запросов через локальный UDP DNS-резолвер ядра (порт 53). - Эфемерное исполнение (RAM-Only): сетевой браузер
/bin/torработает исключительно в оперативной памяти, не сохраняет историю или кэш на накопитель SeldFS и затирает память нулями при завершении процесса. - Отсутствие встроенного интерпретатора JavaScript исключает класс критических RCE-уязвимостей JIT-компиляторов и отслеживание через Canvas/WebGL.
- Манифест свободного ПО (GPLv3): Следование принципам Ричарда Столлмана. Полная свобода изучения, модификации и распространения кода без проприетарных зондажей и вендорных блокировок.
-
Независимость Userspace (SNL — Seld Not Linux): Собственное изолированное пользовательское окружение с микро-libc (
libsnl), общающееся с ядром через нативный скоростной протокол MSRSYSCALL/SYSRET. - All-in-One Portable Gaming: Нативный порт культового классического 3D-шутера DOOM с прямой адресацией линейного фреймбуфера, сенсорным оверлеем (Virtual HUD) для мобильных виртуальных машин (Android Limbo / iOS UTM / Termux) и единым компактным загрузочным ISO-образом на базе Ramdisk (Initrd).
- Изоляция привилегий CPU: Полное разделение Ring 0 (ядро) и Ring 3 (пользователь) через MSR
syscall/sysretq - Аппаратная W^X память: Раздельные флаги страниц
RX(код) иRW, NX(данные, стек, куча) с активациейEFER.NXE - Seld-Pledge (
SYS_PLEDGE): Одностороннее необратимое сужение прав системных вызовов в стиле OpenBSDpledge(2) - Seld-Unveil (
SYS_UNVEIL): Белый список путей ФС SeldFS с персистентным локомunveil(NULL, NULL) - THL Keystroke Jitter: Квантование сканкодов в пачки ~50 мс со случайным микро-джиттером CSPRNG (Tinfoil Hat Linux)
- Anti-Forensics RAM Scrubbing: Автоматическое зануление памяти
free()(Zero-on-Free) и стирание ОЗУ при выключении - In-Kernel TCP Desync: Аппаратное расщепление SNI и фейковые пакеты в ядре для обхода ТСПУ/DPI
- SeldTLS 1.3: Нативный криптографический движок TLS 1.3 (RFC 8446) без OpenSSL и внешних библиотек
- RFC 7686 Guard: Аппаратная блокировка открытых DNS-запросов для
.onionдоменов на уровне драйвера - TempleOS OpSec Оракул: Сакральный непрерывный дорийский кантус 290–680 Гц через кольцевой AC'97 DMA-буфер
- Air-Gap Data Diode: Оптическая передача QR + акустический FSK Bell 202 ключ (0 мкс дрейфа TSC, Zero-BadUSB)
- Classic DOOM Engine: 3D-шутер с переключением сенсорного пульта и ПК-режима терминала
SeldOS спроектирован по парадигме предельной лаконичности: ноль раздутых фреймворков, чужих рантаймов и скрытого оверхеда. Чистый рукописный C99 и ассемблер NASM контролируют аппаратную платформу напрямую.
| Компонент | Языки программирования | Файлов исходников | Строк чистого кода (LOC) |
|---|---|---|---|
Ядро (kernel/) |
C99, NASM, Headers | 73 | 15 726 |
Библиотека libsnl (userspace/libc/) |
C99, Headers | 32 | 5 095 |
Утилиты Userspace (userspace/bin/ без DOOM) |
C99, Headers | 34 | 9 425 |
| ИТОГО чистый код ОС | C99 / NASM | 139 | 30 246 |
| Артефакт | Путь к файлу | Размер на диске | Описание |
|---|---|---|---|
| Бинарник ядра | build/kernel.bin |
344 KiB | Higher-Half ядро со всеми драйверами (VMM, PMM, e1000, AC'97, SeldFS, TCP/IP, SeldTLS) |
| Все утилиты Userspace | build/bin/* |
~1.1 MiB | 19 суверенных бинарников (/bin/init, /bin/sh, /bin/diode, /bin/tor и др., от 54 до 97 KiB) |
| Образ файловой системы SeldFS | build/disk.img |
4.56 MiB | Корневой том со всеми утилитами и словарем оракула oracle.txt (2.5 MiB) |
| Загрузочный гибридный ISO | build/seldos.iso |
5.5 MiB | Готовый к загрузке в VirtualBox/QEMU/Limbo/UTM образ без EFI/Mac bloat (ядро + initrd + eltorito) |
Ядро построено по архитектуре Higher-Half Kernel с разделением на супервизорное пространство ядра и изолированное пользовательское пространство.
flowchart TD
subgraph R3["🔵 Ring 3 — SNL Userspace (CPL = 3, W^X Enforced)"]
init["/bin/init (PID 1 Supervisor)"]
sh["/bin/sh (Sovereign Shell)"]
tor["/bin/tor (RAM-Only Browser)"]
doom["/bin/doom (Classic DOOM 3D)"]
oracle["/bin/oracle (TempleOS Audio)"]
fm["/bin/fm (Seld Commander)"]
libsnl["libsnl.a (stdio, malloc, W^X heap)"]
end
subgraph Gate["🛡️ Syscall Gate & Isolation Layer (MSR LSTAR 0xC0000082)"]
msr["Fast SYSCALL / SYSRET Dispatcher"]
pledge["Seld-Pledge (Capability Mask Verification)"]
unveil["Seld-Unveil (Filesystem Path Sandbox)"]
end
subgraph R0["🔴 Ring 0 — Humboldt Kernel Core (CPL = 0, Higher-Half)"]
pmm["PMM (4 KiB Frame Allocator)"]
vmm["VMM (PML4 4-Level Tables, W^X Enforcement)"]
sched["Scheduler (Ring 0 / Ring 3 Context Switch)"]
seldfs["SeldFS (Hardened Block Storage + SHA-256)"]
net["TCP/IP Stack + SeldTLS 1.3 + Anti-DPI Desync"]
audio["Audio Multi-Backend (AC'97 DMA / SB16 / PC Spk)"]
fb["Linear Framebuffer 680x334 (Humboldt 39-Color)"]
purge["OpSec Immune System & RAM Zeroing"]
end
R3 -->|Fast Syscall| Gate
Gate -->|Authorized Call| R0
Gate -.->|Violation Drop: EPERM -37| R3
+-----------------------------------+ 0xFFFFFFFFFFFFFFFF
| Higher-Half Kernel Core | 2 GiB (Текстовая секция, данные, BSS ядра)
+-----------------------------------+ 0xFFFFFFFF80000000
| ... | Каноническая дыра (Non-canonical space)
+-----------------------------------+ 0xFFFF800040000000
| HHDM (Direct Physical Map) | Прямой доступ к физической памяти (1 GiB)
+-----------------------------------+ 0xFFFF800000000000
| ... | Каноническая дыра (Non-canonical space)
+-----------------------------------+ 0x00007FFFFFFFF000
| Ring 3 Userspace Stack | Пользовательский стек (16 KiB, RW, NX, User)
+-----------------------------------+ 0x00007FFFFFFFB000
| ... |
+-----------------------------------+ 0x00000000A0000000
| Linear Video Framebuffer (FB) | Проекция видеопамяти 680x334x32 (RW, NX, User)
+-----------------------------------+ 0x00000000A00DE000
| ... |
+-----------------------------------+ 0x0000000001000000
| Ring 3 Userspace Heap | Куча процесса (SYS_BRK, RW, NX, User)
+-----------------------------------+ 0x0000000000400000
| Ring 3 Userspace Code | Исполняемый ELF-64 бинарник (RX, User)
+-----------------------------------+ 0x0000000000000000
Note
Субмегабайтная локальность видеопамяти: Полный объем линейного фреймбуфера 680×334×32 bpp составляет ровно 887.2 KiB. Он целиком укладывается в кэш L2/L3 современных процессоров, обеспечивая программный блиттинг без промахов кэша и аппаратного ускорения.
- PMM (Physical Memory Manager):
- Битовая карта фреймов (Bitmap-based allocator), оперирующая страницами размером 4096 байт (4 KiB).
- Парсинг структуры памяти стандартов Multiboot 1 и Multiboot 2.
- Автоматическое выявление и защита диапазонов In-Memory Ramdisk (Initrd).
- Битовая карта размещается в физической памяти сразу за ядром и адресуется через HHDM-шлюз
0xFFFF800000000000 + phys.
- VMM (Virtual Memory Manager) & W^X Enforcement:
- 4-уровневая структура страниц x86_64:
PML4 -> PDPT -> Page Directory -> Page Table. - Постраничное динамическое связывание с автоаллокацией промежуточных таблиц.
- Аппаратная реализация правила W^X (Write XOR Execute):
- Секция
.text:Present,User=0,Write=0,NX=0(Исполнение разрешено, запись запрещена). - Секция
.rodata:Present,User=0,Write=0,NX=1(Только чтение, исполнение запрещено). - Секции
.dataи.bss:Present,User=0,Write=1,NX=1(Чтение и запись разрешены, исполнение запрещено).
- Секция
- Активация бита
EFER.NXE(bit 11) в MSR0xC0000080и защита страниц от перезаписи супервизором черезCR0.WP(bit 16).
- 4-уровневая структура страниц x86_64:
- Kernel Dynamic Heap (
kmalloc/kfree):- Связный список блоков (First-Fit Free List) с заголовками
struct block_headerи проверкой целостности черезKMALLOC_MAGIC(0x5E1DCAFE). - Базовый пул аллокатора размещается в защищенном HHDM-сегменте.
- Zero-on-Free (Kernel RAM Sanitization): каждый вызов
kfree()принудительно затирает память блока нулямиmemset(hdr + 1, 0, hdr->size)до маркировки блока свободным, исключая утечку криптографических ключей, сетевых пакетов и структур ядра через Use-After-Free.
- Связный список блоков (First-Fit Free List) с заголовками
- Cold-Boot & RAM Scrubbing Defense (
pmm_secure_wipe_all_free):- При выключении (
poweroff) и перезагрузке (reboot) ядро сканирует физическую битовую карту и перезаписывает нулями каждый свободный 4 КиБ фрейм через прямое HHDM-отображение. Это нейтрализует физические атаки с заморозкой чипов DRAM (Cold-Boot Attacks) и последующим снятием дампов памяти.
- При выключении (
- GDT (Global Descriptor Table) & TSS:
- Загружается в Higher-Half до инициализации подсистемы прерываний, предотвращая сбои двойного/тройного отказа:
0x08: 64-bit Kernel Code (DPL 0, RX)0x10: Kernel Data (DPL 0, RW)0x18: User Data Segment (DPL 3, RW, RPL 3 =0x1B)0x20: 64-bit User Code Segment (DPL 3, RX, RPL 3 =0x23)0x28: 16-байтный системный дескриптор 64-битного Task State Segment (TSS).
TSS.RSP0: Автоматический аппаратный переход на защищенный стек супервизора при прерываниях из Ring 3.
- Загружается в Higher-Half до инициализации подсистемы прерываний, предотвращая сбои двойного/тройного отказа:
- IDT (Interrupt Descriptor Table):
- Полная таблица из 256 шлюзов прерываний (Interrupt Gates).
- Переназначение векторов ведущего (Master) и ведомого (Slave) контроллеров Intel 8259 PIC на векторы
0x20–0x2F(IRQs 0..15). - Обработчики исключений процессора (0..31), включая
#GP(13) и#PF(14) с декодированием регистраCR2.
- Fast SYSCALL / SYSRET Subsystem:
- Быстрый интерфейс входа в ядро через инструкцию
syscall(без оверхеда шлюзов прерываний). - MSR
STAR(0xC0000081): Базовые селекторы0x08(Ring 0) и0x10(Ring 3 SYSRET: CS=0x20|3, SS=0x18|3). - MSR
LSTAR(0xC0000082): Прямой указатель на ассемблерный диспетчерsyscall_entry_asm. - MSR
FMASK(0xC0000084): Автоматический сброс флагаIFпри системном вызове. - Сохранение регистров
r8..r15, пользовательского указателя стека и возврат контекста черезsysretq. - Seld-Pledge Sandboxing (
SYS_PLEDGE, вектор 48): Нативный механизм ограничения возможностей процессов в стиле OpenBSDpledge(2). Процесс объявляет разрешенные категории системных вызовов (PLEDGE_STDIO,RPATH,WPATH,EXEC,NET,DNS,AUDIOи др.). Битовая маска может только сужаться; любая попытка вызова за пределами маски немедленно прерывается с ошибкой-37(EPERM). - Seld-Unveil Sandboxing (
SYS_UNVEIL, вектор 51): Изоляция файловой системы по путям в стиле OpenBSDunveil(2). Наложение гранулярных ограничений (UNVEIL_READ,UNVEIL_WRITE,UNVEIL_EXEC,UNVEIL_CREATE). Вызовseld_unveil(NULL, NULL)необратимо блокирует правила для процесса и дочерних задач. - THL Keystroke Timing Jitter (
SYS_OPSEC_SET_JITTER52,SYS_OPSEC_GET_JITTER53): Системное переключение и опрос статуса рандомизированного квантования сканкодов клавиатуры.
- Быстрый интерфейс входа в ядро через инструкцию
-
PS/2 Мышь и сенсорный экран (
kernel/drivers/mouse.c, IRQ 12):- Поддержка стандартного контроллера 8042 Aux/PS/2.
- Декодирование 3-байтовых пакетов данных, абсолютные координаты
$X, Y$ (0..680, 0..334), смещения$\Delta X, \Delta Y$ и статус кнопок. - Кольцевой буфер событий мыши на 128 элементов, неблокирующий системный вызов
SYS_POLLMOUSE(вектор 27).
-
PS/2 Клавиатура (
kernel/drivers/kbd.c, IRQ 1):- Буфер сырых сканкодов для терминала и игровых движков, неблокирующий опрос
SYS_POLLKEY(вектор 26). -
THL Keystroke Timing Obfuscation & Jitter (Tinfoil Hat Linux): Защита от тайминг-атак деанонимизации и кейлоггеров. При включении режима (
jitter on/SYS_OPSEC_SET_JITTER) поступающие сканкоды не передаются моментально, а накапливаются в промежуточной очереди (kbd_stage_buf) и квантуются пачками ~50 мс по тикам таймера PIT с микро-джиттером 4..6 тиков через CSPRNG (rng_get_u64()), полностью смазывая уникальный тайминг печати оператора. При отключении выполняется мгновенный flush без потерь.
- Буфер сырых сканкодов для терминала и игровых движков, неблокирующий опрос
-
VGA Text & Linear Framebuffer (
kernel/drivers/vga.c):- Текстовый буфер VGA 80x25 (
0xB8000) для ранней загрузочной консоли. - Линейный 32-битный графический фреймбуфер высокого разрешения 680×334 с поддержкой Bochs/QEMU BGA (порты
0x01CE/0x01CF) и Multiboot 1/2. - Аппаратное конфигурирование линейного видеорежима 680×334×32 bpp (pitch 2720 байт, 85×20 символьный растр + 14 px статусная полоса).
- Архитектура изолированного консольного скроллинга через
fb_console_rowsи системный вызовSYS_SET_CONSOLE_ROWS(вектор 30). - Системный вызов
SYS_FRAMEBUFFER(вектор 25) для прямого проецирования физической видеопамяти в Ring 3.
- Текстовый буфер VGA 80x25 (
-
Хранилище: Ramdisk (Initrd) & ATA PIO:
-
In-Memory Ramdisk (
kernel/drivers/ramdisk.c): Автоматический захват и чтение загрузочного диска из памяти через Multiboot 1/2 модуль на гигабайтных скоростях. -
Динамическое расширение в RAM (
ramdisk_expand_in_ram): Ультракомпактный дистрибутивный ISO (~5.4 МБ) за счет упаковки только занятых секторов SeldFS (~4.38 МБ) и XZ-сжатия модулей GRUB. При старте ядра (pmm_init) образ диска прозрачно расширяется в физической памяти до 34 МБ (69 632 секторов), обеспечивая полную поддержку записи в SeldFS на лету (скачивание Tor, сохранение конфигураций и данных). -
ATA PIO Driver (
kernel/drivers/ata.c): Драйвер первичного IDE контроллера в режиме 28-bit LBA (I/O порты0x1F0–0x1F7) для физических накопителей.
-
In-Memory Ramdisk (
-
Файловая система SeldFS (
kernel/fs/seldfs.c):- Собственная компактная отказоустойчивая файловая система со структурой тома:
- Sector 0:
Superblock(Magic0x5E1DF501, счетчики блоков, размер, SHA-256). - Sector 1..16:
Block Allocation Bitmap(битовая карта блоков данных). - Sector 17..32:
Inode Table(метаданные файлов, размер, LBA первого блока). - Sector 33+:
Data Blocks.
- Sector 0:
- Универсальный блочный слой (
bdev_read_sectors/bdev_write_sectors) — прозрачная работа поверх Ramdisk в памяти или физического диска ATA.
- Собственная компактная отказоустойчивая файловая система со структурой тома:
Палитра жестко закодирована в ядре (kernel/drivers/vga.c) и экспортируется через заголовочные файлы vga.h и seld.h. Каждая группа цветов несет строгое функциональное назначение в системном интерфейсе и TUI-приложениях:
🎨 Развернуть полную таблицу 39 токенов Humboldt Palette (RGB32)
| Индекс | HEX (RGB32) | Название константы | Техническое назначение и UI-роль |
|---|---|---|---|
| 0 | 0x00000000 |
VGA_BLACK |
Черный (Базовый фон VGA-консоли) |
| 1 | 0x000000AA |
VGA_BLUE |
Синий (Стандартный ANSI Blue) |
| 2 | 0x0000AA00 |
VGA_GREEN |
Зеленый (Стандартный ANSI Green / статус OK) |
| 3 | 0x0000AAAA |
VGA_CYAN |
Циан (Стандартный ANSI Cyan) |
| 4 | 0x00AA0000 |
VGA_RED |
Красный (Стандартный ANSI Red / ошибки) |
| 5 | 0x00AA00AA |
VGA_MAGENTA |
Маджента (Стандартный ANSI Magenta) |
| 6 | 0x00AA5500 |
VGA_BROWN |
Коричневый (Стандартный ANSI Brown / каталоги) |
| 7 | 0x00AAAAAA |
VGA_LIGHT_GREY |
Светло-серый (Стандартный ANSI Light Grey) |
| 8 | 0x00555555 |
VGA_DARK_GREY |
Темно-серый (ANSI Dark Grey / комментарии) |
| 9 | 0x005555FF |
VGA_LIGHT_BLUE |
Голубой (ANSI Light Blue / ссылки) |
| 10 | 0x0055FF55 |
VGA_LIGHT_GREEN |
Светло-зеленый (ANSI Light Green / успех) |
| 11 | 0x0055FFFF |
VGA_LIGHT_CYAN |
Светлый циан (ANSI Light Cyan / спецсимволы) |
| 12 | 0x00FF5555 |
VGA_LIGHT_RED |
Светло-красный (ANSI Light Red / фатальные сбои) |
| 13 | 0x00FF55FF |
VGA_LIGHT_MAGENTA |
Розово-пурпурный (ANSI Light Magenta) |
| 14 | 0x00FFFF55 |
VGA_YELLOW |
Желтый (ANSI Yellow / предупреждения) |
| 15 | 0x00FFFFFF |
VGA_WHITE |
Белый (ANSI White / основной текст) |
| 16 | 0x0018181A |
COLOR_PENGUIN_TUXEDO |
Charcoal Dark (Основной фон терминала и темной темы) |
| 17 | 0x002A2D34 |
COLOR_SLATE_BACK |
Slate Grey (Фон боковых панелей и статус-баров) |
| 18 | 0x00F2F4F8 |
COLOR_CHEST_WHITE |
Pure White (Высококонтрастный текст основного контента) |
| 19 | 0x00E5D9C5 |
COLOR_CREAM_BELLY |
Warm Sand (Вторичный приглушенный текст и метки) |
| 20 | 0x00FF6B8B |
COLOR_FLESH_PINK |
Rose Pink (Активные гиперссылки и фокусные элементы) |
| 21 | 0x00E84A5F |
COLOR_BEAK_CORAL |
Coral Red (Индикация системных ошибок и исключений) |
| 22 | 0x002C3539 |
COLOR_BILL_OBSIDIAN |
Obsidian Dark (Рамки окон, границы панелей TUI) |
| 23 | 0x00848B98 |
COLOR_FEATHER_SILVER |
Silver Metallic (Неактивные пункты меню и хоткеи) |
| 24 | 0x003D3635 |
COLOR_WEBBED_FOOT |
Footprint Charcoal (Фон невыделенных строк таблиц) |
| 25 | 0x009E2A2B |
COLOR_PENGUIN_IRIS |
Amber Crimson (Выделение диагностических логов ядра) |
| 26 | 0x00E0533C |
COLOR_THERMAL_CORE |
Core Alert Red (Индикатор Kernel Panic и аварийных сбоев) |
| 27 | 0x00001F3F |
COLOR_HUMBOLDT_NAVY |
Deep Navy (Фон заголовков в Seld Commander / FM) |
| 28 | 0x00005B96 |
COLOR_PACIFIC_PELAGIC |
Pelagic Blue (Активные вкладки и выделенные фреймы) |
| 29 | 0x00018E9A |
COLOR_UPWELLING_TEAL |
Upwelling Teal (Статус активных TCP-потоков и сокетов) |
| 30 | 0x006497B1 |
COLOR_ANTARCTIC_MIST |
Mist Cyan (Текст сетевых диагностических утилит) |
| 31 | 0x000B6623 |
COLOR_KELP_FOREST |
Canopy Green (Индикатор сетевого линка UP) |
| 32 | 0x002E8B57 |
COLOR_SEAWEED_GREEN |
Seaweed Green (Файлы разделов SeldFS на накопителях) |
| 33 | 0x0040E0D0 |
COLOR_OCEAN_CYAN |
Turquoise Ocean (URL и строка поиска в браузере) |
| 34 | 0x00B0E0E6 |
COLOR_FOAM_CREST |
Seafoam White (Ползунок скроллбара и курсор мыши) |
| 35 | 0x00D27D2D |
COLOR_ATACAMA_OCHRE |
Ochre Gold (Метрики PMM/VMM и счетчики кучи) |
| 36 | 0x008B4513 |
COLOR_CHANARAL_CLIFF |
Earth Brown (Бинарные исполняемые файлы в FM) |
| 37 | 0x00C2B280 |
COLOR_DAMAS_SHORE |
Sand Khaki (Текстовые документы и файлы конфигурации) |
| 38 | 0x005C6B73 |
COLOR_ALGARROBO_ROCK |
Granite Slate (Нижняя охранная статусная линия 14 px) |
Экран имеет фиксированный растровый размер 680×334 пикселей.
При стандартном растровом шрифте
0 px +-------------------------------------------------------------------+
| [Строка 0] Текстовая область терминала |
| ... Строки 0..11 (Высота: 12 строк x 16 px = 192 px) |
| [Строка 11] Строго изолированная зона скроллинга |
192px+-------------------------------------------------------------------+
| [192..199] Защитный буфер безопасности (8 px) |
200px+===================================================================+
| [204..228] Панель быстрых команд: [DOOM] [LS] [PC] [COLORS] ... |
| [232..330] Виртуальная сенсорная клавиатура QWERTY |
334px+-------------------------------------------------------------------+
-
Проблема слепого скроллинга (Blind Memmove Bug):
В ранних версиях драйвер фреймбуфераkernel/drivers/vga.cпри заполнении экрана текстом выполнял плоский сдвиг всех 320 строк видеопамяти вверх черезmemmove. Из-за этого при выводе баннера шелла или результатов утилит нарисованные внизу сенсорные кнопки и клавиатура ($y \ge 200$ ) физически перемещались вверх по экрану (на$y=140$ и выше), рассекая графический баннер пингвина пополам и оставляя фантомные дубликаты. -
Архитектурное решение (Bounded Scroll &
SYS_SET_CONSOLE_ROWS):- В ядро введен параметр
fb_console_rowsи системный вызовSYS_SET_CONSOLE_ROWS(вектор 30). - В режиме Mobile шелл задает лимит
seld_set_console_rows(12). - Функция
fb_scroll()перемещает исключительно диапазон строк$[0 \dots 11]$ (scanlines$0 \dots 191$ ). - Область
$y \ge 192$ никогда не затрагивается скроллингом: сенсорные кнопки и клавиатура аппаратно защищены и остаются неподвижными при любом объеме терминального вывода! - Баннер из 11 строк и приглашение
snl$садятся строго в строки 0..11, не требуя ни единого паразитного сдвига экрана.
- В ядро введен параметр
-
Прямой графический вывод векторного логотипа в консоль шелла (
draw_banner_vector_logo):
Вместо примитивного ASCII-арта интерактивная командная оболочка/bin/sh(userspace/bin/sh/main.c) при запуске выводит растровый слепок векторного логотипа маскота ($54 \times 108$ пикселей) напрямую в линейный фреймбуфер (s_fb.framebuffer) в зоне$x \in [44, 97], y \in [18, 125]$ слева от системного заголовка SNL. Изображение рендерится в 39 токенах Humboldt Palette, не нарушая текстовых позиций консоли. -
Бесшовный режим ПК (
pc on):
При вызове командыpcшелл восстанавливает лимитseld_set_console_rows(20), очищает нижнюю область$y \in [200, 333]$ и переводит терминал в чистый полноэкранный формат$85 \times 20$ без наэкранных кнопок. Командаmobileмоментально возвращает сенсорный интерфейс.
- PCI Подсистема (
kernel/drivers/pci.c):- Сканирование шин PCI (Buses 0..255, Slots 0..31, Functions 0..7) через I/O порты
0x0CF8(CONFIG_ADDRESS) и0x0CFC(CONFIG_DATA). - Автоматическое обнаружение сетевых адаптеров, чтение BAR (Base Address Registers), активация Bus Mastering (
PCI_COMMAND_MASTER).
- Сканирование шин PCI (Buses 0..255, Slots 0..31, Functions 0..7) через I/O порты
- Драйверы сетевых адаптеров:
- Intel E1000 Gigabit NIC (
kernel/drivers/e1000.c): Поддержка чипа Intel 82540EM (Device ID0x100E). MMIO кольцевые буферы дескрипторов Rx/Tx (буферы по 16 KiB), аппаратная обработка чексумм.- Эфемерный аппаратный спуфинг MAC (
e1000_randomize_mac): При каждом старте драйвер генерирует случайный MAC-адрес со взведенным битом Locally Administered (mac[0] | 0x02 & ~0x01), защищая от аппаратного фингерпринтинга и отслеживания на канальном уровне (L2).
- Эфемерный аппаратный спуфинг MAC (
- AMD PCnet-FAST III (
kernel/drivers/pcnet.c): Поддержка чипа Am79C973 (Device ID0x2000). I/O порт и DMA кольцо дескрипторов пакетов.
- Intel E1000 Gigabit NIC (
- Нативный сетевой стек TCP/IP (
kernel/net/net.c,kernel/net/tcp.c):- ARP (Address Resolution Protocol): Разрешение IPv4 в MAC-адреса, динамический ARP-кэш.
- IPv4: Маршрутизация пакетов, инкапсуляция/декапсуляция, валидация IP Checksum.
- ICMP: Прием и отправка эхо-запросов и ответов (
ping) с определением RTT и фильтрацией заблокированных узлов. - Суверенный OpSec DNS (Control D Ads & Trackers — профиль p2):
- Основной резолвер ядра: Control D Anycast Primary (
76.76.2.2:53) и Secondary (76.76.10.2:53) с параллельными UDP-запросами. - Автоматический Fallback на локальный DNS гипервизора (
10.0.2.3:53/ gateway) при работе в изолированных тестовых сегментах. - Аппаратный Sinkholing трекеров и рекламы: рекламные домены, метрики и трекеры (
doubleclick.net,google-analytics.com, телеметрия) резолвятся Control D в0.0.0.0. Сетевой стек ядра моментально глушит трафик к ним без выхода пакетов в сеть и кэширует статус блокировки на 5 минут (DNS_CACHE_SIZE = 16). - RFC 7686 Onion Guard: строгий запрет резолвинга адресов
.onionчерез Clearnet DNS. Ядро немедленно отбрасывает запрос с кодом-9(DNS_ERR_ONION_LEAK), исключая деанонимизацию скрытых сервисов у провайдера. - DNS-over-TLS (DoT, RFC 7858): поддержка зашифрованного резолвинга через
p2.freedns.controld.com:853по нативному протоколу TLS 1.3 с автоматическим переключением при блокировке UDP-трафика.
- Основной резолвер ядра: Control D Anycast Primary (
- Криптографический TCP ISN и рандомизация портов (RFC 6056):
- Initial Sequence Number (ISN) генерируется не детерминированно по таймеру, а через аппаратный криптографический ГСЧ
rng_get_u64(). - Эфемерные исходящие порты (диапазон
49152..65535) выбираются псевдослучайно через CSPRNG, исключая атаку Blind TCP Reset и перехват сессий.
- Initial Sequence Number (ISN) генерируется не детерминированно по таймеру, а через аппаратный криптографический ГСЧ
- TCP State Machine (
kernel/net/net.c): Конечный автомат TCP (CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT/CLOSE_WAIT), скользящее окно (Window Scaling), повторная передача (Retransmissions), подтверждения (ACK), сегментация MSS. - Сокетный интерфейс ядра: Поддержка параллельных TCP-соединений, входящая потоковая буферизация данных.
-
Одновременный аппаратный синтез (Simultaneous Multi-Device Synthesis):
-
Intel ICH AC'97 Audio Controller (PCI
0x8086:0x2415):- Нативная поддержка для QEMU, VirtualBox и физических аудиокарт AC'97.
- Автоматическое конфигурирование шины PCI: Bus Mastering, чтение NAMBAR (I/O микшер) и NABMBAR (I/O DMA контроллер).
- Раздельные циклические буферы дескрипторов (BDL, 32 записи) и непрерывный физический PCM-буфер (48000 Гц, 16-бит стерео).
-
Ангельский синтез 25% Pulse Wave (Continuous Phase): скважность 25% (
phase < 12000 ? 9500 : -9500) с сохранением фазы между буферами обеспечивает чистый, кристальный тембр с богатыми гармониками вместо резкого меандра. -
Непрерывный кольцевой DMA без пауз: динамическое продвижение Last Valid Index
(CIV + 16) & 31полностью устраняет аппаратные микропаузы и заикания (0.0 мс задержки между блоками).
-
Sound Blaster 16 (
0x220):- Инициализация DSP через порты
0x226/0x22A(проверка квитанции0xAA). - Прямое управление 8-битным ЦАП через команду
0x10и аппаратный микшер громкости.
- Инициализация DSP через порты
-
PC Speaker (Intel 8254 PIT Channel 2 & Port
0x61):- Классический генератор прямоугольных импульсов (Mode 3, Square Wave) на частоте 1.193182 МГц для QEMU и физического оборудования x86.
-
Intel ICH AC'97 Audio Controller (PCI
-
Музыкальный логарифмический движок полутонов (ONA Scale):
- Таблица из 128 полутонов (
$1 \dots 127$ ) по стандартной акустической формуле$f = \frac{440}{32} \cdot 2^{(note / 12)}$ . - Концертный строй A4 (440 Гц) соответствует индексу ноты 60.
- Непрерывный генератор тона
snd <ona>и мгновенное глушение звукаsnd 0/snd off. - Управление воспроизведением через таймер IRQ0 (
audio_timer_tick) с бесшовным кольцевым перезапуском DMA при длительном звучании.
- Таблица из 128 полутонов (
-
Аппаратная безопасность и защита от переполнений:
- Предотвращение целочисленных переполнений в C: безопасный парсер аргументов
parse_uint32_safeвlibsnlблокирует отрицательные значения (beep -1) и переполнение 32-битного диапазона. - Защита от бесконечных зависаний: счетчик задержки
pit_sleep_msограничен порогом 60 секунд с дельта-вычитанием тиков(timer_ticks - start_ticks) < delta_ticks, исключая петли ожидания на 136 лет при переносе счетчика.
- Предотвращение целочисленных переполнений в C: безопасный парсер аргументов
-
Инвариант тихого старта (Silent Boot Invariant):
- Процедура автопроигрывания звука при загрузке (
audio_chime_boot) намеренно отключена: система загружается в 100% тишине без несанкционированного шума.
- Процедура автопроигрывания звука при загрузке (
Tip
Синхронизация звука в VirtualBox: VirtualBox не эмулирует PC Speaker напрямую в аудиосервер хоста. SeldOS автоматически распознает PCI-контроллер Intel 82801AA (ICH AC'97) и направляет аудиопоток в циклический 48 кГц стереобуфер DMA, обеспечивая чистое непрерывное звучание в Linux PulseAudio / PipeWire.
- Linux-Style Boot Animation (
kernel/sys/boot_anim.c):- Графический экран загрузки высокого разрешения с центрированным векторным логотипом маскота системы (Spheniscus humboldti).
- Встроенный в ядро сжатый блоб
seldos_logo.svgz(kernel/arch/x86_64/logo_blob.asm), валидируемый в рантайме по заголовку GZIP (0x1F, 0x8B, 0x08) и трейлеру ISIZE. - Отрисовка 64×64 аппаратного логотипа маскота (
kernel/include/logo_data.h) в 39 токенах палитры Humboldt. - 15 последовательных этапов инициализации подсистем с цветовой индикацией
[ OK ]и временем загрузки:GDT/TSS->IDT->PMM->VMM->SYSCALL->KMALLOC->ATA->SELDFS->CRYPTO->PIT->AUDIO->SCHED->NET->SELFTEST->INIT (Ring 3).
- Подсистема Kernel Panic и трассировка стека (
kernel/sys/panic.c,kernel/sys/ksyms.c):- Перехват критических аппаратных исключений процессора (#GP, #PF, #UD, #DF) и программных сбоев ядра.
- Полноэкранный высококонтрастный экран паники (цветовой токен
COLOR_THERMAL_CORE0xE0533C). - Полный дамп регистров общего назначения (RAX..R15, RIP, RSP, RFLAGS) и управляющих регистров процессора (CR0, CR2 с адресом сбойной страницы, CR3, CR4).
- Автоматическая расшифровка стека вызовов (Stack Backtrace) по встроенной таблице символов ядра (
ksyms.c) с отображением имени функции, файла и номера строки. - Специализированные диагностические команды шелла для тестирования устойчивости:
gpu off,kill cpu,kill ram.

Аппаратная инициализация ядра Humboldt, таблицы страниц W^X и встроенные самотесты
В ядре реализован комплекс активной иммунной защиты от вредоносного ПО (вирусов, червей Worm, скрытых майнеров Miner, троянов удаленного доступа RAT и стилеров Stealer) без использования тяжелых и уязвимых антивирусных баз:
- Криптографический Binary Gatekeeper (
kernel/sys/fast_syscall.c,kernel/fs/seldfs.c):- При любом системном вызове запуска процессов (
SYS_SPAWN,SYS_EXEC,elf_load_and_run) ядро сначала обращается к белому списку авторизованных бинарниковseldfs_is_authorized_file. Попытка выполнить подброшенный файл (miner.bin,rat,stealer) блокируется на аппаратном уровне с кодом ошибки. - Перед разметкой таблиц страниц PML4 вызывается
seldfs_verify_file: ядро считывает секторы и пересчитывает SHA-256. Любая модификация системного файла (заражение червем или инъекция шеллкода) немедленно отсекается с отказом в исполнении.
- При любом системном вызове запуска процессов (
- Air-Gap On-Demand Network Shield (
kernel/net/net.c):- Передача сетевых пакетов через драйверы контроллеров Intel e1000 и AMD PCnet по умолчанию заблокирована (
s_net_airgap_mode = NET_AIRGAP_ONDEMAND). - Временная аренда (Ephemeral Lease): сокеты и пакеты разрешаются только на время исполнения доверенных сетевых утилит (
/bin/tor,/bin/download) или интерактивных команд оператора (ping,dns). - При завершении процесса сетевой шлюз моментально захлопывается. Любой скрытый фоновый процесс не может передать ни единого байта на управляющий C2-сервер или майнинг-пул Stratum.
- Передача сетевых пакетов через драйверы контроллеров Intel e1000 и AMD PCnet по умолчанию заблокирована (
- Иммунная антивирусная зачистка (
SYS_IMMUNE_PURGE, вектор 45):- DoD Zero-Wipe накопителя: функция
seldfs_purge_untrustedинспектирует все иноды тома SeldFS. Любой файл с несовпадающим SHA-256 или вне доверенного манифеста перезаписывается нулями (0x00) по секторам и физически удаляется. - Зачистка планировщика:
sched_purge_unauthorized_tasksотстреливает любые недоверенные фоновые потоки и зануляет их память стека. - Обрыв каналов эксфильтрации:
net_abort_all_connectionsпринудительно обрывает все активные TCP-сокеты отправкой флагаRST, очищает буферы приема и сбрасывает таблицы ARP и DNS.
- DoD Zero-Wipe накопителя: функция
В SeldOS реализована полностью суверенная среда пользовательского пространства SNL (Seld Not Linux), функционирующая в непривилегированном режиме Ring 3 (CPL = 3) с аппаратной защитой памяти и нативным скоростным интерфейсом системных вызовов.
- ELF-64 Loader (
kernel/sys/elf.c):- Загрузчик исполняемых файлов формата ELF-64 (ET_EXEC, EM_X86_64).
- Аппаратное соблюдение правила W^X: секции кода
.textмаппируются какRX, секции данных.data/.bss— какRW, NX. - Выравнивание сегментов по границе страницы 4096 байт (
ALIGN(0x1000)вuserspace/linker.ld). - Автономный стек Ring 3 (16 KiB, маппируется в виртуальном диапазоне
0x00007FFFFFFFB000–0x00007FFFFFFFF000).
- Модель процессов и System V AMD64 ABI:
- Создание изолированных адресных пространств и запуск через
spawnv/elf_load_and_runбез утечек страниц. - Стартап-код
userspace/crt0.asmобеспечивает строгое 16-байтное выравнивание указателя стекаRSP & ~0xFперед вызовомmain(argc, argv)и передачу кода возврата вexit(res).
- Создание изолированных адресных пространств и запуск через
- Стандартная библиотека
libsnl(build/libsnl.a):<stdio.h>: Потоковый ввод/вывод (FILE*,stdin,stdout,stderr,fopen,fclose,fread,fwrite), форматированный вывод (printf,snprintfсо спецификаторами целых чисел, строк, символов, плавающей точки%fи точности.precision), посимвольный ввод/вывод.<stdlib.h>: Динамический аллокатор кучи (malloc,free,realloc,calloc) поверхSYS_BRK, конвертеры строк и чисел.<string.h>: Полная реализация строковых и блочных функций (strlen,strcpy,strchr,strstr,memcpy,memmove,memset,memcmp).<unistd.h>: Системные интерфейсыread,write,open,close,spawn,spawnv,listdir,stat,unlink,getpid,uptime,sleep,reboot,poweroff.<seld.h>: Нативные структуры и системные вызовы SeldOS (seld_get_framebuffer,seld_poll_key,seld_poll_mouse,seld_uptime,seld_ping,seld_clear,seld_set_console_rows,seld_net_info,seld_tcp_connect,seld_tcp_send,seld_tcp_recv,seld_tcp_close,seld_dns_resolve,seld_reboot,seld_poweroff).
Все утилиты скомпилированы в стандартный формат ELF-64 и размещены на диске SeldFS:
| Утилита / Файл | Назначение |
|---|---|
/bin/init |
Первичный супервизор пространства пользователя (PID 1). Проверяет безопасность системы и запускает /bin/sh |
/bin/fetch |
Фирменный системный инфографический баннер SeldOS с талисманом-пингвином и техническими метриками ядра/ОЗУ/видео |
/bin/reboot |
Перезагрузка рабочей станции через системный вызов SYS_REBOOT (контроллер 8042 KBC, чипсет 0xCF9, triple-fault) |
/bin/poweroff |
Завершение работы и отключение питания через вызов SYS_POWEROFF (ACPI D2A, APM, QEMU/Bochs shutoff) |
/bin/doom |
Полноценный 3D-шутер DOOM (doomgeneric) с наэкранным сенсорным пультом и звуковым движком |
doom1.wad |
Оригинальные игровые ресурсы DOOM (карты, спрайты, монстры, звуковые таблицы — 4.2 МБ) |
/bin/sh |
Интерактивная командная оболочка SNL Sovereign Shell (snl$ ) с сенсорным HUD и автоподхватом утилит |
/bin/fm |
Двухпанельный файловый менеджер (Seld Commander): навигация по томам, просмотр файлов, удаление, хоткеи и мышь |
/bin/tor |
Суверенный Tor/Onion Web-браузер: нативный TLS 1.3 / HTTP движок, инспектор X.509 сертификатов, DuckDuckGo .onion SERP, скроллинг, ссылки, drag-навигация. Устанавливается по требованию через download tor |
/bin/download |
Консольный сетевой загрузчик пакетов и файлов через нативный TCP стек SeldOS и криптографический протокол SeldTLS 1.3 |
/bin/ls |
Просмотр каталогов тома SeldFS с размером, блоками и SHA-256 хешами файлов |
/bin/cat |
Чтение и потоковый вывод содержимого текстовых и бинарных файлов |
/bin/echo |
Вывод строковых аргументов в стандартный поток вывода |
/bin/rm |
Удаление файлов из тома SeldFS через системный вызов SYS_UNLINK |
/bin/sha256sum |
Криптографический расчет SHA-256 и сверка с контрольной суммой в inode |
/bin/oracle |
Генеративный сакральный оракул (в духе TempleOS): генерация откровений из /oracle.txt с одновременным григорианским кантусом (290–680 Гц) через AC'97/SB16/PC Speaker |
oracle.txt |
Сакральный словарь оракула (2.5 МБ, 5047 блоков SeldFS) для буферизированной генерации откровений |
/bin/uname |
Вывод идентификатора системы: SNL Seld Not Linux 0.1-sec x86_64 Humboldt GPLv3 |
/bin/ps |
Опрос активных потоков планировщика ядра и отображение PID/статуса |
/bin/purge |
Иммунная антивирусная зачистка (OpSec Immune Sweep): криптографический аудит SeldFS, zero-wipe угроз, отстрел задач, сброс сокетов и включение Air-Gap |
/bin/stealth |
Суверенный Anti-DPI/ТСПУ Стелс-комплекс: управление In-Kernel TCP Desync, Air-Gap Stealth режимом и нативный C99 VLESS клиент |
/bin/diode |
Суверенный оптический и акустический Air-Gap дата-диод: физическая передача файлов без флешек (Zero-BadUSB) через анимированные QR-коды и акустический Bell 202 FSK мастер-ключ с шифрованием AES-128-GCM |
-
diode [send|qr|beep|keygen]— Суверенный двухфакторный физический Air-Gap дата-диод (/bin/diode):-
diode send <файл>— полный цикл передачи: шифрование файла в контейнер AES-128-GCM (AEAD), акустическая передача мастер-ключа по каналу Bell 202 FSK (PC Speaker / AC'97) с калиброванным TSC-таймингом (0 мкс дрейфа) и циклическая трансляция QR-кадров SELD1 на экране. -
diode qr <файл>— передача контейнера в тихом режиме (только оптический поток QR без звука). -
diode beep— воспроизведение акустического FSK мастер-ключа через системный динамик. -
diode keygen— генерация нового 40-строчного листа криптографических ключей в/airgap.key(HKDF-SHA256, 16 байт AES-128, Key ID).
-
-
purge— Мгновенный запуск иммунной зачистки ядра: аудит SHA-256 файлов SeldFS, уничтожение чужих бинарников, отстрел неавторизованных задач, принудительный сброс всех TCP-сокетов (RST), сброс кэшей и включение Air-Gap защиты. -
stealth [status|on|off|desync|vless]— Управление режимом скрытности и VLESS:-
stealth status— вывод состояния сетевого щита, TCP Desync и MAC-спуфинга. -
stealth on— активация режима абсолютной скрытности (блокировка UDP DNS, DoT-фоллбэк, подавление ICMP). -
stealth desync [split|fake|off]— настройка фрагментации SNI и HTTP Host в ядре. -
stealth vless <ip> <port> <uuid> <target_host> <target_port> [sni]— нативное подключение к VLESS-прокси через TLS 1.3.
-
-
desync [split|fake|off]— быстрое переключение режима десинхронизации TCP в ядре. -
jitter [on|off|status]— THL Keystroke Timing Obfuscation & Jitter:-
jitter on— активация квантования ввода сканкодов в пачки ~50 мс со случайным микро-джиттером CSPRNG. -
jitter off— возврат прямого низколатентного режима ввода. -
jitter status— проверка текущего статуса защиты клавиатуры.
-
-
unveil [<путь> <права> | lock]— Песочница файловой системы Seld-Unveil (OpenBSD unveil):-
unveil /bin rx— предоставление процессу прав на чтение и исполнение файлов в каталоге/bin. -
unveil lock— необратимая блокировка манифеста разрешенных путей для текущей сессии.
-
-
net [status|lock|unlock|ondemand|stealth|desync]— Управление аппаратным щитом Air-Gap Network Shield:-
net status— текущий статус изоляции (LOCKED, ON-DEMAND, UNLOCKED, STEALTH) и режим TCP Desync. -
net stealth— включение стелс-режима (Zero-Emission, блокировка UDP DNS, DoT-only, сброс ICMP). -
net lock— тотальная блокировка исходящего трафика на уровне сетевых драйверов. -
net ondemand— режим по умолчанию: сеть заглушена, временная аренда (lease) выдается только доверенным бинарникам (/bin/tor,/bin/download,/bin/stealth) или интерактивным командам пользователя. -
net unlock— открытый режим передачи clearnet.
-
-
ifconfig— отображение состояния сетевых интерфейсов, IP-адреса, маски подсети, шлюза, суверенного DNS (Control D Ads & Trackers — OpSec P2) и аппаратного MAC-адреса. -
dns <hostname> [dot]— Интерактивный суверенный DNS-резолвер:-
dns <host>— прямой резолвинг через Control D (76.76.2.2:53/ профиль Ads & Trackers). Если домен является рекламным трекером, выводится статус[BLOCKED] host -> 0.0.0.0. -
dns <host> dot— защищенный резолвинг через DNS-over-TLS (p2.freedns.controld.com:853/ TLS 1.3) в обход провайдерских фильтров.
-
-
ping [ip|домен]— отправка ICMP Echo Request пакетов и измерение задержки RTT в миллисекундах (с автоматической блокировкой попыток обращения к рекламным сетям). -
arp— просмотр таблицы соответствия IPv4 и аппаратных MAC-адресов локального сегмента. -
download <url> [файл]— скачивание файлов из сети по HTTP/HTTPS (SeldTLS 1.3) прямо в файловую систему SeldFS. -
download tor— Автоматическая установка суверенного Tor Browser:- Загрузка пакета по защищенному каналу SeldTLS 1.3 HTTPS.
- Верификация криптографической контрольной суммы SHA-256.
- Запись исполняемого файла в
/bin/torна диск SeldFS без раздувания базового ISO-образа.
-
pc [on|off]— Управление режимом рабочей станции (PC Mode):- Отключает мобильный сенсорный HUD и виртуальную клавиатуру.
- Устанавливает через
seld_set_console_rows(20)полноэкранный терминал$85 \times 20$ символов (320 px высоты текста). - Начисто очищает нижнюю область (
$y \in [200, 333]$ px) без остаточных артефактов и плавающих кнопок. - Создает маркер
pcmodeв SeldFS для персистентности режима между перезапусками.
-
mobile— Возврат сенсорного HUD и экранной клавиатуры:- Устанавливает изолированную текстовую консоль
seld_set_console_rows(12). - Восстанавливает сенсорную QWERTY-клавиатуру и панель быстрых кнопок в зоне
$y \in [200, 333]$ px.
- Устанавливает изолированную текстовую консоль
-
colors— вывод фирменной 39-цветной палитры SeldOS с отрисовкой полноэкранных тестовых плашек по всему разрешению 680×334 с идеальным пространственным разделением текста и видеопамяти. -
clear— полная очистка терминала с сохранением актуального режима геометрии (seld_clear()). -
beep [частота_Гц] [длительность_мс]— воспроизведение звукового тона через мультибэкенд аудио (AC'97 DMA, SB16, PC Speaker):-
beep— стандартный тоновый сигнал (440 Гц, 150 мс). -
beep <частота> [мс]— тоновый сигнал заданной частоты (20..20000 Гц) с защитой от целочисленного переполнения C. -
beep ona <1..127> [мс]— тоновый сигнал по логарифмической шкале полутонов (нота 60 = 440 Гц).
-
-
oracle [слов]— генеративный оракул в духе TempleOS (/bin/oracle):- Извлекает сакральный лексикон из
/oracle.txt(буферизированный ввод с энтропией RDTSC). - Генерация непрерывного сакрального дорийского/эолийского кантуса (
$D_4$ ..$E_5$, 290–680 Гц, 8 ступеней) через марковскую матрицу голосоведения с защитой от циклических повторений. - Быстрый непрерывный темп (~160 мс на слово, ~6.25 слов/с) со 100% легато без пауз на знаках препинания.
- Извлекает сакральный лексикон из
-
snd <ona|off>— непрерывное воспроизведение тона:-
snd <1..127>— включение непрерывного синтеза заданной ноты (бесшовный DMA-буфер). -
snd offилиsnd 0— мгновенное глушение звука.
-
-
kill <cpu|ram>— диагностический триггер Kernel Panic для тестирования трассировки стека и вывода регистров ядра. -
gpu off— диагностический триггер паники видеоподсистемы (GPU Panic). -
uptime— время непрерывной работы системы по таймеру PIT. -
mem— статистика физической памяти ядра и кучи. -
fetch— вывод фирменного неонового баннера SeldOS, талисмана-пингвина и системной инфографики (как при загрузке системы). -
reboot— программно-аппаратная перезагрузка рабочей станции через системный вызовSYS_REBOOT. -
poweroff(илиshutdown) — безопасное выключение питания компьютера через системный вызовSYS_POWEROFF. -
selftest— запуск набора верификационных тестов пространства пользователя Ring 3. -
exit— выход из оболочки.

Интерактивная командная оболочка SNL Sovereign Shell v0.1: графический векторный маскот на фреймбуфере и сенсорный пульт управления

Исполнение встроенных команд и утилит пространства пользователя Ring 3

Инспекция файловой системы SeldFS: структура блоков, размер и криптографические хеши SHA-256

Автономный верификационный комплекс самотестирования изоляции памяти и системных вызовов Ring 3

Архитектура иммунной зачистки Ring 0: криптографическая аттестация SHA-256, изоляция Air-Gap On-Demand и утилита purge
Операционная система SeldOS реализует бескомпромиссную модель приватности и криптографической защиты данных, синтезировав ключевые достижения наиболее защищенных операционных систем в истории компьютерной безопасности (Tinfoil Hat Linux, Tails, OpenBSD) и перенеся их на чистый bare-metal x86_64 без внешних зависимостей.
| Защитная парадигма | Практика в Tails / Tinfoil Hat / OpenBSD | Реализация в SeldOS (Humboldt Kernel) |
|---|---|---|
| Очистка памяти от остаточных данных (UAF / Secrets Leak) | В Linux зависит от компилятора (-ftrivial-auto-var-init) или тяжелых библиотек (OpenBSD freezero(3)). |
Zero-on-Free на уровне ядра и libc: принудительное обнуление полезной нагрузки в kfree (kmalloc.c) и free (libsnl/memory.c). |
| Утечки DNS для скрытых сервисов (RFC 7686) | В Tails блокируется сложными правилами iptables / nftables и редиректами в Tor DNS. |
Аппаратный RFC 7686 Onion Guard: нативный DNS-стек ядра (net_dns_resolve) и libc отбрасывает запросы к .onion с кодом -9 без генерации сетевых пакетов. |
| Фингерпринтинг TCP и предсказание сессий | Linux/BSD используют сложные формулы хеширования времени и секретных ключей (RFC 6528 / RFC 6056). | Криптографический ISN и случайный выбор портов: Initial Sequence Number и исходящие порты генерируются через CSPRNG ядра (rng_get_u64). |
| Песочница и сужение привилегий процессов | OpenBSD pledge(2) и unveil(2) — эталон минимизации поверхности атаки. |
Seld-Pledge (SYS_PLEDGE, вектор 48): необратимое сужение разрешенных системных вызовов процесса (PLEDGE_STDIO, RPATH, NET, DNS и др.) с аварийным завершением при нарушении. |
| Изоляция файловой системы по путям (Path Sandboxing) | OpenBSD unveil(2) скрывает неразрешенное дерево ФС от скомпрометированного софта. |
Seld-Unveil (SYS_UNVEIL, вектор 51): наложение белого списка путей с флагами r, w, x, c, наследованием в процессах и необратимой блокировкой unveil(NULL, NULL). |
| Тайминг-атаки и биометрическое профилирование печати | Tinfoil Hat Linux (THL) квантовал ввод с паузами для маскировки индивидуального ритма. | THL Keystroke Timing Jitter (векторы 52/53): ядровый буфер сканкодов в kbd.c с квантованием ~50 мс по таймеру PIT и криптографическим микро-джиттером CSPRNG. |
| Слежение на канальном уровне (MAC Address Tracking) | Tails использует macchanger перед поднятием сетевых интерфейсов через systemd/udev. |
Аппаратный эфемерный спуфинг MAC: драйвер Intel e1000 генерирует случайный unicast MAC с битом Locally Administered при каждой загрузке ядра. |
| Атаки холодной перезагрузки (Cold-Boot Attack) | Tails стирает память на этапе initramfs через зачистку свободных страниц kexec. | DoD Physical RAM Scrubbing & VGA Wipe: при вызове poweroff / reboot ядро обнуляет все нераспределенные 4 KiB фреймы RAM и очищает видеопамять. |
sequenceDiagram
autonumber
actor User as Оператор (Ring 3)
participant Shell as /bin/sh & /bin/tor
participant Gate as Syscall Gate (Pledge / Unveil)
participant Kernel as Ядро SeldOS (Ring 0)
participant Net as Сетевой стек (E1000)
User->>Shell: Интерактивный запуск команды / утилиты
Note over Shell: Активация THL Jitter (~50 ms PIT + CSPRNG)
Shell->>Gate: SYS_PLEDGE (PLEDGE_STDIO | PLEDGE_NET)
Shell->>Gate: SYS_UNVEIL ("/bin", "rx") + Unveil Lock
alt Нарушение песочницы (доступ вне манифеста)
Gate-->>Kernel: Неавторизованный вызов
Kernel--xShell: Мгновенное завершение процесса (EPERM -37)
else Авторизованная сетевая операция
Gate->>Kernel: SYS_NET_TCP_CONNECT
Kernel->>Net: In-Kernel TCP Desync (Anti-DPI) + SeldTLS 1.3
Net-->>Kernel: Защищенный поток данных
Kernel-->>Shell: Данные в изолированный буфер процесса
end
Shell->>Kernel: free(buffer) -> Zero-on-Free мгновенная зачистка памяти
[ Ring 3 Process (/bin/tor / /bin/sh) ]
|
+---> seld_pledge(PLEDGE_STDIO | PLEDGE_NET | PLEDGE_DNS)
| | (Vector 48: Необратимое ограничение вызовов)
|
+---> seld_unveil("/bin", "rx") / seld_unveil(NULL, NULL)
| | (Vector 51: Sandboxing путей SeldFS & Irreversible Lock)
|
+---> seld_set_jitter(1)
| | (Vector 52/53: 50ms PIT/CSPRNG Keystroke Dynamics Jitter)
|
+---> free(ptr) ---> Zero-on-Free (Зануление полезной нагрузки)
|
+---> seld_dns_resolve("*.onion") ---> [RFC 7686 Guard: BLOCKED (-9)]
|
============================================================================= [SYSCALL]
[ Ring 0 Kernel ]
|
+---> check_pledge(current_task, syscall_num) ---> EPERM (-37) при выходе за маску
|
+---> check_unveil(target_path, req_perm) ---> Access Denied (-37) вне белого списка
|
+---> kbd_timer_tick() ---> 50ms PIT Batching & CSPRNG Jitter
|
+---> kfree(ptr) ---> Zero-on-Free (Мгновенное обнуление ядерной кучи)
|
+---> net_tcp_connect() ---> RFC 6056 CSPRNG ISN & Ephemeral Port Randomization
|
+---> net_dns_resolve() ---> Strict Drop .onion (0 UDP/TCP packets emitted)
|
+---> e1000_randomize_mac() ---> Ephemeral Locally-Administered MAC on boot
|
+---> system_poweroff() / reboot() ---> Cold-Boot RAM Scrubbing & Display Wipe
- Ядро (
kernel/mm/kmalloc.c): При освобождении любого блока ядерной кучи черезkfree()функция немедленно перезаписывает всё тело блока нулями:Это гарантирует, что дескрипторы сокетов, ключи шифрования, фрагменты сетевых пакетов и структуры процессов не останутся в свободной памяти.memset((void*)(hdr + 1), 0, hdr->size);
- Стандартная библиотека
libsnl(userspace/libc/src/memory.c): Пользовательская функцияfree()аналогично зануляет пользовательские данные до обновления указателей связного списка кучи:memset((void*)(curr + 1), 0, curr->size);
Согласно стандарту RFC 7686, специальные доменные имена .onion никогда не должны резолвиться через публичные резолверы доменных имен.
- В ядре (
kernel/net/net.c): функцияnet_dns_resolve()анализирует суффикс доменного имени. При обнаружении.onionзапрос немедленно прерывается:if (is_onion_domain(hostname)) { serial_printf("[!] RFC 7686 violation! Attempted clearnet DNS query for .onion: %s -> DROPPED\n", hostname); return DNS_ERR_ONION_LEAK; /* -9 */ }
- В
libsnl(userspace/libc/src/syscall.c): вызовыseld_dns_resolve()иseld_dns_resolve_dot()перехватывают попытки резолвинга на раннем этапе и возвращают-9без обращения к DoT-серверам или сетевым сокетам.
Note
RFC 7686 Invariant: В отличие от стандартных ОС, где утечки DNS перехватываются сложными внешними правилами сетевого экрана, ядро Humboldt отсекает запросы к псевдодоменам .onion в нулевом кольце привилегий (Ring 0) ещё до формирования сетевого пакета, возвращая ошибку -9 (DNS_ERR_ONION_LEAK).
- Устранение предсказуемости: В классических ОС со слабыми стеками начальный номер последовательности (ISN) часто зависит от системного таймера (tick count), что позволяет удаленному атакующему внедрять поддельные TCP-сегменты (Blind In-Window Attacks).
- В SeldOS генератор ISN обращается напрямую к ядровому криптографическому генератору случайных чисел (
rng_get_u64()):sock->seq = (uint32_t)rng_get_u64();
- Выбор исходящего эфемерного порта в
net_tcp_connect()осуществляется равномерно-случайным выбором в защищенном диапазоне 49152..65535:uint16_t cand = 49152 + (uint16_t)(rng_get_u64() % 16383);
Вдохновленный механизмом OpenBSD pledge(2), системный вызов SYS_PLEDGE предоставляет процессам возможность добровольно ограничить набор доступных системных вызовов:
- Битовые маски привилегий:
PLEDGE_STDIO(0x001): Чтение/запись консоли, опрос ввода, базовая работа с памятью (SYS_BRK).PLEDGE_RPATH(0x002): Чтение файлов из файловой системы SeldFS (SYS_OPEN,SYS_READ).PLEDGE_WPATH(0x004): Запись и модификация файлов (SYS_WRITE).PLEDGE_CPATH(0x008): Создание и удаление файлов (SYS_UNLINK).PLEDGE_EXEC(0x010): Запуск дочерних исполняемых файлов ELF (SYS_EXEC).PLEDGE_NET(0x020): Создание TCP-сокетов и сетевая передача.PLEDGE_DNS(0x040): Резолвинг доменных имен.PLEDGE_AUDIO(0x080): Прямой доступ к звуковым интерфейсам.PLEDGE_PURGE(0x100): Право инициации глобальной иммунной зачистки.PLEDGE_REBOOT(0x200): Право перезагрузки и выключения рабочей станции.
- Инвариант необратимости (Monotonic Restriction):
Новая маска
new_maskможет быть только подмножеством текущей:task->pledge_mask &= new_mask. Восстановить утерянные привилегии невозможно ни при каких обстоятельствах. - При попытке выполнить системный вызов вне разрешенной маски ядро логирует нарушение безопасности и возвращает ошибку
-37(EPERM).
- При инициализации сетевой карты Intel 82540EM (
kernel/drivers/e1000.c) функцияe1000_randomize_mac()генерирует криптографически стойкий 48-битный адрес:rng_get_bytes(s_e1000_mac, 6); s_e1000_mac[0] = (s_e1000_mac[0] | 0x02) & ~0x01; // Locally Administered, Unicast
- Адрес немедленно прошивается в регистры аппаратной фильтрации пакетов контроллера (
E1000_REG_RALиE1000_REG_RAH), предотвращая пассивное отслеживание оборудования в локальных сетях и точках доступа.
- Проблема остаточной намагниченности DRAM: После отключения питания ячейки оперативной памяти сохраняют заряд от десятков секунд до нескольких минут (при охлаждении жидким азотом или сжатым воздухом — до часов).
- Комплексная нейтрализация при выключении и перезагрузке:
net_abort_all_connections()— принудительный разрыв всех открытых сетевых сессий пакетами TCP RST.vga_clear()— зануление видеопамяти и текстового буфера для предотвращения считывания конфиденциальной информации с экрана.pmm_secure_wipe_all_free()— ядро сканирует глобальную битовую карту физической памяти и перезаписывает нулями каждый свободный 4 КиБ фрейм через HHDM-шлюз.- Аппаратное обесточивание через ACPI D2A / APM / Bochs Shutdown.
Warning
Защита от Cold-Boot атак: При вызове выключения или перезагрузки ядро принудительно зануляет всю свободную физическую память через HHDM и стирает видеопамять VGA. Если компьютер внезапно обесточивается или подвергается физической криогенной заморозке чипов DRAM, остаточные данные, криптографические ключи и фрагменты буферов не могут быть извлечены злоумышленником.
- Концепция OpenBSD
unveil(2): Даже при ограничении привилегий черезpledge(2), процесс с правомrpathпотенциально может прочесть любой конфиденциальный файл в файловой системе. Механизмunveilрешает эту проблему, сужая видимость файловой системы до строго объявленного набора путей. - Флаги доступа (Permissions):
UNVEIL_READ(0x01/'r'): Право на открытие и чтение файлов (SYS_OPEN,SYS_READFILE,SYS_STAT).UNVEIL_WRITE(0x02/'w'): Право на модификацию и создание контента (SYS_WRITEFILE).UNVEIL_EXEC(0x04/'x'): Право на выполнение бинарников (SYS_SPAWN,SYS_EXEC,elf_load_and_run).UNVEIL_CREATE(0x08/'c'): Право на создание и удаление файлов (SYS_UNLINK).
- Инварианты безопасности:
- Первый вызов
seld_unveil(path, perms)переводит подсистему в активный режим (current_unveil_enforced = 1). С этого момента любой путь вне объявленного списка блокируется ядром (-37/EPERM). - Поддерживается как точечное открытие файлов (
unveil("/bin/ls", "x")), так и целых директорий (unveil("/bin", "rx")с сопоставлением префиксов). - Запечатывание песочницы (Irreversible Lock): вызов
seld_unveil(NULL, NULL)переводит конфигурацию в режимcurrent_unveil_locked = 1. Любые последующие попытки добавить правила пресекаются на уровне Ring 0. - Наследование правил: при вызове
elf_load_and_runдочерний процесс автоматически наследует ограничения родителя, предотвращая обход ограничений через вызовы дочерних утилит.
- Первый вызов
Caution
Необратимость блокировки Unveil Lock: После системного вызова seld_unveil(NULL, NULL) маска путей процесса и всех его будущих потомков блокируется навсегда до завершения сессии. Любая последующая попытка вызова SYS_UNVEIL приведет к аварийной ошибке безопасности -37 (EPERM).
- Угроза деанонимизации по таймингу ввода (Keystroke Dynamics Biometrics): Каждый пользователь обладает уникальным ритмом набора текста (межлитерные задержки Digraph/Trigraph Latency). Вредоносные скрипты и кейлоггеры способны составить биометрический профиль оператора даже при работе через Tor и VPN.
- Архитектура защиты в стиле Tinfoil Hat Linux на уровне прерываний:
- Прерывания клавиатуры
kbd_handle_interrupt()(IRQ 1) не сбрасывают сканкоды немедленно в активную очередь опросаSYS_POLLKEY. - Сканкоды аккумулируются в промежуточной очереди ядра (
kbd_stage_buf). - По тикам системного таймера PIT (100 Гц) функция
kbd_timer_tick()квантует сброс сканкодов в целевые буферы с фиксированным квантом ~50 мс. - Каждая пачка задерживается на случайное количество тиков (4..6 тиков), определяемое через ядровый CSPRNG (
rng_get_u64()). - Это полностью разрушает индивидуальную биометрическую сигнатуру набора текста оператора.
- Режим переключается через системные вызовы
SYS_OPSEC_SET_JITTER/SYS_OPSEC_GET_JITTERи команду шеллаjitter on|off|status. При отключении выполняется мгновенный flush очереди.
- Прерывания клавиатуры
Традиционный перенос файлов на флеш-накопителях несёт фатальные риски компрометации защищенной среды:
- BadUSB: перепрошивка микроконтроллеров USB-накопителей (Phison/Alcor) с эмуляцией HID-клавиатур или сетевых адаптеров для внедрения RCE.
- Двунаправленный канал заражения: возможность передачи шпионских модулей, малвари и метаданных хостовой ОС обратно в изолированную систему.
- Утечки метаданных: следы файловых систем, серийные номера накопителей и временные метки монтирования.
Для полной ликвидации этих векторов атак в SeldOS реализован суверенный двухфакторный физический Air-Gap дата-диод (/bin/diode):
sequenceDiagram
autonumber
actor User as Оператор SeldOS
participant VM as SeldOS (/bin/diode)
participant Host as Host Receiver (seld-airgap)
actor Arch as Хост Arch Linux
Note over Host: Фаза 1: Прием звукового ключа
User->>VM: diode send secret.txt
VM->>Host: 🔊 Акустический FSK-пакет (AC'97 / PC Speaker, ~9.8s)
Host-->>Host: Демодуляция Bell 202 FSK, валидация CRC32 -> Master Key Locked!
Note over Host: Автоматический переход к Фазе 2
VM->>Host: 📱 Циклическая трансляция QR-кодов SELD1 (экран / окно VM)
Host-->>Host: Захват кадров (grim / OpenCV), проверка контрольных сумм чанков
Host-->>Host: Сборка контейнера -> AES-128-GCM Decrypt -> Проверка SHA-256
Host->>Arch: 💾 Сохранение файла в ./received_files/secret.txt
- Оптический дата-диод (Payload Channel):
- Файл шифруется в контейнер AES-128-GCM (AEAD) с защитой от подделки (Fail-Closed) и разбивается на чанки по 72 байта (~96 байт Base64).
- Генерируются циклические анимированные QR-коды формата
SELD1:<seq>/<total>:<session_id>:<filename>:<chunk_base64>:<crc32>, отображаемые прямо на экране консоли SeldOS с частотой ~10 FPS. - Хост считывает кадры через нативный Wayland
grimсо скоростью 25+ FPS или через внешнюю веб-камеру. Физически не существует обратного оптического канала от камеры к монитору.
- Акустический канал мастер-ключа (Key Channel):
- Мастер-ключ передается через системный динамик или звуковую карту SeldOS (PC Speaker порт
0x61/ AC'97 DMA) частотной модуляцией Bell 202 FSK (1200 Гц — Space0, 2200 Гц — Mark1, 1800 Гц — пилот-тон). - Микросекундный тайминг TSC (
rdtsc) в SeldOS устраняет фазовый джиттер, обеспечивая ровно 0 мкс накопленного дрейфа на протяжении всего 248-битного пакета. - Приемник
seld-airgapна Arch Linux захватывает аудиосигнал из наушников (PipeWire loopback) или микрофона, демодулирует мастер-ключ, проверяет CRC32 и автоматически расшифровывает полученный файл без ручного ввода пароля.
- Мастер-ключ передается через системный динамик или звуковую карту SeldOS (PC Speaker порт
Все механизмы безопасности покрыты сквозным комплексом автоматического тестирования:
| Уровень проверки | Тестовый комплекс | Верифицируемые инварианты |
|---|---|---|
| Ring 0 (Ядро) | selftest_opsec() (8/8) |
Корректность Zero-on-Free в kmalloc, отбрасывание .onion в DNS, криптографический ISN, Keystroke Jitter. |
| Ring 3 (Init) | [init:CHECK 5/5] |
Валидация работы free() в libc и перехват DNS-утечек в раннем пользовательском пространстве. |
| Ring 3 (Shell) | selftest (8/8) |
Интерактивная проверка seld_pledge(), изоляции памяти и защиты от утечек данных. |
| Air-Gap Diode | tests/test_diode_airgap.py (15/15) |
Полный цикл: AES-128-GCM, Key Sheet 40 строк, чанки QR, Bell 202 FSK демодулятор 20–40 мс, 25% pulse-волна AC'97, сквозная эксфильтрация. |
| Интеграция | tests/verify_opsec_hardening.py |
Сквозной запуск QEMU: проверка serial-логов, spoofed MAC, сброс .onion, RAM scrub & poweroff. |
| Интеграция | tests/verify_unveil_jitter.py |
Сквозной запуск QEMU: верификация SYS_UNVEIL (регистрация, блокировка не-unveiled путей, lock) и Keystroke Jitter. |

Сквозная верификация 8/8 подсистем ядра, 8/8 тестов Ring 3, эфемерного MAC-адреса и блокировки утечек RFC 7686 в SNL Shell
В SeldOS реализована уникальная архитектура защищенного серфинга в сети Darknet (.onion) и Clearnet с гарантированной изоляцией хостовой системы:
+-------------------------------------------------------------------------------+
| SeldOS Userspace (Ring 3) |
| /bin/tor (Браузер с движком разметки, DuckDuckGo .onion, хоткеи, мышь) |
| SeldTLS 1.3 Cryptographic Engine (X25519 ECDH, AES-128-GCM, HKDF, X.509) |
+---------------------------------------^---------------------------------------+
| HTTPS (TLS 1.3) / HTTP TCP Syscalls
+---------------------------------------v---------------------------------------+
| SeldOS Humboldt Kernel (Ring 0) |
| Нативный TCP/IP Стек (ARP, IPv4, ICMP, UDP DNS, TCP) + E1000/PCnet |
+---------------------------------------^---------------------------------------+
| QEMU User Net (10.0.2.15 -> 10.0.2.2)
+---------------------------------------v---------------------------------------+
| OpSec Gateway на хосте (scripts/opsec_gateway.py: 10.0.2.2:8080) |
| * Санитизация HTML (удаление JS, CSS, рекламы, очистка разметки Wikipedia) |
| * Конвертация диакритики и кодировок в формат SeldOS (шрифты 8x16 / 5x7) |
| * TLS Termination (обработка SSL/HTTPS за пределами виртуальной машины) |
+---------------------------------------^---------------------------------------+
| SOCKS5 Proxy (127.0.0.1:9050)
+---------------------------------------v---------------------------------------+
| Tor Onion Routing Daemon (Host SOCKS5 / Webtunnel) |
| .onion скрытые сервисы (DuckDuckGo, Wikipedia, Tor Project и др.) |
+-------------------------------------------------------------------------------+
- DuckDuckGo .onion SERP: Интеграция с официальным луковым адресом поисковика DuckDuckGo (
duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion). Поисковые запросы выполняются по нажатию клавиши/или по клику на строку поиска. - Деанонимизирующий фильтр редиректов (DDG
uddgUnwrapper):- DuckDuckGo оборачивает внешние ссылки в редиректы вида
//duckduckgo.com/l/?uddg=<url_encoded_target>&rut=...или/l/?uddg=.... - Браузер Tor Browser автоматически парсит и разворачивает URL-encoded параметр
uddg=, извлекая истинный целевой адрес без утечки клик-стрима и паразитных редиректов. - Полноценная поддержка абсолютных (
http://,https://) и относительных путей (/,//) при переходе по ссылкам.
- DuckDuckGo оборачивает внешние ссылки в редиректы вида
- Гибридный туннелинг Clearnet & Darknet через Tor SOCKS5:
- При переходе на сайты Clearnet (
.com,.org,.ruи др.) трафик туннелируется через локальный Tor SOCKS5 демон хоста (ATYP = 0x03— доменные имена передаются напрямую в Tor-сеть). - Исключены любые DNS-утечки (DNS Leaks) на уровне провайдера: резолвинг выполняется выходными узлами Tor (Exit Nodes).
- При переходе на сайты Clearnet (
- Масштабируемые сетевые буферы:
- Буфер URL расширен до 512 байт (
HTTP_MAX_URL_LEN = 512) для поддержки длинных поисковых запросов и токенизированных ссылок. - Буфер ответа HTTP увеличен до 256 KiB (
HTTP_MAX_RESP_LEN = 262144) с поддержкой потокового чтения и чанкованных ответов.
- Буфер URL расширен до 512 байт (
- Движок разметки и рендеринга текста:
- Преобразование сложного HTML в компактный структурированный текст с разбивкой заголовков (
[H1],[H2]), списков (*) и цитат. - Подсветка гиперссылок
[1],[2]и навигация по ним (ввод номера ссылки или клик мышью). - Цветовая дифференциация элементов интерфейса в соответствии с 39-цветной палитрой Гумбольдта.
- Преобразование сложного HTML в компактный структурированный текст с разбивкой заголовков (
- Интерактивная навигация и хоткеи:
- j / Down — прокрутка страницы вниз на одну строку.
- k / Up — прокрутка страницы вверх на одну строку.
- Space / Page Down — прокрутка страницы вниз.
- b / Page Up — прокрутка страницы вверх.
- g / Home — переход в самое начало страницы.
- G / End — переход в самый конец страницы.
- / — интерактивный поиск в DuckDuckGo .onion.
- u — ввод произвольного URL (
.onionили Clearnet). - c — Просмотр инспектора безопасности сертификата X.509 (Cert Modal).
- r — перезагрузка текущей страницы.
- h — вывод интерактивной справки.
- q — выход в командную оболочку
snl$. - Цифровые клавиши 1–8 — быстрый переход по предустановленным закладкам портала (DuckDuckGo, Tor Project, EFF, TempleOS Wikipedia, Hidden Wiki и др.).
- Поддержка мыши: клики по навигационным элементам, интерактивный скроллбар и плавный drag-скроллинг страницы зажатием левой кнопки мыши.
В стандартную библиотеку libsnl интегрирована полностью суверенная реализация протокола TLS версии 1.3 (RFC 8446), написанная на чистом C без сторонних криптографических библиотек:
- Криптографические примитивы (C99):
- X25519 ECDH (
userspace/libc/src/seld_x25519.c): Протокол согласования ключей на эллиптической кривой Curve25519 (RFC 7748), обеспечивающий Perfect Forward Secrecy (совершенную прямую секретность). - HKDF (
userspace/libc/src/seld_hkdf.c): Механизм деривации ключей Extract-and-Expand на базе HMAC-SHA-256 (RFC 5869) для генерации Client/Server Handshake/Traffic Keys и IV. - AES-128-GCM (
userspace/libc/src/seld_aes128_gcm.c): Аутентифицированное шифрование с присоединенными данными (AEAD, NIST SP 800-38D) и 128-битным Galois GHASH контроллером целостности. - SHA-256 (
userspace/libc/src/seld_sha256.c): Криптографическое хеширование стека хэндшейка.
- X25519 ECDH (
- Подсистема DNS-over-TLS (DoT, RFC 7858,
seld_dns_resolve_dot):- Защищенный резолвинг DNS через шифрованный канал TLS 1.3 по порту 853 (
p2.freedns.controld.com/76.76.2.11). - Прямая упаковка бинарных DNS-фреймов с 2-байтным префиксом длины без накладных расходов HTTP/2.
- Валидация доверенной цепочки сертификатов ZeroSSL CA в движке SeldTLS.
- Защищенный резолвинг DNS через шифрованный канал TLS 1.3 по порту 853 (
- Инспектор сертификатов X.509 (Cert Inspector):
- По нажатию клавиши
cв браузере/bin/torоткрывается интерактивное модальное окно с параметрами защищенного соединения:- Статус соединения:
SECURE (TLS 1.3) - Доменное имя (SNI) и Common Name сертификата
- Издатель сертификата (Issuer / CA)
- Срок действия (Valid From / Valid Until)
- Алгоритм шифрования:
TLS_AES_128_GCM_SHA256 - Обмен ключами:
ECDH X25519
- Статус соединения:
- По нажатию клавиши
- Суверенная модель распространения ПО (
download tor):- Дистрибутивный ISO-образ не перегружен тяжелыми сетевыми компонентами: браузер
/bin/torкомпилируется независимо и скачивается по требованию по защищенному HTTPS-каналу SeldTLS 1.3 в постоянное дисковое хранилище SeldFS с автоматической валидацией SHA-256. - Двухуровневый зеркальный пул: автоматический приоритетный опрос локального зеркала разработчика (
10.0.2.2:8080) с прозрачным отказоустойчивым переключением на официальный GitHub-репозиторий при отсутствии локального шлюза.
- Дистрибутивный ISO-образ не перегружен тяжелыми сетевыми компонентами: браузер
- Харденинг песочницы Seld-Pledge для Tor Browser:
- Полная изоляция процесса через OpenBSD-style контракт
seld_pledge:PLEDGE_STDIO | PLEDGE_RPATH | PLEDGE_NET | PLEDGE_DNS | PLEDGE_AUDIO. - Защищенное воспроизведение аудио-отклика кликов гиперссылок (
seld_beep) без ложных срабатываний пресечения прав (SYS_BEEP). - Аппаратная защита рендерера HTML и декодера UTF-8 от выхода за границы буферов, разыменования нулевых указателей и дренаж очереди мыши для плавного перехода по ссылкам в SERP.
- Полная изоляция процесса через OpenBSD-style контракт
- Интуитивный TUI-интерфейс в классическом стиле Midnight Commander.
- Просмотр содержимого файловой системы SeldFS (имена файлов, точные размеры, цепочки блоков).
- Встроенный просмотр текстовых файлов и бинарных дампов.
- Быстрый запуск исполняемых бинарников прямо из файлового менеджера.
- Удаление файлов с подтверждением.
- Полная поддержка клавиатуры (стрелки, Enter, Tab) и мыши.
Подробнейшее руководство по сетевой архитектуре, настройке шлюзов, мостов Webtunnel, поиску и правилам OpSec вынесено в отдельный документ: 👉 SKILL_TOR.md
Для полного обхода технических средств противодействия угрозам (ТСПУ / РКН) и DPI-комплексов провайдеров в SeldOS реализован автономный стек десинхронизации и маскировки, полностью работающий внутри ядра и userspace без хостового Python-сервера:
+-----------------------------------------------------------------------------------------+
| SeldOS Userspace (Ring 3) |
| * /bin/stealth: Управление режимами (status, on, off, desync, vless) |
| * libsnl/seld_vless.c: Freestanding C99 VLESS Клиент (UUID, VLESS Header, SeldTLS 1.3)|
| * libc DoT Fallback: При блокировке UDP DNS (-10) -> авто-переход на DNS-over-TLS 853 |
+--------------------------------------------^--------------------------------------------+
| SYS_NET_SET_DESYNC / SYS_NET_SET_LOCK
+--------------------------------------------v--------------------------------------------+
| SeldOS Humboldt Kernel (Ring 0) |
| * In-Kernel TCP Desync: Сегментация TLS ClientHello (64B split) & HTTP Host Split |
| * Air-Gap Stealth Mode: Блокировка сырого UDP DNS (ERR -10) и подавление ICMP Echo |
| * Zero-Emission Profile: 0 исходящих пакетов до явного действия пользователя |
+-----------------------------------------------------------------------------------------+
- In-Kernel TCP Desync (SNI & Host Segmentation):
- ТСПУ осуществляет пассивный/активный анализ сетевых сессий на канальной скорости (100+ Gbps). Для экономии памяти и вычислительных ресурсов DPI-коробка не хранит буферы сборки TCP-сегментов между пакетами (State Table Exhaustion avoidance).
- При отправке TLS ClientHello ядро SeldOS автоматически дробит пакет: первые 64 байта (заголовок записи TLS, Handshake Header, Client Version, Random, Session ID) отправляются отдельным сегментом, после чего следует пауза 2 мс и отправка остатка с расширением SNI.
- В результате в сегменте №1 отсутствует домен (SNI), а сегмент №2 не содержит заголовка TLS Record (0x16 0x03 0x01/0x03). ТСПУ считает второй сегмент продолжением произвольного TCP-потока и пропускает соединение. Удаленный сервер штатно собирает TCP-поток через свой стек TCP/IP.
flowchart LR
subgraph SeldOS["🛡️ SeldOS Ring 0 (kernel/net/net.c)"]
A["TLS ClientHello<br/>(Полный пакет)"] --> B["Packet Splitter"]
B --> C["Сегмент 1 (64 байта)<br/>Заголовок записи + Session ID<br/>❌ НЕТ SNI-домена"]
B --> D["Микропауза 2 мс"]
D --> E["Сегмент 2 (Остаток)<br/>Расширения + SNI<br/>❌ НЕТ заголовка TLS"]
end
subgraph TSPU["🚫 ТСПУ / DPI Стек Провайдера"]
C --> F["Анализ сигнатур<br/>SNI отсутствует -> ПРОПУСК"]
E --> G["Анализ пакета<br/>Не является TLS Record -> ПРОПУСК"]
end
subgraph Web["🌐 Удаленный HTTPS Сервер"]
F --> H["Сборка TCP-потока<br/>(RFC TCP Reassembly)"]
G --> H
H --> I["Успешная сессия TLS 1.3"]
end
style SeldOS fill:#18181A,stroke:#0055FF,color:#F2F4F8
style TSPU fill:#2A2D34,stroke:#E84A5F,color:#F2F4F8
style Web fill:#18181A,stroke:#00AA00,color:#F2F4F8
- Air-Gap Stealth Mode (
NET_AIRGAP_STEALTH):- Zero-Emission Boot: При загрузке ОС не излучает ни одного широковещательного или зондирующего пакета.
- Блокировка открытого DNS (порт 53): Провайдерский перехват UDP DNS невозможен; ядро блокирует открытые запросы с кодом
-10, иlibsnlавтоматически переключается на DoT (порт 853) через TLS 1.3 с активным TCP desync. - ICMP Silent Guard: Подавление исходящих пингов предотвращает составление провайдером профиля активности хоста.
- Нативный C99 VLESS Клиент (
/bin/stealth vless):- Полная реализация протокола VLESS на чистом C без зависимостей от внешних скриптов.
- Поддержка шифрования TLS 1.3 через SeldTLS с кастомным SNI и маскировкой.
- Прямое установление защищенного туннеля через TCP сокеты ядра.
stealth statusилиnet status— просмотр текущего статуса Air-Gap Shield и режима TCP Desync.stealth onилиnet stealth— мгновенное включение режима максимальной скрытности.stealth desync splitилиdesync split— активация сегментации SNI.stealth desync fake— включение режима внедрения ложных сегментов.stealth vless <ip> <port> <uuid> <target_host> <target_port> [sni]— подключение к VLESS-прокси.

Верификация работы стелс-режима, блокировки ICMP и In-Kernel TCP Desync в SeldOS
В SeldOS встроен автономный сенсорный оверлей для терминала и 3D-шутера DOOM, позволяющий полноценно работать и играть на смартфонах и планшетах без подключения аппаратной клавиатуры:
+-------------------------------------------------------------------------+
| [ESC] [MAP] [ENTER] [< WPN] [WPN >] [HUD:ON] | <- Верхняя панель
|-------------------------------------------------------------------------|
| |
| |
| |
| [ UP ] [ RUN ] |
| [<STR] [STR>] [USE] [ FIRE ] |
| [LEFT] [RIGHT] [ ] |
| [DOWN] |
+-------------------------------------------------------------------------+
^ Левая рука (D-Pad + Стрейф) ^ Правая рука (Бой)
- Терминал (
/bin/sh):- Верхний ряд быстрых команд (Quick Bar): крупные сенсорные кнопки DOOM (запуск в 1 касание), LS, PS, UNAME, HELP, CLEAR, PC (мгновенное переключение в режим ПК), BEEP.
- Полноразмерная QWERTY-клавиатура (цифровой ряд, латиница, знаки препинания, SPACE, BKSP, ENTER).
- При нажатии клавиш выдаётся звуковой отклик через спикер.
- В игре DOOM:
- Левая рука (движение): виртуальный D-Pad (UP, DOWN, LEFT, RIGHT) и стрейф (< STR, STR >). На физической клавиатуре: W, A, S, D / стрелки навигации.
- Правая рука (действие): кнопки FIRE (или клавиша Ctrl), USE (или Space), RUN (или Shift).
- Верхняя сервисная панель: ESC, MAP (Tab), ENTER, переключение оружия < WPN / WPN > (1–7), переключатель HUD:ON / HUD:OFF.
- В режиме ПК (
pc) все экранные кнопки DOOM автоматически скрываются.
Tip
Переключение между сенсорным и десктопным режимом: В консоли шелла команда pc мгновенно скрывает экранную клавиатуру, переключая видеорежим на полноэкранный терминал mobile восстанавливает 12-строчную консоль со сенсорными кнопками и D-Pad.
Все компоненты ОС (загрузчик, ядро, юзерспейс, утилиты и файловая система SeldFS) упакованы в один компактный файл build/seldos.iso (5.5 МБ). Никаких дополнительных жестких дисков подключать не требуется.
📱 Развернуть пошаговую инструкцию для Android (Limbo x86)
- Установите Limbo x86 (версия для x86_64 PC, не ARM!).
- Скопируйте файл
seldos.isoв память смартфона. - Создайте новую виртуальную машину (New -> Custom):
- Board / CPU:
- Machine Type:
pc(Standard PC i440FX) - CPU Model:
qemu64 - CPU Cores:
2(или1) - RAM Memory (MB):
256или512
- Machine Type:
- Storage / Disks:
- Hard Disk:
None(снять галочки)
- Hard Disk:
- Removable:
- CDROM: Поставить галочку -> выбрать
seldos.iso
- CDROM: Поставить галочку -> выбрать
- Boot:
- Boot from Device:
CDROM
- Boot from Device:
- Graphics:
- Video Display:
std(Standard VGA) - Audio / Network:
None
- Video Display:
- User Interface:
- Interface:
SDL - Orientation:
Landscape - Fullscreen: Включено
- Mouse Mode:
Touchscreen(илиTrackpad)
- Interface:
- Board / CPU:
- Нажмите Play (зеленый треугольник) — система стартует мгновенно, и сразу откроется DOOM с наэкранным пультом.
🍏 Развернуть пошаговую инструкцию для iOS / iPadOS (UTM)
- Создайте виртуальную машину: Create a New Virtual Machine -> Emulate.
- Архитектура: x86_64.
- Память RAM:
256 MBили512 MB. - В разделе Drives: добавьте съемный накопитель (CD/DVD) и выберите
seldos.iso. - В разделе Input выберите режим Direct Touch.
Caution
Критический выбор аудиоконтроллера: По умолчанию VirtualBox выбирает Intel HD Audio, не поддерживаемый SeldOS. Чтобы слышать звук и музыку Оракула, обязательно переключите аудиоконтроллер на ICH AC97! VirtualBox не эмулирует PC Speaker напрямую в хост-систему, поэтому ядро Humboldt осуществляет непрерывный DMA-синтез в 48 кГц стереобуфер именно через эмулятор контроллера Intel 82801AA AC'97.
- Создайте новую виртуальную машину (New):
- Имя и тип ОС: Type:
Other, Version:Other/Unknown (64-bit). - Оперативная память (RAM):
512 MB(или1024 MB). - Процессор (CPU): 1 или 2 ядра.
- Имя и тип ОС: Type:
- В разделе Носители (Storage):
- Выберите оптический привод (IDE/SATA) -> укажите файл образа
build/seldos.iso.
- Выберите оптический привод (IDE/SATA) -> укажите файл образа
- В разделе Аудио (Audio):
- Поставьте галочку «Включить аудио» (
[x]). - Аудиодрайвер хоста (Host Audio Driver): выберите
PulseAudio(для Linux хостов с PulseAudio/PipeWire) илиALSA. - Аудиоконтроллер (Audio Controller): выберите строго ICH AC97!
- Поставьте галочку «Включить аудиовыход» (
[x]).
- Поставьте галочку «Включить аудио» (
- В разделе Сеть (Network):
- Тип подключения: NAT.
- Адаптер (в расширенных свойствах): Intel PRO/1000 MT Desktop (82540EM) (драйвер
e1000в ядре) или PCnet-FAST III.
- Запустите виртуальную машину — система загрузится мгновенно через графическую анимацию инициализации.
- Компилятор:
gcc(поддержка x86_64, freestanding). - Ассемблер:
nasm(версия 2.14+). - Линкер: GNU
ld. - Утилиты образов:
grub-mkrescue,xorriso. - Эмулятор для тестирования:
qemu-system-x86_64. - Интерпретатор:
python3.
Tip
Быстрый старт (One-Liner): Для мгновенной компиляции всех модулей, сборки дистрибутивного ISO и запуска в QEMU со звуком AC'97 и сетью выполните:
make all && make qemu# 1. Полная сборка ядра, libc, утилит, DOOM и создание единого ISO
make all
# 2. Запуск в QEMU со встроенной сетью E1000 и автоматическим стартом OpSec Gateway
make qemu
# 3. Запуск в QEMU с эмуляцией Intel AC'97, PC Speaker и сетевой картой E1000
qemu-system-x86_64 -cdrom build/seldos.iso -m 512M -device AC97,audiodev=audio0 -audiodev pa,id=audio0 -machine pcspk-audiodev=audio0 -net nic,model=e1000 -net user -serial stdio -vga std
# 4. Управление фоновым OpSec Gateway вручную
python3 scripts/opsec_gateway.py --status # Проверка статуса
python3 scripts/opsec_gateway.py --daemon # Запуск демона на порту 8080
python3 scripts/opsec_gateway.py --stop # Остановка демона
# 5. Автоматизированные тесты иммунной системы, OpSec и сетевого стека
python3 tests/verify_unveil_jitter.py # Комплексный тест SYS_UNVEIL sandboxing и THL Keystroke Jitter
python3 tests/verify_stealth_evasion.py # Комплексный тест Anti-TSPU/DPI, TCP Desync и /bin/stealth
python3 tests/verify_opsec_hardening.py # Комплексный тест всех 6 механизмов OpSec Hardening
python3 tests/verify_immune.py # Комплексный тест Air-Gap, purge и Zero-Trust защиты
python3 tests/verify_net.py # Тест нативного TCP/IP стека ядра и E1000 NIC
# 6. Очистка артефактов сборки
make cleanSeldOS поддерживает независимый, чистый кросс-архитектурный порт под процессорную архитектуру RISC-V 64-bit (RV64GC) с аппаратной защитой памяти, трехуровневым MMU (Sv39), изоляцией пользовательского пространства (Supervisor S-Mode / User U-Mode), быстрым ecall интерфейсом системных вызовов и монтированием файловой системы SeldFS.
- Базовый ISA & расширения (RV64GC):
- Поддержка набора инструкций
RV64IMAFDC(64-битный базис, аппаратное умножение/деление, атомарные операции A, числа с плавающей запятой одинарной и двойной точности F/D, 16-битные сжатые инструкции C). - Модель привилегий RISC-V:
- M-Mode (Machine Mode): Слой прошивки OpenSBI (стандартный виртуальный BIOS QEMU
virt). - S-Mode (Supervisor Mode): Ядро SeldOS Humboldt RV64 (
0x80200000). - U-Mode (User Mode): Пространство приложений SNL (
0x0000000000400000).
- M-Mode (Machine Mode): Слой прошивки OpenSBI (стандартный виртуальный BIOS QEMU
- Поддержка набора инструкций
- Sv39 Virtual Memory Management (MMU):
- 3-уровневая структура таблиц страниц (VPN[2], VPN[1], VPN[0] по 9 бит, 4 KiB страница).
- 39-битное виртуальное адресное пространство (до 512 GiB) с контролем бита
satp(MODE = 8). - Строгое соблюдение W^X: страницы
.textядра и userspace помечаютсяPTE_R | PTE_X, страницы данных и стекаPTE_R | PTE_W(без битаPTE_X). - Разделение прав: биты
PTE_Uвыставляются строго для userspace страниц, предотвращая выполнение непривилегированного кода с правами супервизора (аналог SMAP/SMEP). - Карта памяти RISC-V: физическая память начинается с
0x80000000, ядро загружается по адресу0x80200000, пользовательские процессы стартуют с0x0000000000400000, стек пользователей размещается в верхних адресах.
- Диспетчеризация ловушек и быстрые системные вызовы (
ecall):- Вектор прерываний и ловушек настраивается через регистр
stvecна низкоуровневый обработчикtrap_entry.S. - Системные вызовы инициируются инструкцией
ecallиз Ring 3 (U-Mode):- Номер системного вызова передается в регистре
a7. - Аргументы передаются в
a0–a4. - Результат возвращается в
a0. - При возврате из ловушки (
sret) регистрsepcинкрементируется на 4 байта (sepc += 4).
- Номер системного вызова передается в регистре
- Вектор прерываний и ловушек настраивается через регистр
- Драйверы и таймеры платформы QEMU virt:
- UART 16550A: MMIO-драйвер последовательного порта по адресу
0x10000000(kernel/drivers/serial.c) с прерываниями и прямой буферизацией терминала. - SBI Timer & Clock: Прерывания таймера через вызовы
sbi_ecall(SBI Extension ID0x00, Function ID0x00—sbi_set_timer) для квантования планировщика и задержек. - Встроенное хранилище SeldFS: Диск с userspace-бинарниками и системными файлами компилируется в ELF как объектный блоб (
disk_blob.S) и монтируется виртуальным блочным драйвером Ramdisk на старте ядра.
- UART 16550A: MMIO-драйвер последовательного порта по адресу
- Пользовательский рантайм
libsnlпод RISC-V:- Собственная реализация точки входа
userspace/crt0_riscv64.S. - Специфичный линкерный скрипт
userspace/linker_riscv64.ld. - Сборка нативного userspace набора (
/bin/init,/bin/sh,/bin/ls,/bin/cat,/bin/download,/bin/torи др.) компиляторомriscv64-linux-gnu-gccв чистом freestanding-режиме без glibc.
- Собственная реализация точки входа
# 1. Сборка ядра и диска под RISC-V 64-bit
make riscv
# 2. Интерактивный запуск в QEMU (S-mode через OpenSBI)
make qemu-riscv
# либо напрямую:
qemu-system-riscv64 -M virt -m 128M -nographic -bios default -kernel build/kernel-riscv64.elf
# 3. Запуск автоматизированного интеграционного набора тестов RISC-V
python3 tests/verify_riscv.pySeldOS распространяется на условиях лицензии GNU General Public License v3 (GPLv3).
Свобода запускать, изучать, модифицировать и делиться кодом гарантирована законом.