redox

Redox: A Rust Operating System

Subscribe to updates I use redox


Statistics on redox

Number of watchers on Github 9251
Number of open issues 167
Average time to close an issue 14 days
Main language Rust
Average time to merge a PR about 9 hours
Open pull requests 16+
Closed pull requests 30+
Last commit 4 months ago
Repo Created over 3 years ago
Repo Last Updated 4 months ago
Size 4.39 MB
Homepage https://www.redox...
Organization / Authorredox-os
Latest Release0.3.3
Contributors31
Page Updated
Do you use redox? Leave a review!
View open issues (167)
View redox activity
View on github
Latest Open Source Launches
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating redox for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Redox

Redox is an operating system written in Rust, a language with focus on safety and high performance. Redox, following the microkernel design, aims to be secure, usable, and free. Redox is inspired by previous kernels and operating systems, such as SeL4, MINIX, Plan 9, and BSD.

Redox is not just a kernel, it's a full-featured Operating System, providing packages (memory allocator, file system, display manager, core utilities, etc.) that together make up a functional and convenient operating system. You can loosely think of it as the GNU or BSD ecosystem, but in a memory safe language and with modern technology. See this list for overview of the ecosystem.

The website can be found at https://www.redox-os.org.

Please make sure you use the latest nightly of rustc before building (for more troubleshooting, see Help! Redox won't compile!).

Travis Build Status Downloads MIT licensed Rust Version

Contents

What it looks like

Redox Redox Redox

Redox Redox Redox

Ecosystem

The ecosystem and software Redox OS provides is listed below.

Name (lexicographic order) Maintainer
acid (kernel integration tests) @jackpot51 (co.: @ticki, **@nilset)
binutils @ticki
bots (custom Mattermost bots) @ticki
cookbook @jackpot51
coreutils @ticki (co.: @stratact)
extrautils @ticki
games @ticki
Ion (shell) @skylerberg & @jackpot51
kernel @jackpot51
libextra @ticki
libpager @ticki
netutils @jackpot51
orbclient (Orbital client) @jackpot51
orbdata @jackpot51
orbgame (Orbital 2D game engine) @FloVanGH
Orbital (windowing and compositing system) @jackpot51
orbtk (Orbital toolkit) @stratact
orbutils (Orbital utilities) @jackpot51
pkgutils (current package manager) @jackpot51
playbot (internal REPL bot) @ticki
ralloc @ticki
RANSID (Rust ANSI driver) @jackpot51
redoxfs (old filesystem) @jackpot51
syscall @jackpot51
Sodium (Vim-inspired text editor) @ticki
TFS (ticki filesystem) @ticki
The Redox book @ticki
userutils @jackpot51
libstd abandoned, Rust's official libstd is now used
The old kernel abandoned
ZFS abandoned, superseded by TFS

Help! Redox won't compile!

Sometimes things go wrong when compiling. Try the following before opening an issue:

  1. Make sure you have a Redox toolchain (x86_64-unknown-redox-gcc).
    • You can install from .deb packages (https://static.redox-os.org/toolchain/apt/) or build redox-os/libc manually.
  2. Run rustup update
  3. Run make clean pull.
  4. Make sure you have the latest version of Rust nightly! (rustup.rs is recommended for managing Rust versions. If you already have it, run rustup).
  5. Update GNU Make, NASM and QEMU/VirtualBox.
  6. Pull the upstream master branch (git remote add upstream git@github.com:redox-os/redox.git; git pull upstream master).
  7. Update submodules (git submodule update --recursive --init).

and then rebuild!

Contributing to Redox

If you're interested in this project, and you'd like to help us out, here is a list of ways you can do just that.

Cloning, Building and Running

Redox is big, even compressed. Downloading the full history may take a lot of bandwidth, and can even be costly on some data plans. Clone at your own risk!

Quick Setup

$ cd path/to/your/projects/folder/

# Run bootstrap setup
$ curl -sf https://raw.githubusercontent.com/redox-os/redox/master/bootstrap.sh -o bootstrap.sh && bash -e bootstrap.sh

#Change to project directory
$ cd redox

# Build Redox
$ make all

# Launch using QEMU
$ make qemu
# Launch using QEMU without using KVM (Kernel-based Virtual Machine). Try if QEMU gives an error.
$ make qemu kvm=no

QEMU with KVM

To use QEMU with KVM (Kernel-based Virtual Machine), which is faster than without KVM, you need a CPU with Intel Virtualization Technology (Intel VT) or AMD Virtualization (AMD-V) support. Most systems have this disabled by default, so you may need to reboot, go into the BIOS, and enable it.

Manual Setup

To manually clone, build and run Redox using a Unix-based host, run the following commands (with exceptions, be sure to read the comments):

$ cd path/to/your/projects/folder/

# HTTPS
$ git clone https://github.com/redox-os/redox.git --origin upstream --recursive
# SSH
$ git clone git@github.com:redox-os/redox.git --origin upstream --recursive

$ cd redox/

# Install/update dependencies
$ ./bootstrap.sh -d

# Install rustup.rs
$ curl https://sh.rustup.rs -sSf | sh

# Install the sysroot manager Xargo
$ cargo install xargo

# For successive builds start here. If this is your first build, just continue

# Update git submodules
$ git submodule update --recursive --init

# Build Redox
$ make all

# Launch using QEMU
$ make qemu

# Launch using QEMU without using KVM (Kernel-based Virtual Machine). Try if QEMU gives an error.
$ make qemu kvm=no

# Launch using QEMU without using KVM (Kernel-based Virtual Machine) nor Graphics
make qemu kvm=no vga=no

Setup using Docker

We also provide docker image. After cloning this repository, please follow README under the docker directory.

Updating the codebase using the Makefile

To update the codebase run:

make pull; make fetch

make pull pulls and updates the submodules, and make fetch updates the sources for cookbook recipes.

redox open issues Ask a question     (View All Issues)
  • over 1 year Suggestion: Make use of rumpkernels
  • over 1 year Use Ripgrep as default search
  • over 1 year Many warnings about duplicate output directory during `make all`
  • over 1 year Document default schemes
  • over 1 year Create a repository for RFCs
  • over 1 year Make pid type-safe
  • over 1 year Move kernel to a submodule
  • over 1 year Catch build errors in Travis
  • over 1 year So... Red Hat opened a patent on batching OS calls
  • over 1 year Support MacPorts in bootstrap.sh
  • almost 2 years preparing_the_build on MacOS Sierra 10.12
  • almost 2 years libfuse problems (does it need a specific version from libfuse?)
  • almost 2 years Sessions Types for Microkernel Message Passing
  • almost 2 years Provide a way to recover on running out of memory (at least for some programs)
  • almost 2 years Program sandboxing approach
  • almost 2 years Modern GUI (window manager, toolkit, etc)
  • almost 2 years Potential integer overflows in kernel/arch/context.rs
  • about 2 years OS level support for TLS sockets
  • about 2 years feature wish: multiple input devices
  • about 2 years dm-crypt/LUKS support
  • over 2 years [question] servo as a desktop UI/UX layer?
  • over 2 years API documentation and manual pages (list)
  • over 2 years Prefer enums over dynamic dispatch.
  • over 2 years Use hardware syscalls when supported
  • over 2 years How to stop a process such as 'yes'?
  • over 2 years A proposal for a Redox manual format
  • over 2 years ELF .note section to indicate Redox ABI
  • over 2 years Tracking issue for libstd/libredox compatibility.
  • over 2 years Documentation, transparency, and information
  • over 2 years Make it a SSI OS
redox open pull requests (View All Pulls)
  • RUSThello update to v1.1.0
  • Switch to rustup
  • Update for rust nightly
  • Added dvorak keymap
  • Minor improvements on schemes.
  • [WIP] Implementation of capabilities.
  • fix bootstrap issue on archlinux 64 bit
  • Issue #790
  • Context: truncate files vector
  • Build on NixOS
  • Update README.md
  • use smoltcp as networking stack
  • Cookbook
  • orbkb: Keyboard handling library for Orbital
  • Run cookbook/setup.sh before running redox_installer
  • Make build/filesystem.bin and build/initfs.tag targets .PHONY
redox list of languages used
redox latest release notes
0.3.4 0.3.4 - Filesystem UUID

ISO Downloads

This release focuses on changes to RedoxFS, the bootloader, and the kernel to enable filesystem UUIDs.

The basic logic is this:

  • The bootloader loads the kernel from RedoxFS on the disk it is present on
  • The bootloader passes the UUID as an environmental variable to the kernel
  • The kernel passes the environmental variables to the init process
  • The init script for the init filesystem passes this UUID as an argument to RedoxFS
  • RedoxFS searches all available disks for a filesystem matching this UUID, and mounts it as the root filesystem

This was particularly important for the installation of Redox.

0.3.3 0.3.3 - Lower Memory Usage

ISO Downloads Travis Build Log

This release brings much lower memory usage with ISO - 480 MB instead of 1300 MB. There are also other bug fixes, features, and improvements.

Download the ISO here.

VirtualBox with Intel PRO/1000 Ethernet will be the most feature-complete experience. Only 64-bit x86 systems are supported. Give the VM at least 1 GB of RAM for the best results. The default username is user with an empty password. There is also a root user with a password of password.

Please post your questions and comments here: Discussion on Hacker News Discussion on Reddit /r/redox Discussion on Reddit /r/rust

If you are interested in joining our chat, send an email to info at redox-os.org.

If you would like to donate, you can do so here

kernel

  • Improve live filesystem implementation
  • Fix TLS mapping by page aligning end of TLS
  • Implement pipe events
  • More verbose crash dumps
  • Improve debugging code

coreutils

  • Fix directory handling in mv

ion

  • Add support for app-dirs
  • Fix handling of foreground processes

netstack

  • Send events on connect, improve C socket implementation

orbtk

  • Fix scrolling in textbox
  • Add borders to menu entries

termion

  • Fix issue with piping into less
0.3.2 0.3.2

ISO Downloads Travis Build Log

Discussion on Reddit Torrent

  • Updates to ion
  • Much better login screen
  • Added open dialog for Editor
  • Implemented all file menu items in Editor
  • Improved ACPI implementation
  • Better window ordering in Orbital
Other projects in Rust