Arc System Loader

Published 2023-06-12

Arc system loader, or shortly arc is a system made inspired by multi-booting in computers. Arc tries to replicate this behaviour by mounting /system on host and switching between systems as user wants.
This can open door to new systems and more customizations! You can make your own changes and publish them on net so everyone can try it.

Arc is still in very early development. And the development takes time as the only source to debug this kind of system is via logs. I have to personally test tens not if hundreds of ways to achieve such problems. Initial release took about 15~ hours to make -it is not even that long!-. If you want to contribute to project you are free to. Github links below.

Installer creates a new folder with name of /systems. This is where your systems are stored. By default your current /system is copied to /systems/picotron. It is always the default system. Any modifications made by you persists.

While copying, boot.lua is renamed to sysboot.lua which is entry point of any arc system.
The reason is that boot.lua is replaced with custom boot file that copies selected system from /systems/{name} to /system and runs sysboot.lua. More details on boot.lua section.

After creation of systems folder and copy operation, /system directory is mounted on host. However, any changes made to /system does not persist. More details on boot.lua section.

Then boot.lua gets downloaded from github repo and is put under /system

Finally, metadata of /system is set to {system="picotron"}. You can access the current system via fetching metadata this way. Which is a huge + considering there might be apps that targets to work on multiple systems.

The job of boot.lua is pretty simple. It fetches current system from /systems folder.

After fetching, it prepares /system folder by removing anything inside /system folder and then copying everything from /systems/{selected system} to /system.

Finally it fetches /system/sysboot.lua, loads it and runs it.

Any more details of how they really work can be found on files.