mirror of
https://github.com/20kdc/OC-KittenOS.git
synced 2024-11-27 04:48:05 +11:00
Fix my stupidity w/ nbox2018 (yes, again), improve insthead and README
This commit is contained in:
parent
cda9a8e939
commit
a22ac86b2d
70
README.md
70
README.md
@ -1,10 +1,31 @@
|
|||||||
# KittenOS NEO (pre-release)
|
# KittenOS NEO
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
The first commit is after I got the installer working again after the new compression system (BDIVIDE).
|
## Description
|
||||||
|
|
||||||
That's what the "SYSTEM HEROES" thing is about.
|
At least in theory: "efficient. multi-tasking. clean. security-oriented".
|
||||||
|
|
||||||
|
KittenOS NEO is an OpenComputers operating system designed for Tier 1 hardware.
|
||||||
|
|
||||||
|
This means, among other things, it has an operating overhead limit of 192KiB real-world (on 32-bit or 64-bit).
|
||||||
|
|
||||||
|
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.)
|
||||||
|
|
||||||
|
NOTE: Attempting to run the KittenOS NEO installer as a program in an OS will fail,
|
||||||
|
giving you instructions as shown here.
|
||||||
|
|
||||||
## Authors & Licensing
|
## Authors & Licensing
|
||||||
|
|
||||||
@ -93,28 +114,6 @@ So anyone who wants the design to be made even cleaner should probably reread th
|
|||||||
(In R0, editing the kernel causes 192K systems to fail to open filedialogs. I've fixed this in R1.
|
(In R0, editing the kernel causes 192K systems to fail to open filedialogs. I've fixed this in R1.
|
||||||
I don't know if I've screwed this up in R2, because all this focus on usability improvements has probably gone back a step regarding memory use.)
|
I don't know if I've screwed this up in R2, because all this focus on usability improvements has probably gone back a step regarding memory use.)
|
||||||
|
|
||||||
## Description
|
|
||||||
|
|
||||||
At least in theory: "efficient. multi-tasking. clean. security-oriented".
|
|
||||||
|
|
||||||
KittenOS NEO is an OpenComputers operating system designed for Tier 1 hardware.
|
|
||||||
|
|
||||||
This means, among other things, it has an operating overhead limit of 192KiB real-world (on 32-bit or 64-bit).
|
|
||||||
|
|
||||||
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
|
## Policy regarding updates
|
||||||
|
|
||||||
KittenOS NEO's installer, including the full KittenOS NEO base operating system, is 65536 bytes or below.
|
KittenOS NEO's installer, including the full KittenOS NEO base operating system, is 65536 bytes or below.
|
||||||
@ -133,24 +132,7 @@ 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`.
|
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.
|
Secondly, for a compressed installer, you use `package.sh`.
|
||||||
|
|
||||||
Secondly, for a compressed installer, you use `package.sh` to rebuild `code.tar` and `inst.lua`, which also prepares the final structure of the repository to upload.
|
That rebuilds `code.tar` and `inst.lua`, and also prepares the final structure of the repository to upload.
|
||||||
|
|
||||||
## Kernel Architecture
|
|
||||||
|
|
||||||
KittenOS NEO is an idea of what a Lua-based 'efficient' microkernel might look like.
|
|
||||||
|
|
||||||
Scheduling is based entirely around uptime and timers,
|
|
||||||
which cause something to be executed at a given uptime.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
## 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.
|
|
||||||
|
|
||||||
|
18
insthead.lua
18
insthead.lua
@ -1,13 +1,10 @@
|
|||||||
-- KOSNEO inst.
|
-- KOSNEO inst.
|
||||||
-- This is released into the public domain.
|
-- This is released into the public domain.
|
||||||
-- No warranty is provided, implied or otherwise.
|
-- No warranty is provided, implied or otherwise.
|
||||||
local C, O, G, D = component, computer
|
C, O, G, D = component, computer
|
||||||
|
assert(C, "To install, please copy as init.lua to a blank disk or a system to update, then remove all other disks and reboot.")
|
||||||
|
|
||||||
if not C then
|
sa = C.list("screen", true)()
|
||||||
error("Copy as init.lua to a blank disk, then remove all other disks and reboot. Thank you!")
|
|
||||||
end
|
|
||||||
|
|
||||||
local sa = C.list("screen", true)()
|
|
||||||
if sa then
|
if sa then
|
||||||
G = C.list("gpu", true)()
|
G = C.list("gpu", true)()
|
||||||
if G then
|
if G then
|
||||||
@ -27,16 +24,16 @@ end
|
|||||||
|
|
||||||
D = C.proxy(O.getBootAddress())
|
D = C.proxy(O.getBootAddress())
|
||||||
|
|
||||||
local tFN,tFSR,tW,tF="Starting...",0,0
|
tFN,tFSR,tW,tF="Starting...",0,0
|
||||||
|
|
||||||
local function tO(oct)
|
function tO(oct)
|
||||||
local v = oct:byte(#oct) - 0x30
|
local v = oct:byte(#oct) - 0x30
|
||||||
if #oct > 1 then
|
if #oct > 1 then
|
||||||
return (tO(oct:sub(1, #oct - 1)) * 8) + v
|
return (tO(oct:sub(1, #oct - 1)) * 8) + v
|
||||||
end
|
end
|
||||||
return v
|
return v
|
||||||
end
|
end
|
||||||
local function tA(s)
|
function tA(s)
|
||||||
if tW > 0 then
|
if tW > 0 then
|
||||||
tW = tW - 1
|
tW = tW - 1
|
||||||
return
|
return
|
||||||
@ -74,7 +71,8 @@ local function tA(s)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local sN,sC,dieCB,sector=0,0
|
sN, sC = 0, 0
|
||||||
|
|
||||||
function sector(n)
|
function sector(n)
|
||||||
tA(n)
|
tA(n)
|
||||||
sN = sN + 1
|
sN = sN + 1
|
||||||
|
@ -232,9 +232,9 @@ local programStates = {
|
|||||||
end
|
end
|
||||||
return {
|
return {
|
||||||
"Tinting. Enter 6 hex digits, ",
|
"Tinting. Enter 6 hex digits, ",
|
||||||
" which are 0 to 9, and A to F. "
|
" which are 0 to 9, and A to F. ",
|
||||||
a,
|
a,
|
||||||
b,
|
b
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
function (ka, kc)
|
function (ka, kc)
|
||||||
|
Loading…
Reference in New Issue
Block a user