Mirror of https://gitlab.redox-os.org/redox-os/redox

Overview

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 @NilSet
binutils vacant
cookbook @jackpot51 @ids1024 @sajattack
coreutils vacant
extrautils vacant
games @enrico (AKA @HenryTheCat) @fabiao
Ion (shell) @mmstick @stratact
ipcd @jD91mZM2
kernel @jackpot51
libextra vacant
libpager vacant
netstack @batonius @dlrobertson
netutils @jackpot51
orbclient (Orbital client) @jackpot51 @FloVanGH
orbdata @jackpot51
orbgame (Orbital 2D game engine) @FloVanGH
Orbital (windowing and compositing system) @jackpot51
orbtk (Orbital toolkit) @FloVanGH
orbutils (Orbital utilities) @jackpot51
pkgutils (current package manager) @jackpot51
ralloc @Tommoa @NilSet
RANSID (Rust ANSI driver) @jackpot51
redoxfs (old filesystem) @jackpot51
relibc (C Library in Rust) @jD91mZM2 @sajattack @Tommoa @stratact
small (stack String and other collections) @Tommoa
syscall @jackpot51
Sodium (Vim-inspired text editor) vacant
TFS ((ticki) The File System) @Tommoa
The Redox book vacant
userutils @jackpot51

Help! Redox won't compile!

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

  1. Run rustup update
  2. Run make clean pull.
  3. 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).
  4. Update GNU Make, NASM and QEMU/VirtualBox.
  5. Pull the upstream master branch (git remote add upstream [email protected]:redox-os/redox.git; git pull upstream master).
  6. 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://gitlab.redox-os.org/redox-os/redox/raw/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://gitlab.redox-os.org/redox-os/redox.git --origin upstream --recursive
# SSH
$ git clone [email protected]: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
$ source $HOME/.cargo/env

# Install the sysroot manager Xargo and cargo-config
$ cargo install xargo cargo-config

# 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.

Comments
  • x86_64 interrupt handling

    x86_64 interrupt handling

    1. I don't know why there was kernel relocation code. on i386 there is none. And the relocation code as it was did quite some garbage. That's why i removed it. It moved the memory from kernel_file + 0xB000 to kernel_file, so overwrote the kernel, and afterwards cleared 0xB000 Bytes from the end of the - now overwritten - kernel. And this memory is taken from 0x80000+ where there could be some parts from EBDA, which could have led to the Page Fault. Tried to move the kernel to some higher address(1MB+) and it worked, but i don't know if this memory is used elsewhere, and i don't see the purpose in moving the kernel. If this is needed for something and someone knows where to place the kernel, i'd be happy to put the code back.

    2. Where does this MagicValue(tm) 0x18 come from? in

      mov eax, [kernel_file + 0x18]
      mov [interrupts.handler], rax
      

      It works on i386 but on x86_64 it points in the midst of zeroed memory

    3. Interrupts are working now, the page fault experienced before was due to writing to protected lower memory (my theory, see above) and the kernel exception handler wasn't yet set up, which led to a triple fault.

    tl;dr: We have interrupts, but I don't know where the kernel interrupt handler lives, so we can't do much with those interrupts.

    opened by Roxxik 16
  • initial design docs

    initial design docs

    Problem: write design docs for redox

    Solution: this is a first pass at developing design docs and is not in a state to be merged. The purpose of this PR is to get feedback on the overall methodology

    Changes introduced by this pull request:

    • adding a new design/ folder and .art folder with new design documents.

    Drawbacks: no draw backs

    TODOs: pretty much everything. The plan is:

    • get the high level docs written to a point that they are useful and merge them
    • write lowever level docs in separate (smaller) merges and link them to implementation and tests

    Fixes: #844

    State: WIP

    Blocking/related: none

    opened by vitiral 15
  • Abstraction, documentation, and uniformity

    Abstraction, documentation, and uniformity

    Main problem: The Redox code base is in a state in which, it has relatively low code quality. There are multiple reasons for so:

    1. Lack of good documentation.
    2. Lack of uniformity in naming, code style, and so on.
    3. Low use of abstraction.
    4. Over use of e.g. heap allocation.

    Solution: This PR takes a micro step in the right way.

    Changes introduced by this pull request:

    • Follow the naming convention in the syscall module (in particular, we throw the do_sys_ prefix out).
    • Make Context names copy-on-write, effectively reducing the allocations on boot by 40-45%.
    • Add #[deny(warnings)] to avoid regression.
    • Format the code style through a patched version of rustfmt.
    • Add a rustfmt config file.

    Drawbacks: None.

    TODOs: Lots of things:

    1. There are "FIXME"s and "TO-never-DOs" all over the place in the kernel. Many of which are already solved, or really ought to be solved.
    2. There are no proper Rustdoc documentation for most of the internals.
    3. There are still a long way: We can remove more allocations and avoid more dynamic dispatch.
    4. Compile a list of things that needs cleanup, abstraction, or full rewrite.

    Fixes: No issues.

    State: Ready.

    Blocking/related: Related to #610.

    opened by ticki 13
  • Getting started with implementing unit testing for Redox

    Getting started with implementing unit testing for Redox

    Work-In-Progress/Do Not Merge

    This is an attempt to add support for unit testing in Redox by adding make test which will allow the user to run a series of #[test]s to verify functionality and possibility of bugs.

    Currently I have only the unit testing for GetSlice but more files with unit testing can be easily added

    Here are the following that are preventing this PR from being mergeable, is the need of:

    • [x] std::io::prelude::* (libredox)
    • [x] std::sync::Once (libredox)
    • [ ] std::sync::StaticMutex (libredox)
    • [ ] Wrap-up cleaning the Makefile

    And possible other dependencies of dependencies to make the libtest crate happy.

    More work still needs to be done for this to be useful.

    opened by ghost 12
  • use smoltcp as networking stack

    use smoltcp as networking stack

    Hi @jackpot51,

    Here is my take at replacing the existing network stack by smoltcp.

    Rationale

    Benefits from using a third-party network stack:

    • Less code to maintain: smoltcp is currenlty written and maintained by @whitequark.
    • If smoltcp get adopted by many project, we can reasonably expect it to grow in terms of features, code quality, and performance. For instance it might get IPv6 soon.

    Benefits from using smoltcp:

    • It's built in such a way that it is theoritically possible for the whole network stack not to allocate any memory. This could be highly desirable, to run redox on systems with very little memory, or simly to offer a network stack with a very low latency.
    • The code is easy to read and well documented. As a beginner in system programming I learnt a lot by reading the code and the various blog posts about smoltcp implementation.

    Disclaimer

    I'm a newbie in system programming, and this is my first contribution to Redox. I did my best to make the code as correct as possible but there may be obvious mistakes.

    The implementation is not complete yet but I'm making this PR to get early feedback. Basically, am I in the right direction? Are there any fundamental design flaws?

    Implementation details

    • I removed ipd, udpd and tcpd. Everything is contained in ethernetd
    • TCP sockets are not yet implemented.
    • I introduced to new scheme methods: sockrecv and socksend, because I could not find a way to implement UDP sockets with only read and write. The problem is that the std::net::UdpSocket::recv_from() and std::net::UdpSocket::send_to() semantics requires an extra endpoint argument to be passed to the method that read/write to/from the socket. Basically, I needed something similar to sendto and recvfrom on Linux.
    • As said previously, the implementation is incomplete.
    opened by little-dude 11
  • Bootstrap fuse dependency & more

    Bootstrap fuse dependency & more

    Problem: Building Redox now depends on fuse

    Solution: Add fuse to list of dependencies installed by the package managers

    Changes introduced by this pull request:

    • Add fuse to dependencies
    • Clean up cloning, and rust install
    • Added a function to report whether the last travis build was successful
    • Changed rust install to multirust

    It would be greatly appreciated if people could test it out on the various operating systems to confirm that I got all the package names correct. Right now OSX and Arch are working

    curl -sf https://raw.githubusercontent.com/DomThePorcupine/redox/master/bootstrap.sh -o bootstrap.sh && bash -e bootstrap.sh

    • [x] OSX
    • [x] Arch Linux
    • [x] Debian & derivatives
    • [ ] Suse & derivatives
    • [x] Fedora
    • [x] Gentoo

    opened by DomThePorcupine 11
  • Add support for right alt key (altgr)

    Add support for right alt key (altgr)

    I currently don't have access to english and french keyboards, so the altgr-mappings for these layouts might be flawed. But this can easily be fixed afterwards.

    opened by yasammez 9
  • Disable seccomp and apparmor to compile Redox with Docker image.

    Disable seccomp and apparmor to compile Redox with Docker image.

    Problem: Won't compile on machine with apparmor enabled.

    Solution: Disable seccomp and apparmor.

    Changes introduced by this pull request:

    • docker/README.md
    opened by mssun 8
  • Bootstrap script improvements for arch linux

    Bootstrap script improvements for arch linux

    I'm an arch linux user and I wasn't super-happy with how this script was handling detecting missing packages and running updates that asked for my sudo password without explaining what the script was doing. My changes only run sudo pacman -Sy if necessary, and don't do a full pacman -Syu since that's a pretty major system administration operation.

    opened by neunenak 8
  • Makefile: fix filesystem permissions

    Makefile: fix filesystem permissions

    Problem:

    • On my build machine with umask set to 0077, folders and executables were created with incorrect permissions, preventing redox from booting up correctly, most notably being unable to do anything as user.
    • Some permissions were wrong, e.g. on /etc/passwd
    • when build failed, filesystem was kept mounted under some circumstances, leaving a broken build directory

    Solution:

    • set right permissions even if build machine has umask 0077
    • /etc/passwd must not be readable by user
    • include directories for setting permissions
    • make sure filesystem gets unmounted if build fails
    • exclude others from /home/user and /root directories
    • set executable bit in /bin/ even if build machine umask tries to prevent that

    Changes introduced by this pull request:

    • permissions
    • unmounting filesystem more often if build fails

    Drawbacks: Unclear: When starting the file manager, I get a bunch of errors:

    Failed to load icon inode-directory: failed to open image: Permission denied (os error 13)
    Failed to load icon audio-x-wav: failed to open image: Permission denied (os error 13)
    Failed to load icon application-x-executable: failed to open image: Permission denied (os error 13)
    Failed to load icon image-x-generic: failed to open image: Permission denied (os error 13)
    Failed to load icon image-x-generic: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-makefile: failed to open image: Permission denied (os error 13)
    Failed to load icon application-x-object: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-makefile: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-makefile: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-csrc: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-c++src: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-chdr: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-script: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-script: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-script: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-script: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-generic: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-generic: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-generic: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-generic: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-generic: failed to open image: Permission denied (os error 13)
    Failed to load icon text-x-generic: failed to open image: Permission denied (os error 13)
    Failed to load icon unknown: failed to open image: Permission denied (os error 13)
    

    I think they are not related to my changes, but I'm not sure. Can somebody please check this?

    TODOs: See Drawbacks. I need somebody else to check I'm not wrong.

    Fixes: None reported to github.

    State: Ready except for the single TODO above.

    Blocking/related: None

    opened by genodeftest 8
  • Add environment variables

    Add environment variables

    Problem: Redox doesn't have environment variables. Each process should have its own set of environment variables, that are copied to the child when the process forks.

    Changes introduced by this pull request:

    • Add the env_vars field to the Context struct
    • Add the env scheme to access environment variables from userspace
    • Add the env::var, env::set_var, env::remove_var and env::vars functions to libstd

    TODOs:

    • ~~Add a way to remove environment variables (I'm working on it)~~
    • Maybe add the export command to extrautils.
    • Set the HOME, PWD, etc. variables on login

    State: Ready

    opened by wbrbr 8
Releases(0.5.0)
  • 0.5.0(Mar 24, 2019)

  • 0.3.5(Mar 21, 2018)

    ISO Downloads Travis Build Log

    Please discuss this release on our Discourse Forum

    Notable changes include:

    • New network stack
    • More available packages
    • Improved security
    • Netsurf web browser
    • Alpha blended terminal
    • Terminal ANSI improvements
    • Rename system call
    • Kernel ACPI improvements
    • Graphical kernel debugging during ACPI initialization

    Known issues:

    • The calendar application is not rendering due to a regression in OrbTK
    • Netsurf has no icon, run netsurf-fb from the terminal

    More detail can be found in the following news articles:

    This was posted in the following places:

    Source code(tar.gz)
    Source code(zip)
    redox_0.3.5.iso(49.00 MB)
    redox_0.3.5.bin.gz(44.53 MB)
    SHA256SUM(167 bytes)
  • 0.3.4(Oct 12, 2017)

    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.

    Source code(tar.gz)
    Source code(zip)
    redox_0.3.4.iso(40.00 MB)
    redox_0.3.4.bin.gz(35.72 MB)
    SHA256SUM(167 bytes)
  • 0.3.3(Sep 20, 2017)

    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
    Source code(tar.gz)
    Source code(zip)
    redox_0.3.3.iso(38.00 MB)
    redox_0.3.3.bin.gz(34.24 MB)
    SHA256SUM(167 bytes)
  • 0.3.2(Sep 9, 2017)

  • 0.3.1(Aug 22, 2017)

    ISO Downloads Travis Build Log

    Discussion on Reddit

    As many of the changes are related to self hosting, by @ids1024, I have named this release POSIXLY_CORRECT. Most changes are managed independently from this repository, making it difficult to track them all. More detailed information can be found in news articles since the last release:

    • https://redox-os.org/news/this-week-in-redox-25/
    • https://redox-os.org/news/this-week-in-redox-26/
    • https://redox-os.org/news/gsoc-self-hosting-3/
    • https://redox-os.org/news/this-week-in-redox-27/
    • https://redox-os.org/news/this-week-in-redox-28/
    • https://redox-os.org/news/gsoc-self-hosting-4/

    This release runs best if you can meet the following requirements:

    • 2 GB RAM
    • 32 MB VRAM
    • PS/2 Mouse and Keyboard
    • Intel 8254x Ethernet
    • Intel HDA audio
    • XHCI USB
    Source code(tar.gz)
    Source code(zip)
    redox_0.3.1.bin.gz(35.06 MB)
    redox_0.3.1.iso(39.00 MB)
    SHA256SUM(167 bytes)
  • 0.3.0(Jul 13, 2017)

    ISO Downloads Travis Build Log

    Discussion on Reddit

    Summary

    It has been a while since our last release, on April 22! I cannot possible represent all of the changes to Redox OS since then, so the best way to experience them is to try it out yourself! I have listed the changes I think are biggest below. Here are the changes to our distribution repository since 0.2.0

    This release was particularly challenging. The build process has been switched over to using the cookbook, and a cross compiler is now used instead of a gcc wrapper script located here. These two changes required a large amount effort to make the system compile correctly and easily again, and to get Travis builds to work. Improvements have been made to the kernel, ion, newlib, and many other projects.

    Cookbook

    However, due to this effort, we can now produce Redox installations from the same recipes that produce package builds, meaning that every file in a default Redox install has been installed by a package, and can be managed by the package manager. Due to a change in the bootloader allowing the kernel to be loaded from RedoxFS, this will also include the kernel soon.

    To view all of the currently available packages, view the repository listing, or the repository description file

    Self-hosting

    Also, due to using a real cross compiler for the build, we have been able to significantly improve support for C software. Massive steps have been made in the direction of self-hosting, with the porting of binutils, newlib, gcc, nasm, llvm, and rustc to Redox. Work, mostly by @ids1024, is currently focusing on porting git. This has also identified and fixed many problems with our POSIX support, and improved the overall functionality of Redox.

    Posts from @ids1024 about self-hosting can be found here:

    • https://redox-os.org/news/gsoc-self-hosting-1/
    • https://redox-os.org/news/gsoc-self-hosting-2/

    ACPI

    In addition to these two changes, the kernel has been improved. @CWood1 has written a shiny, new ACPI stack that includes an AML parser. This allows shutdown on Redox to be done correctly on nearly all systems. Support for the HPET has also been added, with a fallback to the PIT when it is not present. Eventually I hope that we will be able to correctly suspend and resume Redox by running the parsed AML.

    Ion

    Ion has gone through a huge amount of development, mostly by @mmstick, who has been maintaining it. There have been 139 commits to ion since the last release, adding new syntax, improving bugs, and adding new features. View them here

    TWiRx

    In addition, This Week in Redox has been restarted by @goyox86. Here are the articles since the last release:

    • https://redox-os.org/news/this-week-in-redox-20/
    • https://redox-os.org/news/this-week-in-redox-21/
    • https://redox-os.org/news/this-week-in-redox-22/
    • https://redox-os.org/news/this-week-in-redox-23/
    • https://redox-os.org/news/this-week-in-redox-24/
    Source code(tar.gz)
    Source code(zip)
    redox_0.3.0.iso(21.00 MB)
    redox_0.3.0.bin.gz(20.41 MB)
    SHA256SUM(167 bytes)
  • 0.2.0(Apr 23, 2017)

    ISO Downloads Travis Build Log

    :tada: :cake: As of 2017-04-20, Redox OS has been on GitHub for two years! :cake: :tada:

    Due to the number of positive changes that have happened, the version has been bumped to 0.2!

    Please discuss this release on Reddit.

    The most major changes are an increase in kernel performance, a complete implementation of frame allocation (and deallocation) in the kernel, a new sys:iostat to inspect all open file handles, resizing and scrolling in the editor, and more ion shell features.

    This list of changes came from a line-by-line review of all changes since 0.1.5, which was released 13 days before this release.

    Redox Distribution

    View changes here

    • Add Cargo.lock, to track dependencies in GIT
    • Add the following as submodules, to track changes: event, extra, jpeg-decoder, mio, orbclient, orbfont, orbimage, orbtk, pager, ralloc, ransid, same-file, syscall, tar, termion
    • Readd binutils, games, and sodium as submodules
    • Update recommended rustc to 2017-04-22 nightly
    • Increase default size of filesystem to 128 MB
    • Update Rust submodule
    • Implement fcntl in ptyd
    • Implement fpath in randd

    Kernel

    View changes here

    • Add __rust_allocate_zeroed in alloc_kernel
    • Fix initfs generation listing bug
    • Remove Copy implementation from context::File
    • Add flags to context::File
    • Increase performance of memcpy, memmove, memset, and memcmp
    • Implement kernel closest-fit page frame allocator (removes memory leak from the old bump allocator)
    • Free page frames recursively, to free all empty tables
    • Implement handles in debug:, so that O_NONBLOCK and fcntl can be used
    • Implement fcntl and fpath for debug:, env:, event:, initfs:, irq:, live:, memory:, null:, pipe:, root:, time:, and zero:
    • Create a sys:iostat that can be used to inspect all open file descriptors
    • Implement O_CLOEXEC in the kernel
    • Implement #! interpreted scripts in exec
    • Fix bug causing grandparents of exited parents of exited children to not receive the error status of exited children
    • Add linker-flavor to targets

    Coreutils

    View changes here

    • Add uniq command
    • Use buffered output in ls
    • Add -f, -F, and -s to tail
    • Fix issue with -a in tee not creating files
    • Calculate characters with UTF-8 in wc
    • Cleanup coreutils library in lib.rs
    • Add a UTF-8 test file

    Drivers

    View changes here

    • Implement fpath in ahcid and e1000d
    • Switch vesad to use handles and support per-handle flags, like O_NONBLOCK
    • Fix bug in port layout in xhcid

    Extrautils

    View changes here

    • Add keymap utility (not yet functional)
    • Human readable format for screenfetch uptime
    • Move tar into extrautils

    Init

    View changes here

    • Open stdio without O_CLOEXEC
    • Cleanup run.d

    Ion

    View changes here

    • Add script arguments $0, $1, $2, ...
    • Improve syntax and performance
    • Implement piping for built-ins
    • Add echo, calc, test, and time as built-ins
    • Add description to all built-ins
    • Refactor modules
    • Update README.md

    Netutils

    View changes here

    • Exit wget with error when remote server returns an error status

    Orbutils

    View changes here

    • Implement URL dialog in browser (press enter to open)
    • Implement resizing for character_map, editor, and file_manager
    • Implement scrolling in editor
    • Refactor launcher
    • Add time to launcher
    • Remove O_CLOEXEC from stdio in terminal
    • Reduce redraws in terminal
    • Close terminal after exit

    Orbdata

    View changes here

    • Convert orbital configuration to TOML

    Orbital

    View changes here

    • Use TOML for configuration
    • Refactor to use fevent, rather than using two blocking threads

    Pkgutils

    View changes here

    • Implement install of local packages
    • Use io:copy to reduce memory usage for package downloads

    RedoxFS

    View changes here

    • Fix seek bug
    • Implement O_APPEND
    Source code(tar.gz)
    Source code(zip)
    harddrive.bin.gz(17.41 MB)
    livedisk.bin.gz(17.42 MB)
    livedisk.iso(18.00 MB)
    redox-livedisk-0.2.0.iso.torrent(11.75 KB)
    redox-livedisk-0.2.0.iso.sha256sum(91 bytes)
  • 0.1.5(Apr 9, 2017)

    ISO Downloads Travis Build Log

    This list of changes came from a line-by-line review of all changes since 0.1.4. Some changes outside of the redox repository, and its submodules, have not been captured.

    This implements terminal resizing, and VirtualBox screen resizing. If you resize the terminal, run:

    eval $(resize)
    

    This will fix the COLUMNS and LINES variables.

    Redox (Distribution)

    • Remove binutils and games by default, they can be installed with pkg
    • Remove cookbook submodule, it must be out-of-tree due to Cargo.toml
    • Add timeout example
    • Remove liner replacement
    • Add termion replacement
    • Update README.md
    • Improve example installer file /etc/installer.toml
    • Add pkg remote repository configuration in /etc/pkg.d
    • Remove display passthrough in contain
    • Use login by default as the starting program in contain
    • Add read and write timeouts to tcp: and udp:

    Drivers

    • Updated to newest master
    • Added alxd driver for Atheros ethernet, still WIP
    • Updated pcid to enable PCI memory and I/O spaces by default
    • Added AZERTY and BEPO keymap to ps2d
    • Add VirtualBox screen resizing features
    • Implement resizing in vesad
    • Fix off-by-one panics in vesad
    • Implement cursor position queries in vesad

    Installer

    • Updated to newest master
    • Ability to install from source using cookbook
    • Cleanup of package installation by using pkgutils directly

    Kernel

    • Updated to newest master
    • Combine arch and kernel to simplify design
    • Fix typos in README.md
    • Implement timeouts with time: scheme
    • Fix serial interrupt handling
    • Cleanup allocations to use new API

    Libc Artifacts

    Coreutils

    Extrautils

    Ion

    Netutils

    Orbital

    Orbutils

    • Updated to newest master
    • Add timeouts to browser
    • Flow browser based on window size
    • Implement Open in editor
    • Use mime and mime_guess to cleanup icon logic in file_manager
    • Resize launcher when screen resizes
    • Cleanup orblogin with variables
    • Make orblogin unclosable
    • Implement resizing in terminal
    • Implement ANSI mouse encoding in terminal
    • Implement alternate screen in terminal
    • Fix scrolling in terminal
    • Fix Linux support for terminal

    Pkgutils

    • Updated to newest master
    • Add configurable remote repositories in /etc/pkg.d
    • Use timeouts in pkg
    • Cleanup pkgutils library with Repo abstraction
    • Make it possible to install with a prefix

    Smith

    Userutils

    Rust

    Source code(tar.gz)
    Source code(zip)
    harddrive.bin.gz(17.36 MB)
    livedisk.bin.gz(17.38 MB)
    livedisk.iso(18.00 MB)
    redox-livedisk-0.1.5.iso.torrent(11.68 KB)
  • 0.1.4(Mar 24, 2017)

    ISO Downloads Travis Build Log

    This release improves VirtualBox networking, fixes bugs, and improves user experience

    Kernels and Drivers

    • Fixed kernel issue causing infinite wakeups after nanosleep
    • Switched drivers from using pause and cli to yield_now without any cli
    • Added link detection to e1000d

    CLI

    • Updated coreutils and ion
    • Fixed head and tail

    GUI

    • Changed algorithm for automatic window placement in orbital
    • Set sane sizes for all orbutils programs, they will fit screen size on smaller screens
    Source code(tar.gz)
    Source code(zip)
    harddrive.bin.gz(16.62 MB)
    livedisk.bin.gz(16.63 MB)
    livedisk.iso(18.00 MB)
  • 0.1.3(Mar 21, 2017)

  • 0.1.2(Mar 17, 2017)

    ISO Downloads Travis Build Log

    This release comes with a load of sweet changes. The most important should be that the usage of Redox OS in VirtualBox has been significantly improved. All three Intel ethernet controllers are supported, and IRQ handling has been fixed.

    Here is a rendering of this page in Redox OS, in VirtualBox

    Here are the VirtualBox settings used, in version 5.1.6

    Very Important Changes

    Kernel

    • Switched interrupt handling to use manual EOI, which should be more compatible and should fix VirtualBox issues

    Filesystem

    • Fixed path parsing issue, which caused a open("/example/non_existent/file", O_CREAT) to create /example/file

    Very Cool Changes

    CLI

    • Significant updates to ion, fixing many syntax issues and adding many features. See the changes here.
    • Added test program, which now compiles for Redox
    • Updated coreutils and extrautils
    • Modify wget and pkg to use hyper, removing a lot of unnecesary code

    GUI

    • Updated cursor theme, added resize cursors for right, bottom, and bottom right edges
    • Scrolling in the file manager
    • Use of hyper in the browser
    • Allow the browser to open local html with file://
    • Fixes for browser panics
    • Fixes for browser handling of Content-Type
    • Improve terminal render speed
    • Add terminal window titles

    Very Boring Changes

    Drivers

    • Updated drivers
    • Added PCI IDs for more Intel ethernet controllers

    Rust

    • Update Rust to new nightly
    Source code(tar.gz)
    Source code(zip)
    harddrive.bin.gz(16.32 MB)
    livedisk.bin.gz(16.34 MB)
    livedisk.iso(17.00 MB)
  • 0.1.1(Feb 28, 2017)

    Orbital Feature Rush

    ISO Downloads Travis Build Log

    This release adds support for resizing windows, mouse scroll, changing window titles, and improves the look and feel of many Redox applications.

    Mirrors

    Github ISO

    Dropbox ISO Dropbox Torrent

    Mega ISO Mega Torrent

    # sha256sum livedisk.iso
    5f70040ae8c81736b517c7afb27c38526f5fc05b345a29db2d6caa7ef8fb88ef  livedisk.iso
    

    Screenshots

    Desktop See more in the album here

    Changelog

    Orbital

    • Fira Sans for window fonts
    • Resizable backgrounds, with zoom, scale, fill, and center modes
    • Multiple background support
    • Window resizing, using border dragging
    • Ability to change window title
    • Pass scroll events to applications

    Orbclient

    • Add scroll events
    • Add resize window flag
    • Catch resize and move events
    • Fix SDL2 backend to provide the same events as the Orbital backend

    Orbutils

    • Improve performance of file manager
    • Use TTF font in terminal
    • Improve look and feel of launcher
    • Allow viewer to resize
    • Allow browser to resize
    • Browser can scroll with mouse wheel
    Source code(tar.gz)
    Source code(zip)
    harddrive.bin.gz(14.42 MB)
    livedisk.bin.gz(14.43 MB)
    livedisk.iso(15.00 MB)
  • 0.1.0(Feb 24, 2017)

  • 0.0.9(Feb 14, 2017)

  • 0.0.8(Feb 8, 2017)

    ISO Downloads

    Fix for VirtualBox lockups. Update of drivers and kernel for better error handling.

    The ISO will be available when this build completes: https://travis-ci.org/redox-os/redox/builds/199501117

    The Redox installer is present in this release, and can be used to build a container.

    # Create a Redox container at "sysroot"
    redox_installer /etc/installer/minimal.toml
    # Enter the new Redox container
    sudo contain sysroot
    # Show processes, RNS and ENS will change based on current container
    ps
    
    Source code(tar.gz)
    Source code(zip)
    harddrive.bin.gz(16.40 MB)
    livedisk.bin.gz(16.41 MB)
    livedisk.iso(17.00 MB)
  • 0.0.7(Feb 2, 2017)

  • 0.0.6(Jan 4, 2017)

  • 0.0.5(Dec 14, 2016)

  • 0.0.4(Dec 12, 2016)

  • 0.0.3(Dec 1, 2016)

    First Redox ISO Release

    ISO Downloads

    This is a test release to see if the new live disk works correctly on a number of different machines. The correct file to download is livedisk.iso.

    Information

    • Using a virtual machine like VirtualBox or QEMU is recommended but not required.
    • It is recommended to give the VM at least 1024 MB of memory. No disk space is required.
    • If you want to install to a USB stick, please use isohybrid. Future releases will do this automatically.
    • The display will be set to 1024x768. This is intentional, to avoid errors with mode setting. Selection of the resolution will be available in future releases.
    • Use the F1, F2, F3, and F4 keys to select a virtual screen. F1 is the debug console, F2 and F3 are virtual terminals, and F4 is the orbital GUI
    • The only supported network cards are the Intel 8254x and RTL8169. The Intel 8254x is available in VirtualBox and in QEMU.

    What to Test

    • Please try the GUI, and typical Unix commands in the terminal emulator.
    • Networking may be available if you have a supported card and are using DHCP. The browser is incomplete and not expected to support most sites.
    • Any unexpected behavior should be reported, particularly any crashes or halts.

    Where to Talk

    • Please report any issues discovered, however big or small here: https://github.com/redox-os/redox/issues
    • Our website is here: https://redox-os.org. We post news there from time to time.
    • We have a forum here that you may use to talk about Redox: https://discourse.redox-os.org/
    • We have a subreddit here: https://reddit.com/r/redox/
    • We have an IRC at irc.mozilla.org #redox
    • For email inquiries, including invites to the developer chat, email [email protected]

    Example VirtualBox Configuration

    General: OS: Other/Unknown (64-bit)

    System: Base Memory: 1024MB or more Acceleration: VT-x/AMD-V, Nested Paging, PAE/NX, KVM Paravirtualization Chipset: ICH9 Pointing Device: PS/2 Mouse Extended Features: Enable I/O APIC

    Display: Video Memory: 32MB Remote Desktop Server: Disabled Video Capture: Disabled

    Storage: Controller: SATA SATA Port 0: [Optical Drive] with the LiveCD ISO file

    Audio: Host Driver: DirectSound (on Windows), PulseAudio (on Linux), ??? (on MacOS) Controller: ICH AC97

    Network: Adapter 1: Intel PRO/1000 MT Desktop (NAT) (82540EM)

    USB: Disabled

    Source code(tar.gz)
    Source code(zip)
    harddrive.bin.gz(10.87 MB)
    livedisk.bin.gz(10.89 MB)
    livedisk.iso(11.43 MB)
Owner
Redox OS
A Rust Operating System
Redox OS
Mirror of https://gitlab.redox-os.org/redox-os/termion

Documentation Examples Changelog Tutorial Termion is a pure Rust, bindless library for low-level handling, manipulating and reading information about

Redox OS 1.9k Dec 31, 2022
Mirror of https://gitlab.redox-os.org/redox-os/rusttype

RustType RustType is a pure Rust alternative to libraries like FreeType. The current capabilities of RustType: Reading OpenType formatted fonts and fo

Redox OS 567 Dec 5, 2022
This project now lives on in a rewrite at https://gitlab.redox-os.org/redox-os/parallel

MIT/Rust Parallel: A Command-line CPU Load Balancer Written in Rust This is an attempt at recreating the functionality of GNU Parallel, a work-stealer

Michael Murphy 1.2k Nov 20, 2022
Mirror of https://gitlab.com/mmstick/tv-renamer

Build Status: Features Written safely in the Rust programming language Features both a command-line and GTK3 interface Support for Templates to define

Michael Murphy 143 Sep 24, 2022
This is a mirror of https://gitlab.com/pcasotti/plate

plate Rust library for writing simpler Vulkan code Installation Add the library to your Cargo.toml file: [dependencies] plate = "0.5" Example Example

Pedro Casotti 15 Sep 10, 2022
Provision your authorized_keys via HTTPS/GitHub/GitLab

Keyps Key Provisioning Service Provision authorized_keys from HTTPS/GitHub/GitLab and automatically keep them up to date. Motivation Problem Provision

Samuel Rounce 6 Apr 27, 2023
Federated blogging application, thanks to ActivityPub (now on https://git.joinplu.me/ — this is just a mirror)

Plume Website — Documentation — Contribute — Instances list Plume is a federated blogging engine, based on ActivityPub. It is written in Rust, with th

Plume 1.9k Jan 8, 2023
Rust wrapper for gphoto2 (mirror of https://git.maxicarlos.de/maxicarlos08/gphoto2-rs)

GPhoto2-rs Rust bindings to libgphoto2 What about gphoto-rs? I know about the other crate (gphoto and gphoto2-sys which was created by @dcuddeback, bu

Maxicarlos08 14 Dec 29, 2022
A fast static site generator in a single binary with everything built-in. https://www.getzola.org

zola (né Gutenberg) A fast static site generator in a single binary with everything built-in. Documentation is available on its site or in the docs/co

Zola 10.1k Jan 5, 2023
A fast static site generator in a single binary with everything built-in. https://www.getzola.org

zola (né Gutenberg) A fast static site generator in a single binary with everything built-in. Documentation is available on its site or in the docs/co

Zola 10.1k Jan 10, 2023
A library for extracting #[no_mangle] pub extern "C" functions (https://docs.rust-embedded.org/book/interoperability/rust-with-c.html#no_mangle)

A library for extracting #[no_mangle] pub extern "C" functions In order to expose a function with C binary interface for interoperability with other p

Dmitrii - Demenev 0 Feb 17, 2022
Cassandra DB native client written in Rust language. Find 1.x versions on https://github.com/AlexPikalov/cdrs/tree/v.1.x Looking for an async version? - Check WIP https://github.com/AlexPikalov/cdrs-async

CDRS CDRS is looking for maintainers CDRS is Apache Cassandra driver written in pure Rust. ?? Looking for an async version? async-std https://github.c

Alex Pikalov 338 Jan 1, 2023
A CLI command to parse kustomize build result and notify it to GitLab

ksnotify A CLI command to parse kustomize build result and notify it to GitLab Caution This repository is under development status. What ksnotify does

null 7 Jan 2, 2023
GitLab Deploy is used for deploying software projects to multiple hosts during different phases.

GitLab Deploy is used for deploying software projects to multiple hosts during different phases. This program should be run on Linux.

Magic Len (Ron Li) 1 Nov 22, 2021
Retrieving SSH and GPS keys from GitHub and GitLab

Dormarch Retrieving SSH and GPS keys from GitHub and GitLab Usage After having installed Dormarch, you can see all the options with dormarch -h. To re

Riccardo Padovani 2 Dec 24, 2021
Basic vim-like editor for Redox-OS

red red is an editor based on vim written in Rust. Goal of this project is to provide a basic command-line editor, much like nano. Targeted for Redox.

null 1 Mar 5, 2022
Everyday-use client-side map-aware Arch Linux mirror ranking tool

Rate Arch Mirrors This is a tool, which fetches mirrors, skips outdated/syncing Arch Linux mirrors, then uses info about submarine cables and internet

Nikita Almakov 196 Jan 2, 2023
memflow based dxgi screen mirror prototype

memflow-mirror work in progress framebuffer mirror based on memflow. Installation Compile the guest-agent on Windows with: cargo build --release --bin

null 21 May 9, 2022
Check the reproducibility status of your Arch Linux packages (read-only mirror)

arch-repro-status A CLI tool for querying the reproducibility status of the Arch Linux packages using data from a rebuilderd instance such as reproduc

Arch Linux 12 Nov 16, 2022
A library that creates a terminal-like window with feature-packed drawing of text and easy input handling. MIRROR.

BearLibTerminal provides a pseudoterminal window with a grid of character cells and a simple yet powerful API for flexible textual output and uncompli

Tommy Ettinger 43 Oct 31, 2022