8000 GitHub - itsManjeet/rlxos: A truly modern implementation of GNU/Linux distribution
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

itsManjeet/rlxos

Repository files navigation

Contributors Forks Stargazers Issues Unlicense License


RLXOS Logo

RLXOS

A minimal Linux-based operating system with a pure Go userland.
Explore the docs »

View Demo · Report Bug · Request Feature


About The Project

Screenshot

RLXOS is an experimental operating system built from scratch with a userland entirely written in Go, using CGO_ENABLED=0. This means all user space components are statically compiled and do not rely on the C runtime.

Why Go instead of C/C++?

  • Simplicity: Go is known for its simplicity and clean, unbloated syntax.
  • Self-contained: Go produces statically linked binaries that don’t rely on external C libraries like libc.
  • Productivity: Go makes development fast and efficient with excellent package management, a rich standard library, and cross-compilation support.
  • Low-level control: While not as granular as C/C++, Go offers enough control for low-level operations required here.
  • Fun: No one has done this quite like this—so why not?

Getting Started

Prerequisites

Make sure you have the following installed:

  • Go 1.22+
  • QEMU
  • GCC
  • Make

Install required packages:

sudo apt install qemu-system-x86 gcc make

Installation

  1. Clone the repository:
git clone https://github.com/itsmanjeet/rlxos.git
cd rlxos
  1. Build the OS:
make
  1. Run it using QEMU:
make run
  1. Start the debug shell:
go run rlxos.dev/tools/debug shell

(back to top)


Usage

Currently, after booting, you'll see a welcome message displaying the current FPS. It may look simple, but a lot is happening behind the scenes.


Boot Process

  • /cmd/init starts as PID 1 from the initramfs and prepares the actual root filesystem, then re-invokes itself from the real root as /cmd/init.
  • /cmd/init launches /cmd/service, which is the service manager.
  • The service manager starts /services/display and /services/udevd for display and uevent listening.
  • /cmd/capsule listens to the QEMU serial port via /dev/ttyS0.

Roadmap

  • PID 1 init and service manager
  • cmd/capsule: A Lisp-inspired interactive shell
  • service/udevd: Linux kernel uevent listener
  • service/display: kmsdrm-based display service with Wayland protocol support
  • service/audio: ALSA-based audio support
  • service/network: Network interface service
  • service/auth: Authentication service

See the open issues for more.

(back to top)


Contributing

Contributions make open-source amazing! Fork the repo and open a pull request.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes
  4. Push to your branch
  5. Open a pull request

License

Distributed under the Unlicense. See the LICENSE file for more details.


About

A truly modern implementation of GNU/Linux distribution

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published
0