Monolith is a monolithic, multitasking, multiuser, multiscreen operating system for the OpenComputers Minecraft mod. Documentation is mostly available in the DOCS.md files placed in the various directories. If any docs are missing, please raise an issue or let me know through Discord or IRC (Ocawesome101#5343 or Ocawesome101 in #oc on EsperNet).
Documentation is available online here.
Current LOC: 9681
To install Monolith to any empty hard disk, run the following commands in the OpenOS shell. You will need an internet card.
cd /home
wget https://raw.githubusercontent.com/ocawesome101/oc-monolith/master/installer.lua
./installer.lua
Note that the installation process assumes the current root filesystem is mounted as writable. The Monolith installer will refuse to install to the root filesystem.
The latest pre-built release will be downloaded through the installer. At any time, you may upgrade with mpm install ocawesome101/oc-monolith/base
.
To build Monolith, you'll need Lua 5.3, git
, make
, and probably a Linux or macOS system (alternatively, you can download the latest prebuilt release in CPIO form from release.cpio
in the repo). Clone this repository (git clone https://github.com/ocawesome101/oc-monolith
), cd
to it, and run make
. Copy all files in build
to the root of your OpenComputers drive.
The following is a (hopefully up-to-date) representation of what I want to get done, and what I have gotten done, towards completing Monolith.
- Monolith
- Kernel
- Base
- Logger (
kernel.logger
) -
component
- Users (
kernel.users
) - Modules (
kernel.module
) - Filesystem management (
kernel.filesystem
) -
computer
- Userspace sandbox (
kernel.sandbox
) - Scheduler (
kernel.thread
) - Load init
- InitMe init system
- Base
-
package
-
io
- Service management (
initsvc
) - Script management (
scripts
, not directly user-facing)
- Services
-
getty
-
mountd
-
devfs
-
procfs
- Minitel daemon
- GERTi daemon
-
- Libraries
-
buffer
-
class
(may remove) -
config
-
shell
-
sha3
-
serialization
-
sh
-
text
-
time
-
users
-
vt100
-
protect
-
cp.copy
-
event
-
uuid
-
internet
-
net
-
minitel
-
GERTi
-
-
filesystem
-
signals
-
thread
-
module
-
modules
-
kinfo
-
- SH
- Base
- Builtins
- Basic commands
- MonoUI
- Base
- Window management
- Apps
- Settings
- Terminal
- Memory optimization -
/lib/full
+package.delay
- Editors
- Library (
/lib/editor.lua
) - Line editor (
/bin/ed.lua
) - Fullscreen editor (
/bin/fled.lua
) - Visual editor (
/bin/vled.lua
)
- Library (
- Kernel