Skip to content
HN On Hacker News ↗

GitHub - AnonimusShamshiAlex/LimonOS: Custom 64-bit monolithic operating system kernel written in C, featuring a graphical desktop environment, networking, and built-in AI terminal support

▲ 26 points • 5 comments • by DrMoris • 2w ago • HN discussion ↗

Pangram verdict · v3.3

We believe this text is mainly AI, with some human-written content.

95 %

AI likelihood · overall

AI
5% human-written 95% AI-generated
SEGMENTS · HUMAN 2 of 14
SEGMENTS · AI 12 of 14
WORD COUNT 1,466
PEAK AI % 100% · §4
Analyzed
Oct 27
backend: pangram/v3.3
Segments scanned
14 windows
avg 105 words each
Distribution
5 / 95%
human / AI fraction
Verdict
AI
Pangram v3.3

Article text · 1,466 words · 14 segments analyzed

Human AI-generated
§1 Human · 0%

Собственная операционная система с нуля (x86_64). Загрузчик: Limine.

§2 Human · 0%

Update aikey file keys.txt Что нового в 0.9: DOM + CSS в Цитрусе Страница теперь разбирается в дерево (DOM), поверх которого работает CSS: селекторы: тег, #id, .класс, тег.класс, потомок (a b), дочерний (a > b), списки через запятую; специфичность и !important; стили из <style> и из style="…"; правила с :hover, [attr], @media пропускаются.

§3 AI · 100%

свойства: display (none/block/inline), visibility, opacity:0 (скрытое не рисуется), color, background (фон страницы), font-weight (жирный), text-align (по центру/справа), white-space:pre; цвета #rgb, #rrggbb, rgb(), названия.

§4 AI · 100%

страница рисуется на светлом фоне как в обычных браузерах (или на тёмном, если так задано в CSS).

§5 AI · 100%

символы, которых нет в шрифте, заменяются похожими (ʻ→', é→e, ў→у, кавычки и т.д.). Браузер представляется серверам как текстовый (Lynx): Google и DuckDuckGo отдают такому простую страницу, работающую БЕЗ JavaScript. Нет: внешних файлов CSS (<link rel=stylesheet>), float/position/размеров, картинок, JavaScript (следующий большой этап). Что нового в 0.8: браузер Цитрус 2 citrus теперь настоящее окно браузера: кнопки «назад/вперёд/обновить», адресная строка, кликабельные ссылки (адрес под мышью виден внизу), поля ввода и кнопки форм (поиск работает), заголовки/жирный/списки/код/pre, alt картинок, кодировка windows-1251, переходы и <meta refresh>, история, прокрутка и полоса прокрутки.

§6 AI · 100%

citrus — домашняя страница с поиском (DuckDuckGo); citrus example.com; citrus слова для поиска.

§7 AI · 100%

Клавиши: Ctrl+L или F6 — адрес; Enter — открыть/отправить форму; Tab — следующее поле; Alt+←/→ или Backspace — назад/вперёд; Ctrl+R — обновить; ↑↓ PgUp PgDn Home End Пробел — прокрутка; Esc — выйти из поля.

§8 AI · 100%

Тест парсера на компьютере: tools/hosttest/browser_test.c.

§9 AI · 100%

Честно: CSS, JavaScript и картинки пока НЕ поддерживаются. Сайты, целиком построенные на JavaScript (современный Google, YouTube, соцсети), откроются пустыми или с просьбой включить JS — это ограничение движка, а не сети. Для «открыть всё» нужны следующие этапы: картинки (PNG/JPEG/GIF), CSS, затем движок JavaScript — это месяцы работы. Что было в 0.7 (починка интернета) В 0.6 citrus https://… и lima install на настоящих сайтах (Google, GitHub) не работали. Причины найдены и исправлены: TLS: записи у больших сайтов до 16 КБ, а буферы были 2–4 КБ → теперь буферы 16 КБ, а огромный Certificate (несколько записей) считается потоком и не хранится. Несколько handshake-сообщений в одной записи тоже разбираются. TCP: данные, пришедшие пока их никто не читает, подтверждались (ACK), но выбрасывались. Теперь у каждого соединения свой приёмный буфер 32 КБ, честное окно приёма, повторы/дыры/перекрытия сегментов обрабатываются. Ошибки: код ошибки TLS считался неверно, поэтому любая ошибка выглядела как «Нет ответа от сервера». Теперь показывается реальная причина (DNS / нет соединения / TLS: …). Переходы и chunked: http://google.com → https://www.google.com теперь идёт сам (до 6 переходов); ответы Transfer-Encoding: chunked собираются. Новая функция ядра web_get(url, …) — как curl -L. Куча ядра растёт по размеру памяти (до 128 МиБ); скрипты VirtualBox теперь дают ВМ 2 ГБ ОЗУ и подключают пустой диск 10 ГБ (диск понадобится для файловой системы, этап 7 — сама ОС его пока не использует). Проверки на компьютере (tools/hosttest/): run.sh гоняет тот же tls.c против настоящего openssl s_server (цепочка сертификатов > 16 КБ, 162 КБ данных сошлись байт в байт); http_logic_test.c и tcp_logic_test.c — разбор HTTP и приём TCP. Проверка прямо в LimonOS (виртуальная машина) — на твоей стороне: citrus https://google.com, lima install cscan.

§10 AI · 100%

Что умело раньше (этап 6) TLS 1.3 (свой, с нуля: SHA-256, HMAC, HKDF, AES-128-GCM, X25519 — все проверены по официальным тестовым векторам и против настоящего TLS-сервера). citrus https://… и lima install теперь реально работают по https, в том числе с GitHub.

§11 AI · 100%

⚠ Честно про безопасность: подлинность сертификата сервера НЕ проверяется (нет разбора X.509 и проверки RSA/ECDSA подписи). Канал зашифрован и защищён от пассивного прослушивания, но ничто не подтверждает, что вы говорите именно с настоящим сайтом — как curl -k. Полноценная проверка сертификата это отдельная большая задача. Генератор случайности на RDRAND (с резервным вариантом для старых процессоров). Было раньше (этап 5) TCP-клиент и HTTP (GET), только http:// — без TLS перенаправления на https узнаёт и честно о них пишет Citrus — простой текстовый браузер: citrus example.com, стрелки/PgUp/PgDn — прокрутка ping как ещё одно имя команды sonar Lima — менеджер программ: lima list, lima install cscan (качает README с GitHub), затем cscan <аргументы> показывает карточку пакета (пока без запуска — нет загрузчика программ) Было раньше (этап 4) Память: менеджер страниц, куча kmalloc Шина PCI, драйвер сетевой карты Intel e1000 (её использует VirtualBox) Сеть Vine: ARP, IP, ICMP (ping), UDP, DHCP, DNS — выход в интернет Определение среды (VirtualBox, QEMU, реальное железо) по CPUID Было раньше (этап 3) Загрузка через BIOS и UEFI, свои GDT, IDT, прерывания Таймер (100 Гц), клавиатура PS/2 (EN + RU, переключение F2), мышь PS/2 Рабочий стол: обои, значки, окна (перетаскивание, свернуть, закрыть), панель задач, меню «Лимон», 5 тем оформления, часы Терминал со своими командами, историей (стрелки вверх/вниз) и редактированием строки Данные железа: процессор (CPUID), карта памяти, часы BIOS Сборка и запуск (Ubuntu / Debian / WSL) sudo apt install build-essential nasm qemu-system-x86 xorriso git ovmf make iso # соберёт ядро и образ LimonOS.iso (первый раз скачает Limine) make run # запуск в QEMU (BIOS) make run-uefi # запуск в QEMU (UEFI) В QEMU мышь «захватывается» кликом по окну, освободить: Ctrl+Alt+G. Быстрый старт на Windows (WSL + VirtualBox) Один раз: в PowerShell от администратора wsl --install -d Ubuntu, перезагрузка, открыть Ubuntu и задать пароль. Распакуй архив в обычную папку (не запускай из архива) и дважды кликни windows-run.bat. Он соберёт образ внутри WSL, создаст виртуальную машину в VirtualBox и запустит её. В окне LimonOS открой терминал и набери vine, sonar 8.8.8.8, lookup example.com. Запуск в VirtualBox (подробно) Собери образ в Linux/WSL: make iso Linux/WSL с VirtualBox: make vbox. Windows: запусти scripts\vbox-create.bat. Скрипт сам создаёт машину: 512 МБ, BIOS, сеть NAT с картой Intel PRO/1000 MT, мышь PS/2. В системе: vine (адрес), sonar 8.8.8.8 (ping), lookup example.com (DNS), pci (устройства). Вручную: Тип «Other/Unknown (64-bit)», Система: чипсет PIIX3, включить I/O APIC, EFI выключить; Сеть: NAT, адаптер Intel PRO/1000 MT Desktop; Указатель: PS/2 (не USB-планшет). Мышь в VirtualBox захватывается кликом, освободить — правый Ctrl. Горячие клавиши Клавиша Действие F2 раскладка RU / EN F3 новый терминал F4 закрыть активное окно F5 следующая тема Alt+Tab переключить окно Ctrl+L / Ctrl+C / Ctrl+U очистить / отменить строку / стереть строку Команды терминала (у каждой есть русское имя) Команда Рус. Что делает zest цедра список команд squeeze выжать очистить экран терминала peel кожура сведения о системе с лимоном juice сок память: сколько сока осталось engine мотор процессор и его возможности sundial время дата и время (часы BIOS) pulse пульс сколько система работает say сказать повторить сказанное abacus счёты калькулятор: abacus 2+3*(4-1) palette краски цвета и темы tint оттенок сменить тему: tint lime lang язык раскладка: lang ru / lang en twin двойник ещё один терминал pci шина устройства материнской платы ping — то же самое, что sonar citrus цитрус простой браузер: citrus example.com lima лима ставить программы: lima list, lima install cscan vine лоза сеть; vine dhcp — получить адрес sonar эхо ping: sonar 8.8.8.8 lookup найти DNS: lookup example.com omen знамение лимонное предсказание rebirth заново перезагрузка bye пока выключение Запись на флешку Сначала проверь образ в QEMU, потом: sudo ./scripts/write-usb.sh LimonOS.iso Скрипт покажет диски и потребует подтверждение, данные на флешке будут стёрты. В Windows: Rufus, режим «DD-образ». Структура kernel/kernel.c точка входа, запуск всех подсистем kernel/gdt.c idt.c pic.c isr.S interrupts.c прерывания (при ошибке ядра — экран паники) kernel/timer.c rtc.c keyboard.c mouse.c ps2.c устройства kernel/gfx.c графика с двойной буферизацией kernel/font.c шрифт 8x16 (генерируется tools/gen_font.py, нужен Pillow) kernel/term.c shell.c терминал и команды kernel/desktop.c рабочий стол и окна kernel/cpuinfo.c sysinfo.c power.c сведения о железе, питание kernel/limine.h мой минимальный заголовок протокола Limine Here's the short English version: So I built my own OS — LimonOS. Not Linux, not Unix, my own kernel, 98% C. Four days of development — already has networking, a browser, and AI right in the terminal. Yeah, I used an AI assistant, my head was killing me, tons of errors, but I understand the code, I can answer for every line. GitHub link below, on Windows you just run the bat file — it builds via WSL and Limine, check it out on a VM. What I learned in these four days: building via bat and WSL is a time bomb, moving to Docker. Kernel tests aren't a luxury, they're survival — writing basic checks for memory, timer, disk. Browser and networking are a black hole for time, limiting scope: HTTP only, text and links only, no HTTPS. AI is fine, but the rule is iron: I don't accept code until I can explain what it does. And I'm drawing the kernel diagram right now, while there's still little code. Forgot about "becoming like Linux" — Linux 0.01 was eight thousand lines and thirty years with thousands of people. My goal is "stably does what I need." About Terry Davis: it's cool to make my own OS like him, but he never asked "will I go crazy."

§12 AI · 100%

I do — so I'm fine.

§13 AI · 100%

TempleOS is a tragedy, not a role model. I do it for fun, in my free time.

§14 AI · 100%

LimonOS is alive.