53 lines
1.5 KiB
Lua
53 lines
1.5 KiB
Lua
|
function start()
|
||
|
|
||
|
local fs = require "filesystem"
|
||
|
local rootfs = fs.get("/")
|
||
|
local free = rootfs.spaceTotal() - rootfs.spaceUsed()
|
||
|
local function unpack(from,to)
|
||
|
if not fs.exists(from) then return false end
|
||
|
io.write(string.format("Unpacking %s to %s... ", from, to))
|
||
|
local opwd = os.getenv("PWD")
|
||
|
os.setenv("PWD", to)
|
||
|
os.execute(string.format("mtar -xz '%s'",from))
|
||
|
os.setenv("PWD", opwd)
|
||
|
print("Done!")
|
||
|
end
|
||
|
local function link(from)
|
||
|
from=fs.canonical(from)
|
||
|
local dt = {from}
|
||
|
for _, dir in ipairs(dt) do
|
||
|
for file in fs.list(dir) do
|
||
|
local fp = fs.concat(dir,file)
|
||
|
if file:match("/$") then
|
||
|
dt[#dt+1] = fp
|
||
|
else
|
||
|
local lt = fp:sub(#from+1)
|
||
|
while not fs.isDirectory(fs.path(lt)) and not fs.isLink(fs.path(lt)) do
|
||
|
lt = fs.path(lt)
|
||
|
end
|
||
|
fs.link(fs.concat(from,lt), lt)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
if rootfs.isReadOnly() then -- live floppy
|
||
|
print("\27[2J\27[HPreparing live environment...")
|
||
|
fs.makeDirectory("/tmp/live")
|
||
|
unpack("/.live.mtar.lss","/tmp/live")
|
||
|
link("/tmp/live")
|
||
|
elseif not rootfs.isReadOnly() and free < 2^17 then -- installed on small media
|
||
|
print("\27[2J\27[HPreparing constrained environment...")
|
||
|
fs.makeDirectory("/tmp/live")
|
||
|
unpack("/.live.mtar.lss","/tmp/live")
|
||
|
unpack("/.inst.mtar.lss","/tmp/live")
|
||
|
link("/tmp/live")
|
||
|
else -- extract and deactivate
|
||
|
print("\27[2J\27[HFinalising installation...")
|
||
|
unpack("/.live.mtar.lss","/")
|
||
|
unpack("/.inst.mtar.lss","/")
|
||
|
unpack("/.extra.mtar.lss","/")
|
||
|
os.execute("rc livefdd disable")
|
||
|
end
|
||
|
|
||
|
end
|