将脚本移植到内核是一件很帅的工作,lua现已被移植到NetBSD的内核中,也有一个叫lunatik的项目把lua移植到了linux内核,只可惜只支撑x86,不支撑arm,在网上查找了下,没有找到现成的,所以自己研讨了下,现将它共享出来。
移植到arm渠道,主要是要从头完成setjmp和longjmp两个函数,网上相关的材料很少,最终总算找到一个klibc的项目,里边有setmp和longjmp的arm渠道的完成,所以直接拿来用了,不用说,当看到脚本在内核中履行并打印出”hello,world”的时分,仍是很exciting的。这儿讲下运用的办法,详细的代码能够去下面的方位下载:
https://github.com/negtise/luak-arm
1、先下载代码,下载下来后把里边的lunatik目录放到lib目录下。
2、装备内核:
2.1修正lib/Kconfig,增加以下的装备
config LUNATIK
tristate “Enable Lunatik Lua Engine”
default y
help
Enables the Lunatik Lua engine which allows execution of Lua code
2.2装备lua,生成ko文件
履行:
make ARCH=arm menuconfig
然后:
config Lunatik to compile as Module
Library routines —>
3、编译:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules SUBDIRS=lib/lunatik
会生成一个luak.ko
4、调试:
履行以下指令:
cat /proc/kmsg &
echo 9 > /proc/sys/kernel/printk
insmod luak.ko
echo “print(hello,world)” > /sys/class/lunak/eval
假如一却OK,将会输出:
hello,world
这但是从内核里履行的。
5.怎么扩展功用?
能够检查bindings目录中的代码。