Lunatik — это фреймворк для написания сценариев для ядра Linux на Lua. Разрабатывается LabLua в рамках Lua in kernel с явными ссылками на опыт использования Lua в ядре NetBSD.
Основные компоненты
- интерпретатор Lua, модифицированный для работы в ядре;
- драйвера устройства (написаны на Lua);
- средства командной строки для запуска сценариев и управления средами выполнения из пользовательского пространства;
- C API для загрузки и запуска сценариев и управления средами выполнения из ядра;
- Lua API для привязки средств ядра к Lua-скриптам.
Новые возможности
- Механизм синхронизации потоков: completion barrier API, изменения и примеры.
- Механизмы фильтрации трафика: xtables API, netfilter API, изменения.
- Механизм очередей KFIFO API: kfifo, изменения.
- Более широкая поддержка ядер, совместимость с версиями Linux 5.+.
- Поддержка OpenWRT и OpenWiFi: отдельный репозиторий.
- Поддержка языка MoonScript (компилируется в Lua): репозиторий moontastik, репозиторий языка MoonScript.
- Множественные исправления ошибок и доработки.
Группа разработчиков Lunatik выражает благодарность контрибуторам, благодаря которым стал возможен этот релиз: sav и marcelstanley из Ring-0 Networks, sheharyaar, jperon, vincentmli, rustedusted, glk0, ну и конечно же всем другим участникам, работающими над Lunatik.
Пример драйвера устройства для генерации простых «паролей»
— /lib/modules/lua/passwd.lua — — implements /dev/passwd for generate passwords — usage: $ sudo lunatik run passwd — $ head -c <width> /dev/passwd local device = require("device") local linux = require("linux") local function nop() end — do nothing local s = linux.stat local driver = {name = "passwd", open = nop, release = nop, mode = s.IRUGO} function driver:read() — read(2) callback — generate random ASCII printable characters return string.char(linux.random(32, 126)) end — creates a new character device device.new(driver)
Источник: linux.org.ru
