LINUX.ORG.RU

Lunatik v3.6 — релиз среды исполнения Lua в пространстве ядра Linux

 , , , ,

Lunatik v3.6 — релиз среды исполнения Lua в пространстве ядра Linux

0

4

Lunatik — это фреймворк для написания сценариев для ядра Linux на Lua. Разрабатывается LabLua в рамках Lua in kernel с явными ссылками на опыт использования Lua в ядре NetBSD.

Основные компоненты

  • интерпретатор Lua, модифицированный для работы в ядре;
  • драйвера устройства (написаны на Lua);
  • средства командной строки для запуска сценариев и управления средами выполнения из пользовательского пространства;
  • C API для загрузки и запуска сценариев и управления средами выполнения из ядра;
  • Lua API для привязки средств ядра к Lua-скриптам.

Новые возможности


Группа разработчиков 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)

>>> Исходный код релиза

>>> Документация, исходный код и примеры проекта

>>> Сопутствующие проекты

>>> Анонс в официальной группе Lua

★★★★★

Проверено: CrX ()
Последнее исправление: hobbit (всего исправлений: 9)
Ответ на: комментарий от LightDiver

В самом ядре только интерпретатор и механизм загрузки скриптов. А нужны эти скрипты для того, чтобы можно было что-то очень быстро сделать на уровне ядра без компиляции полноценного модуля.

CYB3R ★★★★★
()
Ответ на: комментарий от CYB3R

А можно пример? Для тех, кто знает что такое луа, значт что токое ядро более смутно, но не знает что можно делать на уровне ядра.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Ну пример — тот же BPF. Но это не скрипты, это специально скомпилированные программы, работающие в ядре в ограниченном окружении. LSM (Apparmor, SELinux) грузят в себя кучу политик, которые компилируются в конечные автоматы и таблицы из userspace.

gns ★★★★★
()
Ответ на: комментарий от gagarin0

Суть, как я и сказал: луа проще, на ней можно быстренько что то накалякать, а на си придется это делать дольше. Вроде так.

LightDiver ★★★★★
()
Ответ на: комментарий от gns

Прототипы на живом ядре никто не отлаживает.

кроме этих ребят https://www.netbsd.org/~lneto/bsdconbr15.pdf

кстати советую всем кто первый раз слышит о Lunatik (первое упоминание 2008 год!) посмотреть ссылку, часть вопросов в треде отпадут сами собой

gagarin0
()
Ответ на: комментарий от gagarin0

У меня нет вопросов. Статью по ссылке из новости я первым делом по диагонали прочел. Ну можно, наверное, поведение пакетного фильтра прототипировать, а потом переписывать на том же Си, чего нет... Как я понимаю, эта цель не основная. Хотя, для OpenWRT может и хорошо, пересобираться меньше.

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от gagarin0

Пожалуй ты прав, работает это все немного не так, как я ожидал. Для прототипирования может и пойдет. Ну и как канал получения какой-то оперативной информации из ядра. Типа нетлинком пользоваться геморно, а вот условно температуру процессора узнать можно одним вызовом.

gns ★★★★★
()
Ответ на: комментарий от LightDiver

На самый верх скроль, там пример даже с подсветкой синтаксиса и комментариями.

CYB3R ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.