CirnOS is an operating system for the Raspberry Pi built for the purpose of usability and simplicity. It provides a simple environment for running Lua scripts on Raspberry Pi. It has no kernel or time management – it is single threaded. You run your code on the device, and that is it.
CirnOS has only been tested on the Raspberry Pi Zero, but should work on the original Raspberry Pi and the Zero W.
If it is, then good news everyone I’ve written an operating system!
I’ve been debating this kind of a system with another friend. Were things better, and more secure when we had lots of small custom microcontrollers organizing things? or now where everything is running an app on a linux based os on a arm?
Not my space right now, but it was fun one to play with when I was.
From the Readme:
“It has no kernel or time management
…
It does not need a kernel,
…”
And than:
“Copy kernel.img from OBJ into the root of the SD Card.”
Leads to the philosophical question, what makes a kernel.
I strongly suspect the filename is an artifact of the RPi’s primary loader which is built on the assumption of a Linux kernel.
probably true.
nevertheless: what exactly is a kernel?
Wikipedia says:
“The kernel is a computer program that is the core of a computer’s operating system, with complete control over everything in the system.”
By that definition it is a kernel.
On the C64 the OS provides similar functionality as CirnOS does (interpreted BASIC instead of Lua-JIT)
Commodore called it KERNAL
(The KERNAL was known as kernel inside of Commodore since the PET days, but in 1980 Robert Russell misspelled the word as kernal in his notebooks. When Commodore technical writers Neil Harris and Andy Finkel collected Russell’s notes and used them as the basis for the VIC-20 programmer’s manual, the misspelling followed them along and stuck.)
Is this the modern equivalent to my old IBM computer, that would boot to a BASIC shell?
If yes, that’s really cool!
I’m the creator of CirnOS and I would like to make a few clarifications.
I did not post this, I only found it today after experiencing an influx of traffic to my GitHub page.
CirnOS is technically an operating system, although its tiny size and specialized nature shows how that definition can be blurry. The same goes for a kernel. LuaJIT could be considered the kernel of this system, because it executes the code and handles all the resources, but its syscalls are provided by wrappers that I have made.
It is a project in its infancy, and this post was made a bit before I would like to go advertising it outside of a few specific circles. I intend on having WiFi and USB drivers, as well as dynamic library loading and full hot-swapability outside of the box, and at that point it will resemble a more traditional OS, although only slightly.
This will allow a full update without cleaning RAM.
Out of the box CirnOS has no shell, as it draws a very distinct line between userspace and kernel, but I plan on having libraries and files that one can simply copy over a CirnOS installation to allow it to serve as a shell.
This project is meant for my virtual pet, and I will develop it to include features as I need them until CirnOS grows into an entirely different creature of its own.
I apologize for the minor snark above. It is more than it would appear from the article. Very much in the c64 vein, rather than my os less microcontroller code.