diff --git a/package/gluon-core/files/lib/gluon/upgrade/core/invariant/013-reboot-on-oom b/package/gluon-core/files/lib/gluon/upgrade/core/invariant/013-reboot-on-oom
index a457a9c39c600f884854909cbcc6c11ec9465d82..48cfc5a8f38ee50e176ec6e6cd2ba34ccb1633ab 100755
--- a/package/gluon-core/files/lib/gluon/upgrade/core/invariant/013-reboot-on-oom
+++ b/package/gluon-core/files/lib/gluon/upgrade/core/invariant/013-reboot-on-oom
@@ -1,5 +1,5 @@
-#!/bin/sh
+#!/usr/bin/lua
 
-. /lib/gluon/functions/sysctl.sh
+local sysctl = require 'gluon.sysctl'
 
-sysctl_set vm.panic_on_oom 1
+sysctl.set('vm.panic_on_oom', 1)
diff --git a/package/gluon-core/files/usr/lib/lua/gluon/sysctl.lua b/package/gluon-core/files/usr/lib/lua/gluon/sysctl.lua
new file mode 100644
index 0000000000000000000000000000000000000000..44b0c21786133ef0b9a3649678899a96e0f2170a
--- /dev/null
+++ b/package/gluon-core/files/usr/lib/lua/gluon/sysctl.lua
@@ -0,0 +1,8 @@
+local util = require 'gluon.util'
+
+
+module 'gluon.sysctl'
+
+function set(name, value)
+	util.replace_prefix('/etc/sysctl.conf', name .. '=', name .. '=' .. value .. '\n')
+end