The root folder is just "/". If you don't know much of computers, you can think of it like the top folder. It's where the rom folder is stored. You just use the built in move functions to move your files around.
Type this into the shell, subsituting folder/file with your program path obviously.
mv folder/file /startup
This will be simpler if your programs are already on the turtles, so don't worry about downloading them to the main computer. The turtles will just need to use shell.run on whatever they receive through rednet.
local id,message = rednet.receive()
shell.run(message)
Then you could just send the name of your program, or whatever you type into the shell when you run it normally.
Now to override the original pullEvent, so this function is always active, would be something like this
local oldPull = _G.os.pullEventRaw --create a local backup of the original
local newPull --forward declaration of the new pull function, this is done so we can reference the function itself from within itself
newPull = function(sString) --create our own pullEvent functon
local tEvent = {oldPull(sFilter)} --use the original to get events
if tEvent[1] == "rednet_message" then --check if the event was a rednet message
_G.os.pullEventRaw = oldPull --restore the old pullEvent before running the program
shell.run(tEvent[3])
_G.os.pullEventRaw = newPull --override pullEvent again after the program is done
end
return unpack(tEvent) --return the events, so any other uses of pullEvent work like normal
end
_G.os.pullEventRaw = newPull --bootup override
This is untested code, so it might not work :P/> But ask if you have any questions.