LimonOS Custom x86-64 Kernel
Собственная операционная система с нуля (x86_64). Загрузчик: Limine.
以下正文同步自 Hacker News 最新,版权归原站所有,已转换为易读排版。
Собственная операционная система с нуля (x86_64). Загрузчик: Limine.
Страница теперь разбирается в дерево (DOM), поверх которого работает CSS:
citrus теперь настоящее окно браузера: кнопки «назад/вперёд/обновить», адресная строка, кликабельные ссылки (адрес под мышью виден внизу), поля ввода и кнопки форм (поиск работает), заголовки/жирный/списки/код/pre, alt картинок, кодировка windows-1251, переходы и <meta refresh>, история, прокрутка и полоса прокрутки.
В 0.6 citrus https://… и lima install на настоящих сайтах (Google, GitHub) не работали. Причины найдены и исправлены:
TLS 1.3 (свой, с нуля: SHA-256, HMAC, HKDF, AES-128-GCM, X25519 — все проверены по официальным тестовым векторам и против настоящего TLS-сервера). citrus https://… и lima install теперь реально работают по https, в том числе с GitHub.
⚠️ Честно про безопасность: подлинность сертификата сервера НЕ проверяется (нет разбора 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.
Один раз: в 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." I do — so I'm fine. TempleOS is a tragedy, not a role model. I do it for fun, in my free time.
LimonOS is alive. The pace is insane, but now the main thing is stability and clarity. Slowing down, locking in the foundation: build, tests, diagram. From here it takes off. Follow the development.
Нет повторной отправки НАШИХ TCP-сегментов (в NAT VirtualBox/QEMU потерь почти не бывает, но в плохой сети запрос может зависнуть).
Скачивать большие файлы и «всё подряд» пока некуда: нет драйвера диска и файловой системы (этап 7), всё живёт в ОЗУ. Загрузка по web_get ограничена буфером.
Сайты, где всё на JavaScript (современный Google, YouTube и т.п.), в текстовом Citrus будут почти пустыми — это не ошибка сети.
TLS есть, но без проверки сертификата (см. выше) — не используй для паролей/платежей.
Установленные через lima пакеты показывают только карточку (имя, параметры, README) — запускать чужой код пока нечем, это следующий большой этап (Pulp).
Браузер Citrus — только текст: без картинок, без переходов по ссылкам, без CSS.
Сетевая карта только Intel e1000 (VirtualBox, QEMU -nic model=e1000). Для реальных ПК нужны драйверы других карт.
Память карты сетевой карты отображается через HHDM загрузчика (кэшируемо). В VirtualBox этого достаточно, для настоящего железа нужны свои таблицы страниц.
Только PS/2 клавиатура и мышь. На реальных ПК с USB-клавиатурой работает, если BIOS эмулирует PS/2 (Legacy USB Support); нормальный USB-драйвер (xHCI) — отдельный этап.
Рабочий стол рисуется максимум в 1920x1080, на больших экранах занимает левый верхний угол.
limine.h написан мной вручную; если команда juice пишет «карта памяти недоступна», замени его официальным из репозитория Limine.
Если Limine ругается на строку resolution: в limine.conf, просто удали её.
AI в терминале
aikey <сюда ваш ключ API от openrouter.ai>
Вот сам LimonOS0.9VAI Скачать готовую сборку (.zip)
И вот и с командой grab что бы с сервера устоновить себе нужный key.txt ключ API для ИИ в терминале Скачать готовую сборку (.zip)
LimonOS: Как я написал с нуля 64-битное монолитное ядро со своим сетевым стеком и TLS 1.3
Дисклеймер для старта: LimonOS — это НЕ Linux. Это НЕ Unix. Это НЕ очередной дистрибутив, не форк и не сборка на базе Ubuntu/Arch. Здесь нет ни одной строчки чужого кода операционной системы. Это чистокровное монолитное ядро, написанное с абсолютного нуля на языке C (Си) и Ассемблере под современную архитектуру x86_64. Всё, от обработки прерываний процессора до отрисовки оконного интерфейса и шифрования сетевых пакетов, написано вручную. Большинство хобби-разработчиков ОС (OSDev) останавливаются на этапе «вывел Hello World в текстовый режим VGA и написал змейку». Я пошёл по хардкорному пути и создал живую, подключённую к интернету экосистему.
• Режим работы: Настоящий 64-битный Long Mode (elf64-x86-64). Никакого устаревшего 32-битного legacy. Компиляция под -m64 -march=x86-64. • Загрузчик: Современный Limine с полноценной поддержкой как классического BIOS, так и UEFI. • Низкоуровневый базис: Свои таблицы дескрипторов и прерываний (GDT, IDT), программируемый контроллер прерываний (PIC), драйверы клавиатуры/мыши (PS/2), системный таймер и часы реального времени (RTC). Полноценная инициализация шины PCI. • Память: Кастомный менеджер физических страниц памяти + собственная куча (kmalloc/kfree). На данном этапе вся система работает в едином адресном пространстве в режиме ядра (Ring 0).
🌐 Главная уникальность: Свой сетевой стек и TLS 1.3 прямо в Ring 0
Это то, чем могут похвастаться единицы независимых проектов в мире. В ядро встроен собственный сетевой стек, написанный под сетевую карту Intel e1000: Ethernet ➡️ ARP ➡️ IP ➡️ ICMP (Ping) ➡️ UDP ➡️ TCP ➡️ DHCP ➡️ DNS Но и этого показалось мало. Поверх TCP я реализовал собственный протокол TLS 1.3 с самописной криптографической библиотекой! Никакого OpenSSL или MbedTLS. Всё с нуля: • Хеширование и имитозащита: SHA-256, HMAC, HKDF • Симметричное шифрование: AES-GCM • Обмен ключами: X25519 Благодаря этому система способна делать безопасные HTTPS-запросы в глобальную сеть. Прямо сейчас внутри LimonOS работает терминал, который через сеть общается с ИИ-моделями (через OpenRouter API) и выводит ответы на экран. ОС буквально осознаёт свою архитектуру в реальном времени.
Никакого консольного убожества 80х25. • Вывод графики реализован через Framebuffer. • Разработана собственная графическая оконная подсистема Orchard («Сад»). • Написан кастомный терминал Zest («Цедра») с полноценной поддержкой отрисовки шрифтов и кириллицы. • Написаны первые графические приложения (например, калькулятор «Лимонка»).
Система уже умеет то, чего не умеют 99% хобби-ядер, но это только начало. Сейчас я перехожу к этапу Pulp («Мякоть»), который превратит LimonOS в классическую защищенную ОС:
Built my own OS — LimonOS. Not Linux, not Unix, my own kernel, 98% C. Four days in: networking, a browser, and AI right in the terminal. Yes, I used an AI assistant — head was killing me, tons of errors — but I understand every line. GitHub link below, on Windows just run the bat file (WSL + Limine), try it on a VM.
Lessons so far: bat + WSL build is a time bomb → moving to Docker. Kernel tests aren't luxury, they're survival. Browser/networking is a time sink → HTTP only, no HTTPS for now. AI is fine, but I don't accept code I can't explain. Drawing the kernel diagram now, while it's st
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。