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