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)
      
    
  











