This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
minebuild02's profile picture

Tesseract - my proof-of-concept operating system

Started by minebuild02, 04 October 2016 - 09:34 AM
minebuild02 #1
Posted 04 October 2016 - 11:34 AM
Tesseract - an "expert" operating system
Current version:
Warp Sierra/Pre-release/Build #0090
Version currently in development: Tesseract Alpha/Release/Build #0100
Status: Update in active development [DEV BUILD #0095 UP]



What is Tesseract, exactly?
Tesseract is a proof-of-concept Operating System, designed to resemble a Linux distribution.
I will say it ONE. EXACT. TIME: Tesseract is not for your average "hello world" newbie (just like Linux).

What does Tesseract feature right now?
Features already implemented in the system:
  • A functional bootloader with the option to utilise custom boot records
  • An autorun system that allows the user to execute their own code after boot
  • A set of core utilities
  • A set of demonstration programs that show multiple programming examples
  • A (somewhat) state-of-the-art security system that allows for privileged/non-privileged account separation and filesystem sandboxing
  • A Linux-like documentation system utilising manuals
  • A monolithic kernel with basic features like a custom shutdown sequence, logging, crash reporting and custom module/API hooks
  • 8 APIs that simplify configuration handling, package management GUI and more
  • A simple package management system (currently without advanced package-relative dependency handling)
  • A multi-user authorization system with authorization
  • A script subsystem that can automate running specific tasks
  • A backup system that will automatically conserve remotely updated system files

Features not yet implemented but are in development (status: implementing in the next update/queued for implementation/planned for implementation/implemented/unable to implement at current stage). Suggest features here or in PM:
  • Authorization system (possibly with hashing)
  • Further customization
  • Dependency handling in TPM
  • A package management system with custom repositories
  • Filesystem sandboxing
  • A nice-looking functional GUI system
  • A multitasking framework
  • More APIs to simplify development
  • More built-in programs
  • Tesseract's own network protocol system
  • A built-in antimalware
  • Suggest more…

This update's changelog.
  • Fixed an URGENT bug in a part of the core utilities suite
  • Fixed an URGENT bug in the TPM
  • Fixed an URGENT bug in the kernel
  • Fixed an URGENT bug in the security kernel
  • Improved the custom bootloader record feature Caused bugs
  • Improved security measures Caused bugs
  • Tweaked some manuals
  • Improved the core utilities suite
  • Added a couple of manuals
  • Tweaked TPM
  • Integrated the Application API into the kernel, made preparations for complete removal of the Complex Application system!
  • Created a shutdown wrapper
  • Redone the manual system (somewhat)
  • Tweaked the kernel
  • Tweaked logging
  • Redone security

Next update's temporary changelog. Subject to change without notice.
  • Fixed an URGENT bug in the TPM repository database
  • Created a primitive self-hosted decentralized domain name system
  • Updated Search API
  • Fixed a few minor bugs
  • Added a few more programs into the repository
  • Tweaked the GUI and LuaEx APIs
  • Added script parsing
  • Added error logging
  • Added a backup subsystem that gets used when downloading system updates (/etc/.backups)
  • Tweaked the system itself
  • Removed complex applications
  • Hugely redone the kernel
  • Hugely redone the bootloader
  • Hugely tweaked filesystem security
  • Changes to multiple programs
  • Progressing with assembly re-structuring
Is this safe?
All builds are tested on the latest CCEmuRedux emulator and, periodically, on 1.7.10 Forge servers.
Tesseract also features security measures now.

Where can I get it?
I use 1Ridav's archiver for OS distribution - it simplifies everything. (If you don't know 1Ridav, he's a Russian CC coder.)
Download the http://pastebin.com/rSJsysgY archiver and the http://pastebin.com/nzZUkZmx OS image, then type this into the shell:

<path to archiver> unzip <path to image> /

Reboot the system, and if you see that Tesseract Boot Loader is starting to load modules into memory, you have installed the system!
Oh, and the default credentials are root/root, make sure to change your password (passwd <username> <password> as root)!
Edited on 02 November 2017 - 04:30 PM
Creator #2
Posted 04 October 2016 - 06:29 PM
The installer should be used like this:


<path to archiver> unzip  <path to image> /

Just tested it and that's how it worked for me.

I don't wanna discourage you! It looks like the beginning of an awesome OS!
Edited on 04 October 2016 - 05:02 PM
HaddockDev #3
Posted 05 October 2016 - 12:36 AM
This seems not bad although this is in development.
I really like the *nix style shell and generally the custom APIs to help other people develop on the system.

For the app management, you should get a site on 000webhost or something, then make a little PHP script
that allows uploading packages for your application installer. Then share the script to other people, so if they
want to make a repository, all they have to do is put the script on and there you go. (Just a theory though)

This looks to be a nice operating system for its current stage and I hope to see where it goes, and I'd probably
do another review of this if there is a major update.
minebuild02 #4
Posted 05 October 2016 - 09:11 AM
Thank you all very much!
The installer should be used like this:


<path to archiver> unzip  <path to image> /

Just tested it and that's how it worked for me.

I don't wanna discourage you! It looks like the beginning of an awesome OS!
Don't be afraid to discourage me, constructive criticism is always appreciated :D/>
Thanks for pointing that out though, the post is updated

This seems not bad although this is in development.
I really like the *nix style shell and generally the custom APIs to help other people develop on the system.

For the app management, you should get a site on 000webhost or something, then make a little PHP script
that allows uploading packages for your application installer. Then share the script to other people, so if they
want to make a repository, all they have to do is put the script on and there you go. (Just a theory though)

This looks to be a nice operating system for its current stage and I hope to see where it goes, and I'd probably
do another review of this if there is a major update.
Regarding app management I prefer Pastebin record databases, the advantage of CCEmuRedux is that you can edit the computer files directly from your OS which simplifies Pastebin uploads. Also note that 1Ridav's archiver makes archives that ARE the application installation files.
The APIs are for the OS itself to function properly, but the manuals for them ain't for nothing.

Replies done, now for the announcement:
Expect an update soon, the archive link will always contain the latest version
Edited on 05 October 2016 - 10:28 AM
minebuild02 #5
Posted 05 October 2016 - 12:53 PM
Build #0049 is out, preparing for the Warp 2 preview.
thecrimulo #6
Posted 05 October 2016 - 04:03 PM
-snip-

For the app management, you should get a site on 000webhost or something, then make a little PHP script
that allows uploading packages for your application installer. Then share the script to other people, so if they
want to make a repository, all they have to do is put the script on and there you go. (Just a theory though)

-snip-
I recommend InfinityHost, a pretty good free host with unlimited domains and space
minebuild02 #7
Posted 05 October 2016 - 04:48 PM
-snip-

For the app management, you should get a site on 000webhost or something, then make a little PHP script
that allows uploading packages for your application installer. Then share the script to other people, so if they
want to make a repository, all they have to do is put the script on and there you go. (Just a theory though)

-snip-
I recommend InfinityHost, a pretty good free host with unlimited domains and space
Understand, going to look at it someday.

And, work on Warp 2 has begun - package management is going to come!
minebuild02 #8
Posted 06 October 2016 - 04:02 PM
Warp 2 is almost ready for release.
An example small repository file will be released with the system because I don't have time for traversing the entire forum for programs.
If you want a program to be included in the repository - go ahead and PM me.
minebuild02 #9
Posted 06 October 2016 - 05:01 PM
Warp 2 is out! Package management, 2 new APIs!
クデル #10
Posted 07 October 2016 - 07:12 AM
Rather nice OS, one small problem although. I had a lot of issues with text clipping in the shell (which looks like a direct copy of the original shell program).

minebuild02 #11
Posted 07 October 2016 - 02:43 PM
Rather nice OS, one small problem although. I had a lot of issues with text clipping in the shell (which looks like a direct copy of the original shell program).

  1. Looks like a problem with the CC itself, works in CC 1.5/CCEmuRedux well.
  2. It IS an exact copy of the built-in shell, it was copied from the CC 1.5 files to ensure compatibility and use the Shell API. When authorization comes I will customize the shell
KingofGamesYami #12
Posted 07 October 2016 - 02:58 PM
I would advise you to look at the differences between CC 1.5 and current.
minebuild02 #13
Posted 09 October 2016 - 10:13 AM
I would advise you to look at the differences between CC 1.5 and current.
Multishell and auto-completion can't be implemented in 1.5 I guess unless there are backports
minebuild02 #14
Posted 09 October 2016 - 06:58 PM
Warp 3 is almost ready and will be released tomorrow! Authentication is going to come!
minebuild02 #15
Posted 10 October 2016 - 04:39 PM
Warp. 3. Is. OUT!
As promised, authentication has came into existence. And I'm planning to introduce sandboxing soon!
Edited on 10 October 2016 - 02:40 PM
minebuild02 #16
Posted 12 October 2016 - 06:22 PM
WARP 4 RELEASED!…Somewhat ahead of schedule.
I was looking forward to make a BLAST AntiMalware-like sandbox system, and I, honestly, failed. Too bad…
Well, on the bright side, we have the multi-user authorization system and improved logging. Yeah.
minebuild02 #17
Posted 13 October 2016 - 06:53 PM
SANDBOXING! Finally!
And, for you Windows lovers, there is a new demo you would like :)/> Had to make a couple of new functions for it
minebuild02 #18
Posted 14 October 2016 - 10:12 AM
Work on Warp 5, the LAST technical preview, has officially began. Development is going to take more time than usually, so be patient. Expect a release in 2 days!
Edited on 19 October 2016 - 03:02 PM
minebuild02 #19
Posted 15 October 2016 - 04:28 PM
The first development build's ready, here's a quick sneak peek…


EDIT: And another one!
Edited on 15 October 2016 - 03:03 PM
minebuild02 #20
Posted 19 October 2016 - 05:03 PM
21th of October, wait no more!
minebuild02 #21
Posted 21 October 2016 - 01:16 PM
WARP 5 OUT NOW!
minebuild02 #22
Posted 28 February 2017 - 05:28 PM
Aaaaaand here it is, Warp Sierra! Yes, I've been out for a loooong time, but today I finally finished it!
And now a question. Should Tesseract remain compatible with CraftOS 1.5 or should I update it to use the more new 1.7? The vote is yours.

Now to other matters.
  1. Complex applications are going to be REMOVED in the release. They're a useless feature to me, and just take up disk space.
  2. Security has been made tougher. Basically, everything that triggers it will have a SU request unless it's the startup file (then it just accuses you of performing restricted ops). If you messed something up - just reboot into CraftOS (by logging in as root and corrupting the preferredBootloader field in /boot/boot.conf), delete all Tesseract files and re-install the system.
  3. Manuals moved into /etc, just because I had the feeling to. Also it's more logical to have /etc/manuals.
  4. Shutdown wrapper implemented, now you can configure how you want your system to terminate.
  5. Logging was extended, also a viewer was added - dmesg, like in Debian.
Waiting for your opinions!
Bomb Bloke #23
Posted 28 February 2017 - 09:14 PM
And now a question. Should Tesseract remain compatible with CraftOS 1.5 or should I update it to use the more new 1.7? The vote is yours.

Why not both?
CLNinja #24
Posted 28 February 2017 - 10:29 PM
And now a question. Should Tesseract remain compatible with CraftOS 1.5 or should I update it to use the more new 1.7? The vote is yours.

Why not both?

Honestly, anything that requires 1.5 (or 1.7) you can detect the version and base it on that.
minebuild02 #25
Posted 01 March 2017 - 02:45 PM
And now a question. Should Tesseract remain compatible with CraftOS 1.5 or should I update it to use the more new 1.7? The vote is yours.

Why not both?

Honestly, anything that requires 1.5 (or 1.7) you can detect the version and base it on that.
The answer is that it will be, excuse me, a wuss to code both versions. But I'll consider it.
Edited on 01 March 2017 - 01:50 PM
minebuild02 #26
Posted 25 October 2017 - 06:16 PM
Yay, I'm back :D/>

Release development is continuing slowly:
  1. Special thanks to Luca_S for the script parser base code - put it under luaex.iterateFileLines(<path>).
  2. Removed complex applications. They are just wasted code. Also, integrated manuals into the kernel.
  3. Made error logging! Hurray!
Attaching a sneak-peek picture of the release version like this because it won't let me post an image. Sorry forum staff.
Edited on 25 October 2017 - 04:23 PM
minebuild02 #27
Posted 25 October 2017 - 07:59 PM
Updated the post and the poll. Cast your votes on the possible new features to give me a sense of what the community wants!
minebuild02 #28
Posted 26 October 2017 - 03:34 PM
Redone the bootloader - now the kernel resides inside the /startup file along with the interface subsystem.

Another quick sneak-peek!
Dave-ee Jones #29
Posted 26 October 2017 - 11:37 PM
And now a question. Should Tesseract remain compatible with CraftOS 1.5 or should I update it to use the more new 1.7? The vote is yours.

Why not both?

Honestly, anything that requires 1.5 (or 1.7) you can detect the version and base it on that.

Yeah, you could just have an installer that detects the version and then installs the appropriate files for that version? That would mean you need to keep 2 programs updated at once, though.
minebuild02 #30
Posted 28 October 2017 - 11:27 AM
And now a question. Should Tesseract remain compatible with CraftOS 1.5 or should I update it to use the more new 1.7? The vote is yours.

Why not both?

Honestly, anything that requires 1.5 (or 1.7) you can detect the version and base it on that.

Yeah, you could just have an installer that detects the version and then installs the appropriate files for that version? That would mean you need to keep 2 programs updated at once, though.
Any way to Sunday, I'm already updating everything to use 1.7. The new shell will come out soon and I'm working on using RedNet protocols as a DNS basis.
minebuild02 #31
Posted 28 October 2017 - 03:01 PM
Put the dev build up, expect one more until I release the system.
Heightened security, a temp dev account, scripts and huge tweaks all in one little package
minebuild02 #32
Posted 28 October 2017 - 03:20 PM
A quick run-down on the new features:
  1. Scripts. I saw Batch on the forums, got jealous, asked to use the code for Tesseract. See 'man credits' and 'man custom-script' for details.
  2. Error logging. Intercepting Lua error functions was pretty easy to implement. Beware, logs may get big if you are a developer.
  3. FHS compliance. Redone the top-level filesystem hierarchy to more closely resemble Linux.
  4. Custom shells. Now you can make your own shell and modify your user record to make it start by default. All custom shell API functions included.
  5. Reloading APIs. APIs are now called 'assemblies'. If you make a modification to the system libraries, for example, you can type 'asm-reload -c:SYSTEM_CACHE' and test it without rebooting.
  6. API re-structuring. I'm planning to curl all the system assemblies up into 4 large files: the kernel, the GUI subsystem, the Tesseract internal executive subsystem and the user interactions interface. Also this will make the kernel and the GUI subsystem more redundant by re-locating them into the /startup file (that part is already done).
LoganDark2 #33
Posted 14 January 2018 - 08:29 AM
This is… nothing short of amazing. I've never seen anything like this coded in a language like Lua. You deserve a pat on the back..

Actually, no. You deserve two pats on the back. Two pats on the back for you, sir.
minebuild02 #34
Posted 14 June 2018 - 04:39 PM
This is… nothing short of amazing. I've never seen anything like this coded in a language like Lua. You deserve a pat on the back..

Actually, no. You deserve two pats on the back. Two pats on the back for you, sir.

Nah, there are far more advanced OSes on this site. But still, thanks.
I've actually been planning to discontinue the OS, but I might release a final update in some time. Currently, I'm working on an OS called Darwin.
LoganDark2 #35
Posted 14 June 2018 - 05:48 PM
This is… nothing short of amazing. I've never seen anything like this coded in a language like Lua. You deserve a pat on the back..

Actually, no. You deserve two pats on the back. Two pats on the back for you, sir.

Nah, there are far more advanced OSes on this site. But still, thanks.
I've actually been planning to discontinue the OS, but I might release a final update in some time. Currently, I'm working on an OS called Darwin.

I'm currently running an OS called Darwin.

AKA, macOS…