if os.taskInfo(1) and os.pid() ~= 1 then return false, "init already started" end os.setenv("PWD","/boot") io.input("/dev/null") io.output("/dev/syslog") local f = io.open("/boot/cfg/hostname","rb") local hostname = computer.address():sub(1,8) if f then hostname = f:read("*l") f:close() end os.setenv("HOSTNAME",hostname) syslog(string.format("Hostname set to %s",hostname)) local pids = {} local function loadlist() local f = io.open("/boot/cfg/init.txt","rb") if not f then return false end for line in f:read("*a"):gmatch("[^\r\n]+") do pids[line] = -1 end f:close() end loadlist() while true do for k,v in pairs(pids) do if not os.taskInfo(v) then syslog("Starting service "..k) pids[k] = os.spawnfile("/boot/service/"..k) end end coroutine.yield() end