mntmn / interim

The Interim Operating System
1.24k stars 56 forks source link

Interim OS Bomberjacket Logo

Interim

Interim OS is a radical new operating system with a focus on minimalism. It steals conceptually from Lisp machines (language-based kernel) and Plan 9 (everything is a file system). It boots to a JITting Lisp-like REPL and offers the programmer/user the system's resources as filesystems.

Interim runs on:

Detailed docs are in docs/index.html.

Contact / FAQ / Get Involved

The official IRC channel for development and usage questions is #interim on irc.libera.chat.

If you find bugs, please file an issue in the Github issue tracker.

Architecture

Design Choices

Building

  1. Get the dependencies. For a (Linux-)hosted version, this is only GCC and SDL1 or SDL2 if you want windowed graphics. Sledge can also use /dev/fb0 instead if available on your platform. If you want to cross-compile for an ARM platform, get arm-none-eabi-gcc and libnewlib-arm-none-eabi.

1b. For a hosted version on Mac OS X, you will need GNU binutils, which can be obtained via homebrew: brew install binutils. You can also get SDL2 via homebrew.

  1. To build the hosted variant, cd to sledge and ./build_x64.sh.

  2. To cross-compile for bare metal, use ./rpi2-build.sh. This will create build/interim-arm.elf.

Running (Hosted)

cd sledge
./sledge

To launch the graphical REPL/Shell:

./sledge < tests/boot2.l

Running (Raspberry Pi 2)

Prepare a bootable SD card with the usual FAT partition that has the Pi-specific boot blobs in it and copy kernel.img into it. You can recycle any other Raspberry OS distribution, i.e. Raspbian for this. Just replace the kernel7.img and delete cmdline.txt. Keyboard input is currently only over UART, so you will probably want to connect a UART->USB cable to another computer and use it to control Interim.

Interim OS Screenshot

Roadmap

Licenses

Interim OS: GNU GPLv3 or later, (C) 2015-2016 Lukas F. Hartmann / @mntmn

Interim OS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Codecs