2018-03-30 08:03:52 +11:00
# KittenOS NEO (pre-release)
2018-03-19 10:10:54 +11:00
2018-03-30 08:03:52 +11:00
As per usual, no warranty, not my responsibility if this breaks, or if you somehow try to run it on an actual (non-OpenComputers) computer.
2018-03-19 10:10:54 +11:00
The first commit is after I got the installer working again after the new compression system (BDIVIDE).
2018-03-30 08:03:52 +11:00
That's what the "SYSTEM HEROES" thing is about.
2018-03-19 10:10:54 +11:00
## Description
2018-03-30 08:03:52 +11:00
At least in theory: "efficient. multi-tasking. clean. security-oriented".
2018-03-19 10:10:54 +11:00
KittenOS NEO is an OpenComputers operating system designed for Tier 1 hardware.
2018-03-30 08:03:52 +11:00
This means, among other things, it has an operating overhead limit of 192KiB real-world (on 32-bit or 64-bit).
2018-03-19 10:10:54 +11:00
Unlike the original KittenOS (now in the "legacy" branch), it is also designed with some attempt at cleanliness.
## User Guide
It is recommended that you take out your OpenComputers CPU, and shift-right-click until it says "Architecture: Lua 5.3", if possible.
Then simply download the installer from inst.lua here, rename it to "init.lua" and put it on a blank disk.
Finally, remove all other disks and reboot.
KittenOS NEO will install itself.
(This does not account for custom EEPROMs.)
## Policy regarding updates
KittenOS NEO's installer, including the full KittenOS NEO base operating system, is 65536 bytes or below.
As the installer must be loaded in full into RAM, this is not negotiable.
If it can't be kept this way with the current compressor, then a better compressor will have to be made.
2018-03-30 08:03:52 +11:00
Everything following is completely a draft. This is more like a guideline rather than actual policy.
2018-03-19 10:10:54 +11:00
All kernel or security-critical `sys-` process bugs will cause an installer update.
Other bugs will merely result in an updated copy in the repository.
This copy will be copied to installer code if and only if another condition requires the installer code be updated.
The code in the `code/` folder is the code meant for the installer.
2018-03-30 08:03:52 +11:00
Non-installer code is in the `repository/` , and thus accessible via CLAW.
2018-03-19 10:10:54 +11:00
2018-03-30 08:03:52 +11:00
As HTTPS is not used for this due to various weirdness that occurs when I try, I'm hosting the repository and `inst.lua` at `http://20kdc.duckdns.org/neo` .
2018-03-19 10:10:54 +11:00
Requests for additional features in system APIs will NOT cause an installer update.
## Building
The tools are meant for internal use, so are thus designed to run on some generic Unix.
2018-03-30 08:03:52 +11:00
The tools that I haven't gotten rid of are the ones that still work properly.
Firstly, for an uncompressed installer (just to test installer basecode), you use `mkucinst.lua` .
This kind of has some overlap with `package.sh` so that needs to be dealt with at some point.
2018-03-19 10:10:54 +11:00
2018-03-30 08:03:52 +11:00
Secondly, for a compressed installer, you use `package.sh` to rebuild `code.tar` , then use something along the lines of:
2018-03-19 10:10:54 +11:00
2018-03-30 08:03:52 +11:00
lua heroes.lua `wc -c code.tar` > inst.lua
This will build the compressed installer.
2018-03-19 10:10:54 +11:00
## Kernel Architecture
2018-03-30 08:03:52 +11:00
KittenOS NEO is an idea of what a Lua-based efficient microkernel might look like.
2018-03-19 10:10:54 +11:00
Scheduling is based entirely around uptime and timers,
which cause something to be executed at a given uptime.
2018-03-30 08:03:52 +11:00
That said, for a microkernel it's still a bit larger than I'd have hoped.
If anyone has any ideas, put them in an issue? If they're not too damaging, I'll use the saved space to add a thank-you-note to them in the kernel.
2018-03-19 10:10:54 +11:00
## Installer Architecture
The installer is split into a generic TAR extractor frontend `insthead.lua` and a replacable compression backend (written in by relevant tools - in current versions, `heroes.lua` is where it starts).
There was more details on this but the details changed.
## License
This is released into the public domain.
No warranty is provided, implied or otherwise.