forked from Hyperion/HyperionOS
45 lines
1.1 KiB
Plaintext
45 lines
1.1 KiB
Plaintext
--:Minify:--
|
|
local kernel = ...
|
|
kernel.log("Loading init system...")
|
|
kernel.log("InitPath: "..kernel.config.initPath)
|
|
local handle = kernel.vfs.open(kernel.config.initPath, "r")
|
|
local data = kernel.vfs.read(handle, 1024 * 1024 * 4)
|
|
kernel.vfs.close(handle)
|
|
|
|
local initFunc, err = load(data, "@sysinit")
|
|
if not initFunc then
|
|
error("Failed to load init system: "..err)
|
|
end
|
|
|
|
kernel.tasks["1"] = {
|
|
coro=coroutine.create(function()
|
|
local ok, err = xpcall(initFunc, debug.traceback, kernel)
|
|
if not ok then
|
|
kernel.panic("Init system crashed: "..tostring(err))
|
|
else
|
|
kernel.panic("Init system exited: "..tostring(err))
|
|
end
|
|
end),
|
|
name="sysinit",
|
|
status="R",
|
|
pid=1,
|
|
tgid=1,
|
|
user="root",
|
|
uid=0,
|
|
fd={},
|
|
exit="",
|
|
sleep=0,
|
|
ivs=0,
|
|
vs=0,
|
|
parent=kernel.kernelTask,
|
|
siblings=kernel.kernelTask.children,
|
|
children={},
|
|
syscallReturn={},
|
|
cwd="/",
|
|
timeSlice=0,
|
|
lastTime=0,
|
|
totalTime=0,
|
|
numRuns=0
|
|
}
|
|
kernel.log("created init task with PID 1")
|
|
kernel.log("Initializing init system...") |