25 сентября 2024 года состоялся релиз ELKS 0.8 (Embeddable Linux Kernel Subset) — открытого проекта ядра Linux для работы на ПК с устаревшими 16-разрядными процессорами Intel. Исходные коды решения распространяются на GitHub под лицензией GPLv2.
По информации OpenNET, проект ELKS работает с процессорами Intel 8086, 8088, 80188, 80186, 80286 и NEC V20/V30 и может использоваться на старых компьютерах класса IBM-PC XT / AT, а также советском компьютере MK-88, винтажной плате Monotech NuXT 2.0 и на SBC / SoC / FPGA, воссоздающих архитектуру IA16.
Проект ELKS развивается с 1995 года. Разработка решения начиналась как ответвление ядра Linux для устройств без блока управления памятью (MMU). Система поставляется в форме образов для записи на floppy-диски или запуска в эмуляторе QEMU.
Для тестирования доступен онлайн-эмулятор ELKS 0.7 (для входа набрать root, без пароля).
Помимо ядра Linux, адаптированного для 16-разрядных систем, проектом ELKS развивается набор стандартных утилит (ps, bc, tar, du, diff, netstat, mount, sed, xargs, grep, find, telnet, meminfo и т.п.), включая совместимый с bash командный интерпретатор, консольный оконный менеджер screen, текстовые редакторы Kilo и vi, графическое окружение на базе X-сервера Nano-X.
В ELKS предлагается два варианта сетевого стека. Это штатный TCP/IP стек ядра Linux и стек ktcp, работающий в пространстве пользователя. Из сетевых карт в проекте поддерживаются Ethernet-адаптеры, совместимые с NE2K и SMC. Также возможно создание каналов связи через последовательный порт при помощи SLIP и CSLIP. Из файловых систем ELKS поддерживает Minix v1, FAT12, FAT16 и FAT32. Настройка процесса загрузки ELKS осуществляется через сценарий /etc/rc.d/rc.sys. Формат исполняемых файлов заимствован из ОС Minix.
Основные изменения и доработки в ELKS 0.8:
• портирована игра Doom;
• добавлена возможность загрузки и запуска файлов в исполняемом формате OS/2;
• предоставлена возможность сборки программ Си-компилятором Open Watcom;
• при сборке по умолчанию включена поддержка сетевых адаптеров NE2K, WD и 3COM;
• включено сжатие исполняемых файлов, позволившее уместить больше приложений в образе флоппи-диска;
• в ядре реализована поддержка асинхронного ввода/вывода;
• добавлен новый драйвер для дисководов, использующий асинхронный ввод/вывод и позволяющий выполнять другие приложения во время ввода/вывода;
• во время загрузки обеспечена настройка параметров ядра, таких как размер кучи, число задач, inode и файлов, для выделения ресурсов в зависимости от размера памяти;
• улучшены возможности отладки, такие как дизассемблер и механизмы трассировки системных вызовов и функций;
• проведена оптимизация использования кэша L1/L2;
• добавлены функции для точного измерения времени;
• из других систем портированы команды ttyclock, ttypong, ttytetris и md5/md5sum;
• добавлен системный вызов sysctl и связанная с ним команда.
Источник новости: habr.com