Lunatik est un framework de script pour le noyau. Linux En Lua. En cours de développement. LabLua à l'intérieur Lua dans le noyau avec des références claires à l'expérience Utilisation de Lua dans le noyau NetBSD.
Principaux composants
- Interpréteur Lua modifié pour fonctionner dans le noyau ;
- pilotes de périphériques (écrits en Lua) ;
- outils de ligne de commande pour exĂ©cuter des scripts et gĂ©rer les environnements dâexĂ©cution Ă partir de lâespace utilisateur ;
- API C pour charger et exécuter des scripts et gérer les environnements d'exécution à partir du noyau ;
- API Lua pour lier les outils du noyau Ă Scripts Lua.
Nouvelles fonctionnalités
- Mécanisme de synchronisation des threads : API de barriÚre d'achÚvement, changements et exemples.
- Mécanismes de filtrage du trafic : API xtables, API de Netfilter, changements.
- Mécanisme de file d'attente API KFIFO: kfifo, changements.
- Prise en charge plus large du noyau, compatibilité entre versions Linux 5. +.
- Support OpenWRT О OpenWiFi: référentiel séparé.
- Prise en charge linguistique Script lunaire (compile en Lua) : dépÎt moontastik, DépÎt du langage MoonScript.
- Plusieurs corrections de bugs et améliorations.
L'équipe de développement de Lunatik souhaite remercier les contributeurs suivants qui ont rendu cette version possible : sav О marcelstanley de Ring-0 Networks, Sheharyaar (shéhéryaar), jperon, vincentmli, rouillé et poussiéreux, glk0, et bien sûr à tous les autres participants travaillant sur Lunatik.
Exemple de pilote de périphérique pour générer des « mots de passe » simples
â /lib/modules/lua/passwd.lua â â implĂ©mente /dev/passwd pour gĂ©nĂ©rer des mots de passe â utilisation : $ sudo lunatik run passwd â $ head -c /dev/passwd local device = require("device") local linux = require("linux") local function nop() end â ne rien faire local s = linux.stat local driver = {name = "passwd", open = nop, release = nop, mode = s.IRUGO} function driver:read() â read(2) callback â gĂ©nĂ©rer des caractĂšres ASCII imprimables alĂ©atoires return string.char(linux.random(32, 126)) end â crĂ©er un nouveau pĂ©riphĂ©rique de caractĂšres device.new(driver)
Source: linux.org.ru
