Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • jD91mZM2/redox
  • cameronbraid/redox
  • nanpuyue/redox
  • tijlleenders/redox
  • carrot93/redox
  • xsniu/redox
  • vincent/redox
  • edric-shen/redox
  • StPanning/redox
  • PrinceCEE/redox
  • limotree/redox
  • accessviolation/redox
  • jordyd/redox
  • xushaohua/redox
  • liangju.li/redox
  • mindriot101/redox
  • b4l/redox
  • feliwir/redox
  • cyboerg42/redox
  • AnandSMain/redox
  • rxwb/redox
  • mattmadeofpasta/redox
  • CodeCanna/redox
  • matt-vdv/redox
  • setupminimal/redox
  • ackxolotl/redox
  • andrewdavidmackenzie/redox
  • VitalyAnkh/redox
  • boringcactus/redox
  • retrocoder68/redox
  • scruffystuffs/redox
  • jensliu29/redox
  • deepkenlau/redox
  • mdpatelcsecon/redox
  • mylekiller/redox
  • jcoonrod51/redox
  • willnode/redox
  • Rillian-Grant/redox
  • Forest0923/redox
  • TornaxO7/redox
  • rmorey/redox
  • batzor/redox
  • Galestrike/redox
  • dheater/redox
  • bripeace/redox
  • Goganoid/redox
  • pajamapants3000/redox
  • timolinn/redox
  • anirudhrb/redox
  • rschulman/redox
  • d3v1m/redox
  • hmcmillan/redox
  • montao/redox
  • Thessal/redox
  • alfredoyang/redox
  • colinfruit/redox
  • muizz/redox
  • brunoflores/redox
  • loganathanav/redox
  • kblobr/redox
  • pharaone/redox
  • vivaoromance/redox
  • adi-g15/redox
  • nuxs/redox
  • Skallwar/redox
  • colepoirier/redox
  • DimitarGj/redox
  • vector1dev/redox
  • shanavasm/redox
  • henrykrumb/redox
  • sweetliquid/redox
  • cal-lifornia/redox
  • 0al3x/redox
  • kITerE/redox
  • freewilll/redox
  • bogsi/redox
  • andypython/redox
  • bpisch/redox
  • w62/redox
  • sandmor/redox
  • shibasisp/redox
  • fuchsnj/redox
  • ids1024/redox
  • josh_williams/redox
  • doctor-love/redox
  • matthewcroughan/redox
  • MichaelMcDonnell/redox
  • StaringAtEditor/redox-os-complete
  • jinb-park/redox
  • dahc/redox
  • pirsonxyz/redox
  • YasinLin/redox
  • yerke/redox
  • potatogim/redox
  • NathanHannon/redox
  • enygmator/redox
  • glongo/redox
  • mati865/redox
  • udhems/redox
  • oytis/redox
  • t-nil/redox
  • l-const/redox
  • lumicia/redox
  • wheatfox/redox
  • zhangaz1/redox
  • rharriso/redox
  • paulyc/redox
  • amidamaru/redox
  • A-ee/redox
  • Oyami-Srk/redox
  • maxtnuk/redox
  • tyu1996/redox
  • tfinnegan937/redox
  • uuuvn/redox
  • leandrosansilva/redox
  • raffaeleragni/redox
  • ondono/redox
  • mylxiaoyi/redox
  • siavoshkc/redox-sia
  • michael_wzq/redox
  • tjrana/redox
  • sjq/redox
  • jmaine/redox
  • Krahos/redox
  • arthomnix/redox
  • coolreader18/redox
  • ginkooo/redox
  • bouyagas/redox
  • genderquery/redox
  • andrewdmeier/redox
  • bujak.rafal/redox
  • lecyntho/redox
  • tranlyvu/redox
  • pramodsenevi/redox
  • hapax/redox
  • hotschi/redox
  • zak-grumbles/redox
  • Ben-PH/redox
  • gjaldon/redox
  • hasheddan/redox
  • microcolonel/redox
  • Ivan/redox
  • mandragore/redox
  • projjal/redox
  • Capucho/redox
  • zhaozhao/redox
  • noam93k/redox
  • carneeki/redox
  • tml/redox
  • InfRandomness/redox
  • xakon/redox
  • rccavalcante/redox
  • sandmail32/redox
  • Tregoe/redox
  • sheldon-knuth/redox
  • dario/redox
  • andrey.turkin/redox
  • rgucluer/redox
  • IceTDrinker/redox
  • athei/redox
  • rw_van/redox
  • Craft/redox
  • ybalrid/redox
  • gs0510/redox
  • obtuseFox/redox
  • dja/redox
  • AshtonKem/redox
  • GCPBigData/redox
  • davxy/redox
  • hnkz/redox
  • wimigame/redox
  • cyplo/redox
  • 4lDO2/redox
  • redox-os/redox
  • yew1eb/redox
  • andar1an/redox
  • pfr/redox
  • riyadh144/redox
  • bjorn3/redox
  • Daeraxa/redox
  • Chenlibo/redox
  • cherusk/redox
  • avr1254/redox
  • Slender1808/redox
  • josh/redox
  • gmacd/redox
  • pprat2000/redox
  • wt/redox
  • stardustman/redox
  • xenkuo/redox
  • peter/redox
  • auwardoctor/redox
  • karlpvoss/redox
  • squidboylan/redox
  • lastonesky/redox
  • ktoks/redox
  • liuyd96/redox
  • thushan/redox
  • develop7/redox
  • efikarl/redox
  • mpajkowski/redox
  • xTibor/redox
  • colleenRooney/redox
  • devnexen/redox
  • nayabbashasayed/redox
  • vinzenz/redox-workfork
  • markh/redox
  • kanghaiyang/redox
  • DDiPuma/redox
  • wuquanyao/redox
  • skilfingr/redox
  • booloose/redox
  • shaojintian/redox
  • jferard/redox
214 results
Show changes
Commits on Source (1010)
Showing
with 649 additions and 540 deletions
/build/ /build/
/prefix/ /prefix/
.config .config
**/my_*
# Local settings folder for Jetbrains products (RustRover, IntelliJ, CLion)
.idea/
# Local settings folder for Visual Studio Professional
.vs/
# Local settings folder for vscode
.vscode/
# Local settings folder for the devcontainer extension that most IDEs support.
.devcontainer/
image: "ubuntu:20.04" # The GitLab Continuous Integration configuration
image: "ubuntu:22.04"
variables: variables:
GIT_STRATEGY: "pull" GIT_STRATEGY: "clone"
GIT_SUBMODULE_STRATEGY: "recursive" GIT_SUBMODULE_STRATEGY: "recursive"
GIT_CHECKOUT: "true"
before_script: before_script:
# Disable the wget progress bar
- echo 'show-progress = off' >> ~/.wgetrc
- | - |
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
apt-get update -qq && apt-get update -qq &&
...@@ -13,31 +15,30 @@ before_script: ...@@ -13,31 +15,30 @@ before_script:
bison \ bison \
build-essential \ build-essential \
curl \ curl \
dosfstools \
flex \ flex \
fuse \ fuse3 \
genisoimage \
git \ git \
gnupg \
libfuse-dev \ libfuse-dev \
nasm \ nasm \
parted \
pkg-config \ pkg-config \
software-properties-common \
syslinux \
syslinux-utils \
texinfo \ texinfo \
wget && wget \
help2man \
autoconf \
automake \
zstd &&
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
img: img:
script: script:
- | - |
source "$HOME/.cargo/env" && source "$HOME/.cargo/env" &&
cargo install --version 0.1.1 cargo-config && curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash &&
cargo install cargo-xbuild && cargo binstall --no-confirm --version 0.1.1 cargo-config &&
cargo install --version 0.3.20 xargo && cargo binstall --no-confirm --version 1.16.0 just &&
make ci-img IMG_TAG=$CI_COMMIT_REF_NAME cargo binstall --no-confirm --version 0.27.0 cbindgen &&
cargo build --manifest-path installer/Cargo.toml --release &&
PODMAN_BUILD=0 REPO_BINARY=1 make ci-img IMG_TAG=$CI_COMMIT_REF_NAME
artifacts: artifacts:
paths: paths:
- build/img/ - build/img/
......
...@@ -9,7 +9,8 @@ ...@@ -9,7 +9,8 @@
[submodule "rust"] [submodule "rust"]
path = rust path = rust
url = https://gitlab.redox-os.org/redox-os/rust.git url = https://gitlab.redox-os.org/redox-os/rust.git
branch = redox-2023-01-21 branch = redox-2025-01-12
update = none
[submodule "redoxfs"] [submodule "redoxfs"]
path = redoxfs path = redoxfs
url = https://gitlab.redox-os.org/redox-os/redoxfs.git url = https://gitlab.redox-os.org/redox-os/redoxfs.git
......
# Contributing to Redox # Contributing to Redox
_**Thank you for your interest in contributing to Redox!** This document will outline the basics of where to start if you wish to contribute to the project. There are many ways to help us out and and we appreciate all of them. We look forward to **your contribution**!_ **Thank you for your interest in contributing to Redox!**
This document will outline the basics of where to start if you wish to contribute to the project. There are many ways to help us out and and we appreciate all of them. We look forward to **your contribution!**
**Please read this document until the end**
## Code Of Conduct ## Code Of Conduct
...@@ -8,108 +12,191 @@ We follow the [Rust Code Of Conduct](https://www.rust-lang.org/policies/code-of- ...@@ -8,108 +12,191 @@ We follow the [Rust Code Of Conduct](https://www.rust-lang.org/policies/code-of-
## License ## License
In general, your contributions to Redox are governed by the MIT License. Each project repository has a LICENSE file that provides the license terms for that project. In general, your contributions to Redox are governed by the [MIT License](https://en.wikipedia.org/wiki/MIT_License). Each project repository has a `LICENSE` file that provides the license terms for that project.
Please review the `LICENSE` file for the project you are contributing to.
[This](https://doc.redox-os.org/book/philosophy.html) page we explain why we use the MIT license.
## Chat
Join us on [Matrix Chat](https://doc.redox-os.org/book/chat.html) to discuss issues or ask questions.
## Important Places to Contribute
Before starting to contribute, we recommend reading the [Website FAQ](https://www.redox-os.org/faq/) and the [Redox Book](https://doc.redox-os.org/book/).
You can contribute to the Redox documentation and code on the following repositories (non-exhaustive, easiest first):
- [Website](https://gitlab.redox-os.org/redox-os/website)
- [Book](https://gitlab.redox-os.org/redox-os/book) - High-level documentation
- [Build System Configuration](https://gitlab.redox-os.org/redox-os/redox) - Our main repository
- [Cookbook](https://gitlab.redox-os.org/redox-os/cookbook) - Software Ports System
- [Orbital](https://gitlab.redox-os.org/redox-os/orbital) - Display Server and Window Manager
- [pkgutils](https://gitlab.redox-os.org/redox-os/pkgutils) - Package Manager
- [resist](https://gitlab.redox-os.org/redox-os/resist) - Redox System Interface Specifications and Tests (also has POSIX tests)
- [acid](https://gitlab.redox-os.org/redox-os/acid) - Redox Test Suite
- [relibc](https://gitlab.redox-os.org/redox-os/relibc) - Redox C Library
- [libredox](https://gitlab.redox-os.org/redox-os/libredox) - Redox System Library
- [netstack](https://gitlab.redox-os.org/redox-os/netstack) - Network Stack
- [Bootloader](https://gitlab.redox-os.org/redox-os/bootloader)
- [Drivers](https://gitlab.redox-os.org/redox-os/drivers) - Device Drivers
- [Kernel](https://gitlab.redox-os.org/redox-os/kernel)
Please review the LICENSE for the project you are contributing to. To see all Redox repositories open the [redox-os group](https://gitlab.redox-os.org/redox-os).
- [Our Philosophy](https://doc.redox-os.org/book/ch01-02-philosophy.html) ### Skill Levels
## Low-Hanging Fruit - Easy Targets for Newbies If you don't know programming:
If you're not fluent in Rust: - Write documentation
- Use and test Redox, and file issues for bugs or needed features (please check for duplicates first etc.)
* Writing documentation If you don't know how to code in Rust, but know other programming languages:
* Using/testing Redox, filing issues for bugs and needed features
* Web development ([Redox website, separate repo](https://gitlab.redox-os.org/redox-os/website))
* Writing unit tests (may require minimal knowledge of rust)
If you are fluent in Rust, but not OS Development: - Web development on the website (we don't accept JavaScript code)
- Write unit tests (may require minimal knowledge of Rust)
- Port C/C++ programs to Redox (read the `TODO`s of the recipes on the [WIP category](https://gitlab.redox-os.org/redox-os/cookbook/-/tree/master/recipes/wip?ref_type=heads))
- Port programs to Redox
* Port applications written in Rust to Redox If you know how to code in Rust, but don't know operating system development:
* Rewritten-in-Rust libc ([relibc](https://gitlab.redox-os.org/redox-os/relibc))
* Shell ([Ion](https://gitlab.redox-os.org/redox-os/ion))
* Package manager ([pkgutils](https://gitlab.redox-os.org/redox-os/pkgutils))
If you are fluent in Rust, and have experience with OS Dev: - Look for issues labeled "good first issue", "easy", and/or "help wanted", e.g. [this GitLab filter](https://gitlab.redox-os.org/groups/redox-os/-/issues/?sort=updated_desc&state=opened&or%5Blabel_name%5D%5B%5D=good%20first%20issue&or%5Blabel_name%5D%5B%5D=Easy&or%5Blabel_name%5D%5B%5D=easy&or%5Blabel_name%5D%5B%5D=help%20wanted&first_page_size=20]). Worth noting the skill level varies between projects, but a large subset of these should be approachable by contributors familiar with regular Rust/Unix application programming.
- Improve the package manager, or other meta-tools like `redoxer` or `installer`
- Improve the [Ion](https://gitlab.redox-os.org/redox-os/ion) shell, or other high-level or mid-level projects
- Port Rust programs to Redox, possibly including dependencies, and C library extensions if necessary (also look for issues with the `port` label)
- Improve program compatibility in relibc by e.g. implementing missing APIs
* Familiarize yourself with the repository and codebase If you know how to code in Rust, and have experience with systems software/OS development:
* Grep for `TODO`, `FIXME`, `BUG`, `UNOPTIMIZED`, `REWRITEME`, `DOCME`, and `PRETTYFYME` and fix the code you find.
* Update older code to remove warnings. - Familiarize yourself with the repository layout, code, and build system
* Improve and optimize code, especially in the kernel - Update old code to remove warnings
- Search for `TODO`, `FIXME`, `BUG`, `UNOPTIMIZED`, `REWRITEME`, `DOCME`, and `PRETTYFYME` and fix the code you find
- Look in general for issues with the following labels: `critical`, `help wanted`, `feature`, `enhancement`, `bug` or `port`
- Improve internal libraries and abstractions, e.g. `libredox`, `redox-scheme`, `redox-event` etc.
- Help upstream Redox-specific functionality to the Rust ecosystem
- Improve Redox's automated testing suite and continuous integration testing processes
- Improve, profile, and optimize code, especially in the kernel, filesystem, and network stack
- Improve or write device drivers
For those who want to contribute to the Redox GUI, our GUI strategy has recently changed. For those who want to contribute to the Redox GUI, our GUI strategy has recently changed.
* OrbTk is now sunsetting, and its developers have moved to other projects such as the ones below. There is currently no Redox-specific GUI development underway. - We are improving the [Orbital](https://gitlab.redox-os.org/redox-os/orbital) display server and window manager, you can read more about it on [this tracking issue](https://gitlab.redox-os.org/redox-os/redox/-/issues/1430).
* Redox is in the process of adopting other Rust-lang GUIs such as [Iced](https://iced.rs) and [Slint](https://slint-ui.com/). Please check out those projects if this is your area of interest. - Redox is in the process of adopting other Rust-written GUI toolkits, such as [Iced](https://iced.rs) and [Slint](https://slint-ui.com/). Please check out those projects if this is your area of interest.
- OrbTk is in maintenance mode, and its developers have moved to other projects such as the ones below. There is currently no Redox-specific GUI development underway.
You can contribute to Redox documentation/code on these repositories: ## Priorities
(The order is based on difficulty, easy things first) You can use the following GitLab label filters to know our development priorities on the moment:
- [Website](https://gitlab.redox-os.org/redox-os/website) - [Critical](https://gitlab.redox-os.org/redox-os/redox/-/issues/?sort=created_date&state=opened&label_name%5B%5D=critical&first_page_size=20)
- [Book](https://gitlab.redox-os.org/redox-os/book) - [High-priority](https://gitlab.redox-os.org/redox-os/redox/-/issues/?sort=created_date&state=opened&label_name%5B%5D=high-priority&first_page_size=20)
- [Main Repository (build system/config)](https://gitlab.redox-os.org/redox-os/redox) - [Medium-priority](https://gitlab.redox-os.org/redox-os/redox/-/issues/?sort=created_date&state=opened&label_name%5B%5D=medium-priority&first_page_size=20)
- [Cookbook (all system components/ported software)](https://gitlab.redox-os.org/redox-os/cookbook) - [Low-priority](https://gitlab.redox-os.org/redox-os/redox/-/issues/?sort=created_date&state=opened&label_name%5B%5D=low-priority&first_page_size=20)
- [Display Server/Desktop Environment](https://gitlab.redox-os.org/redox-os/orbital)
- [Orbital Client Library](https://gitlab.redox-os.org/redox-os/orbclient)
- [Orbital Applications](https://gitlab.redox-os.org/redox-os/orbutils)
- [Redox C Library](https://gitlab.redox-os.org/redox-os/relibc)
- [Drivers](https://gitlab.redox-os.org/redox-os/drivers)
- [Kernel](https://gitlab.redox-os.org/redox-os/kernel)
## Best Practices and Guidelines ## RFCs
For more significant changes that affect Redox's architecture, we use the [Request for Comments](https://gitlab.redox-os.org/redox-os/rfcs) repository.
## Build System
To download the build system use the following commands:
(You need to have [curl](https://curl.se/) installed on your system)
```sh
curl -sf https://gitlab.redox-os.org/redox-os/redox/raw/master/podman_bootstrap.sh -o podman_bootstrap.sh
```
```sh
time bash -e podman_bootstrap.sh
```
To start the compilation of the default recipes run the command below:
```sh
make all
```
- [Redox Book Guide](https://doc.redox-os.org/book/ch11-00-best-practices.html) In case your operating system does not use SELinux, you must set the `USE_SELINUX` to `0` when calling `make all`, otherwise you might experience errors:
### Testing Practices ```sh
make all USE_SELINUX=0
```
- [Redox Book Guide](https://doc.redox-os.org/book/ch09-03-testing-practices.html) You can find the build system organization and commands on the [Build System](https://doc.redox-os.org/book/build-system-reference.html) page.
## Developer FAQ
You can see the most common questions and problems on the [Developer FAQ](https://doc.redox-os.org/book/developer-faq.html) page.
## Porting Software
You can read how to use the Cookbook recipe system to port applications on the [Porting Applications using Recipes](https://doc.redox-os.org/book/porting-applications.html) page.
## Libraries and APIs
You can read the [Libraries and APIs](https://doc.redox-os.org/book/libraries-apis.html) page to learn about the libraries and APIs used in Redox.
## Visual Studio Code (VS Code) Configuration
To learn how to configure your VS Code to do Redox development please read the information below the [Visual Studio Code Configuration](https://doc.redox-os.org/book/coding-and-building.html#visual-studio-code-configuration) section.
## Development Tips
You can find important tips on the [Development Tips](https://doc.redox-os.org/book/coding-and-building.html#development-tips) section.
## References
We maintain a list of wikis, articles and videos to learn Rust, OS development and computer science on the [References](https://doc.redox-os.org/book/references.html) page.
If you are skilled there's a possibility that they could improve your knowledge in some way.
## Best Practices and Guidelines
You can read the best practices and guidelines on the [Best practices and guidelines](https://doc.redox-os.org/book/best-practices.html) chapter.
## Style Guidelines ## Style Guidelines
### Rust ### Rust
Since **Rust** is a relatively small and new language compared to others like _C_, there's really only one standard. Just follow the official Rust standards for formatting, and maybe run `rustfmt` on your changes, until we setup the CI system to do it automatically. Since **Rust** is a relatively small and new language compared to others like C and C++, there's really only one standard. Just follow the official Rust standards for formatting, and maybe run `rustfmt` on your changes, until we setup the CI system to do it automatically.
### Git ### Git
Please follow our [Git style for pull requests](https://doc.redox-os.org/book/ch12-04-creating-proper-pull-requests.html). Please follow our [Git style](https://doc.redox-os.org/book/creating-proper-pull-requests.html) for pull requests.
## GitLab ## GitLab
### Issues ### Identity
You will need to have a Redox GitLab account to file an issue, and registration can take a few days.
- [Redox Book Guide](https://doc.redox-os.org/book/ch12-05-issues.html)
### Pull Requests Once your GitLab account is created, you should add your Matrix or Discord username (the name after the `@` symbol) on the "About" section of your profile, that way we recognize you properly.
Please follow our process for [creating proper pull requests](https://doc.redox-os.org/book/ch12-04-creating-proper-pull-requests.html). ### Issues
To know how to create issues on the Redox GitLab, read the [Filing Issues](https://doc.redox-os.org/book/filing-issues.html) page.
## External Links Once you create an issue don't forget to post the link on the Dev or Support rooms of the chat, because the GitLab email notifications have distractions (service messages or spam) and most developers don't left their GitLab pages open to receive desktop notifications from the web browser (which require a custom setting to receive issue notifications).
* [redox-os.org](https://redox-os.org) By doing this you help us to pay attention to your issues and avoid them to be accidentally forgotten.
* [rust-os-comparison](https://github.com/flosse/rust-os-comparison)
* [rust-lang.org](http://rust-lang.org)
## Chat ### Pull Requests
Join us on [Matrix Chat](https://doc.redox-os.org/book/ch13-01-chat.html) to discuss issues or ask questions. Please follow [our process](https://doc.redox-os.org/book/creating-proper-pull-requests.html) for creating proper pull requests.
## Other Ways to Contribute ## Other Ways to Contribute
If you're not big on coding, but you still want to help keep the project going, you can still contribute/support in a variety of ways! We'll try to find a way to use anything you have to offer. If you aren't good on coding, but you still want to help keep the project going, you can contribute and support in a variety of ways! We'll try to find a way to use anything you have to offer.
### Book ToDos ### Design
- [Book README](https://gitlab.redox-os.org/redox-os/book/-/blob/master/README.md) If you're a good designer, whether it's 2D graphics, 3D graphics, interfaces, web design, you can help. We need logos, UI design, UI skins, app icons, desktop backgrounds, etc.
### Design - [Redox backgrounds](https://gitlab.redox-os.org/redox-os/backgrounds) - You can send your wallpapers on this repository.
- [Redox assets](https://gitlab.redox-os.org/redox-os/assets) - You can send your logos, icons and themes on this repository.
If you're a good designer, whether it's _2D graphics, 3D graphics, interfaces, web design, you can help. We need logos, UI design, UI skins, app icons, desktop backgrounds, etc_. More information to come on this in the future, for now just join the [Chat](https://doc.redox-os.org/book/ch13-01-chat.html) and ask about graphic design. If you have questions about the graphic design, ask us on the [Chat](https://doc.redox-os.org/book/chat.html).
### Donate to Redox ### Donate to Redox
If you are interested in donating to the Redox OS nonprofit, you can find instructions [here](https://www.redox-os.org/donate/). If you are interested in donating to the Redox OS Nonprofit, you can find instructions on the [Donate](https://www.redox-os.org/donate/) page.
# Redox 0.8.0 Hardware Compatibility # Hardware Compatibility
Updated on November 11, 2022 in preparation for the 0.8.0 release. Systems are This document tracks the current hardware compatibility of Redox.
rated on a scale of 🚫 Broken, ⚠️ Booting, and ✅ Recommended. Broken means the
system cannot boot to a desktop, booting means the system boots to a desktop
but has issues, and recommended means the system provides all implemented
features.
## General - [Why hardware reports are needed?](#why-hardware-reports-are-needed)
- [What if my computer is customized?](#what-if-my-computer-is-customized)
Due to incomplete USB support, desktops are generally not recommended. - [Status](#status)
- [General](#general)
- USB support is incomplete - [Template](#template)
- Wireless networking is not supported - [Recommended](#recommended)
- [Booting](#booting)
## x86_64 - [Broken](#broken)
Test performed using https://static.redox-os.org/img/x86_64/redox_desktop_x86_64_2022-11-11_629_livedisk.iso
### Lenovo IdeaPad Y510P
Status: ✅ Recommended
- Booted using both BIOS and UEFI
- Boots to desktop
### System76 Galago Pro (galp5)
Status: ✅ Recommended
- Booted using UEFI
- Boots to desktop
### System76 Lemur Pro (lemp9)
Status: ✅ Recommended
- Booted using UEFI
- Boots to desktop
### Asus X554L
Status: ⚠️ Booting
- Booted using BIOS
- Boots to desktop
- No audio, HDA driver cannot find output pins
### Dell XPS 13 (9350)
Status: ⚠️ Booting
- Booted using both BIOS and UEFI
- Boots to desktop
- NVMe driver livelocks
### HP Dev One
Status: ⚠️ Booting ## Why hardware reports are needed?
- Booted using UEFI Each computer model have different hardware interface/firmware implementations and devices, which can cause the following problems:
- Boots to desktop
- No touchpad support, requires I2C HID
### System76 Oryx Pro (oryp10) - Boot bugs
- Lack of device support
- Performance degradation
Status: ⚠️ Booting These reports helps us to fix the problems above.
- Booted using UEFI ## What if my computer is customized?
- Boots to desktop
- No touchpad support, though it should be working
### System76 Pangolin (pang12) You can use the "Custom" word on the "Vendor" and "Model" categories, we also recommend to add your `pciutils` log on [this document link](https://gitlab.redox-os.org/redox-os/drivers/-/blob/master/COMMUNITY-HW.md?ref_type=heads) to help us with probable porting.
Status: ⚠️ Booting ## Status
- Booted using UEFI - Broken - The system can't boot.
- Boots to desktop - Booting - The system boots with some issues.
- No touchpad support, requires I2C HID - Recommended - The system start with all features working.
### Toshiba Satellite L500 ## General
Status: ⚠️ Booting
- Booted using BIOS
- Correct video mode not offered, this is a firmware issue
- Boots to desktop
- No ethernet driver
### Lenovo G570
Status: 🚫 Broken
- Booted using BIOS
- Correct video mode not offered, this is a firmware issue
- Bootloader panics in alloc_zeroed_page_aligned
## i686
Test performed using https://static.redox-os.org/img/i686/redox_desktop_i686_2022-11-11_629_livedisk.iso
### Asus Eee PC 900
Status: ⚠️ Booting
- Booted using BIOS
- Correct video mode not offered, this is a firmware issue
- Boots to desktop
- No ethernet driver
### Dell XPS 13 (9350)
Status: ⚠️ Booting
- Booted using BIOS
- Boots to desktop
- NVMe driver livelocks
### Lenovo IdeaPad Y510P
Status: 🚫 Broken
- Booted using BIOS
- Panics on phys_to_virt overflow, probably having invalid mappings for 32-bit
### Panasonic Toughbook CF-18
Status: 🚫 Broken
- Booted using BIOS
- Hangs after PIT initialization
### Toshiba Satellite L500
Status: 🚫 Broken This section cover things to consider.
- ACPI support is incomplete (some things are hardcoded on the kernel)
- Only USB input devices are supported
- Wi-Fi is not supported
- GPU drivers aren't supported (only VESA and UEFI GOP)
- Automatic operating system discovery on boot loader is not implemented (remember this before installing Redox)
## Template
You will use this template to insert your computer on the table.
```
| | | | | | | | |
```
## Recommended
| **Vendor** | **Model** | **Redox Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** |
|------------|-----------|-------------------|----------------|-------------|----------------------|--------------------------|------------|
| System76 | Galago Pro (galp5) | 0.8.0 | 11-11-2022 | desktop | x86-64 | UEFI | Boots to Orbital |
| System76 | Lemur Pro (lemp9) | 0.8.0 | 11-11-2022 | desktop | x86-64 | UEFI | Boots to Orbital |
| Lenovo | IdeaPad Y510P | 0.8.0 | 11-11-2022 | desktop | x86-64 | BIOS, UEFI | Boots to Orbital |
## Booting
| **Vendor** | **Model** | **Redox Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** |
|------------|-----------|-------------------|----------------|-------------|----------------------|--------------------------|------------|
| System76 | Oryx Pro (oryp10) | 0.8.0 | 11-11-2022 | desktop | x86-64 | UEFI | Boots to Orbital, No touchpad support, though it should be working |
| System76 | Pangolin (pang12) | 0.8.0 | 11-11-2022 | desktop | x86-64 | UEFI | Boots to Orbital, No touchpad support, requires I2C HID |
| Dell | XPS 13 (9350) | 0.8.0 | 11-11-2022 | desktop | x86-64 | BIOS, UEFI | Boots to Orbital, NVMe driver livelocks |
| Dell | XPS 13 (9350) | 0.8.0 | 11-11-2022 | desktop | i686 | BIOS | Boots to Orbital, NVMe driver livelocks |
| HP | Dev One | 0.8.0 | 11-11-2022 | desktop | x86-64 | UEFI | Boots to Orbital, No touchpad support, requires I2C HID |
| ASUS | X554L | 0.8.0 | 11-11-2022 | desktop | x86-64 | BIOS | Boots to Orbital, No audio, HDA driver cannot find output pins |
| ASUS | ROG g55vw | 0.8.0 | 11-11-2023 | desktop | x86-64 | BIOS | Boots to Orbital, UEFI panic in SETUP |
| ASUS | PRIME B350M-E (custom) | 0.9.0 | 20-09-2024 | desktop | x86-64 | UEFI | Partial support for the PS/2 keyboard, PS/2 mouse is broken |
| ASUS | Eee PC 900 | 0.8.0 | 11-11-2022 | desktop | i686 | BIOS | Boots to Orbital, No ethernet driver, Correct video mode not offered (firmware issue) |
| Toshiba | Satellite L500 | 0.8.0 | 11-11-2022 | desktop | x86-64 | BIOS | Boots to Orbital, No ethernet driver, Correct video mode not offered (firmware issue) |
| Raspberry Pi | 3 Model B+ | 0.8.0 | Unknown | server | ARM64 | U-Boot | Boots to UART serial console (pl011) |
| Lenovo | ThinkPad Yoga 260 Laptop - Type 20FE | 0.9.0 | 07-09-2024 | demo | x86-64 | UEFI | Boots to Orbital, No audio |
| Lenovo | Yoga S730-13IWL | 0.9.0 | 09-11-2024 | desktop | x86-64 | UEFI | Boots to Orbital, No trackpad or USB mouse input support |
## Broken
| **Vendor** | **Model** | **Redox Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** |
|------------|-----------|-------------------|----------------|-------------|----------------------|--------------------------|------------|
| HP | EliteBook 2570p | 0.8.0 | 23-11-2022 | demo | x86-64 | BIOS (CSM mode?) | Gets to resolution selection, Fails assert in `src/os/bios/mod.rs:77` after selecting resolution |
| BEELINK | U59 | 0.8.0 | 30-05-2024 | server | x86-64 | Unknown | Aborts after panic in xhcid |
| ASUS | PN41 | 0.8.0 | 30-05-2024 | server | x86-64 | Unknown | Aborts after panic in xhcid |
| Lenovo | G570 | 0.8.0 | 11-11-2022 | desktop | x86-64 | BIOS | Bootloader panics in `alloc_zeroed_page_aligned`, Correct video mode not offered (firmware issue) |
| Lenovo | IdeaPad Y510P | 0.8.0 | 11-11-2022 | desktop | i686 | BIOS | Panics on `phys_to_virt overflow`, probably having invalid mappings for 32-bit |
| Framework | Laptop 16 (AMD Ryzen 7040 Series) | 0.9.0 | 07-09-2024 | server, demo | x86-64 | UEFI | Black screen and unresponsive after the bootloader and resolution selection |
| Toshiba | Satellite L500 | 0.8.0 | 11-11-2022 | desktop | i686 | BIOS | Correct video mode not offered (firmware issue), Panics on `phys_to_virt overflow`, probably having invalid mappings for 32-bit |
| Panasonic | Toughbook CF-18 | 0.8.0 | 11-11-2022 | desktop | i686 | BIOS | Hangs after PIT initialization |
| XMG (Schenker) | Apex 17 (M21) | 0.9.0 | 30-09-2024 | demo, server | x86-64 | UEFI | After selecting resolution, (release) repeats `...::interrupt::irq::ERROR -- Local apic internal error: ESR=0x40` a few times before it freezes; (daily) really slowly prints statements from `...::rmm::INFO` before it abruptly aborts |
| HP | Compaq nc6120 | 0.9.0 | 2024-11-08 | desktop, server | i686 | BIOS | Unloads into memory at a rate slower than 1MB/s after selecting resolution. When unloading is complete the logger initializes and crashes after kernel::acpi, some information about APIC is printed. Boot logs do not progress after this point. |
- Booted using BIOS
- Correct video mode not offered, this is a firmware issue
- Panics on phys_to_virt overflow, probably having invalid mappings for 32-bit
# Configuration and variables # This file contains the build system commands configuration
# and environment variables
include mk/config.mk include mk/config.mk
# Dependencies # Build system dependencies
include mk/depends.mk include mk/depends.mk
all: $(BUILD)/harddrive.img all: $(BUILD)/harddrive.img
live: $(BUILD)/livedisk.iso live:
-$(FUMOUNT) $(BUILD)/filesystem/ || true
-$(FUMOUNT) /tmp/redox_installer/ || true
rm -f $(BUILD)/livedisk.iso
$(MAKE) $(BUILD)/livedisk.iso
popsicle: $(BUILD)/livedisk.iso
popsicle-gtk $(BUILD)/livedisk.iso
image: image:
-$(FUMOUNT) $(BUILD)/filesystem/ || true -$(FUMOUNT) $(BUILD)/filesystem/ || true
...@@ -17,7 +25,7 @@ image: ...@@ -17,7 +25,7 @@ image:
rebuild: rebuild:
-$(FUMOUNT) $(BUILD)/filesystem/ || true -$(FUMOUNT) $(BUILD)/filesystem/ || true
-$(FUMOUNT) /tmp/redox_installer/ || true -$(FUMOUNT) /tmp/redox_installer/ || true
rm -rf $(BUILD) rm -rf $(BUILD)/repo.tag $(BUILD)/harddrive.img $(BUILD)/livedisk.iso
$(MAKE) all $(MAKE) all
clean: $(CONTAINER_TAG) clean: $(CONTAINER_TAG)
...@@ -25,7 +33,7 @@ ifeq ($(PODMAN_BUILD),1) ...@@ -25,7 +33,7 @@ ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@ $(PODMAN_RUN) $(MAKE) $@
else else
cd cookbook && ./clean.sh cd cookbook && ./clean.sh
cargo clean --manifest-path cookbook/pkgutils/Cargo.toml -rm -rf cookbook/repo
cargo clean --manifest-path installer/Cargo.toml cargo clean --manifest-path installer/Cargo.toml
cargo clean --manifest-path redoxfs/Cargo.toml cargo clean --manifest-path redoxfs/Cargo.toml
cargo clean --manifest-path relibc/Cargo.toml cargo clean --manifest-path relibc/Cargo.toml
...@@ -43,7 +51,7 @@ else ...@@ -43,7 +51,7 @@ else
endif endif
pull: pull:
git pull --recurse-submodules git pull
git submodule sync --recursive git submodule sync --recursive
git submodule update --recursive --init git submodule update --recursive --init
...@@ -54,6 +62,9 @@ repo: $(BUILD)/repo.tag ...@@ -54,6 +62,9 @@ repo: $(BUILD)/repo.tag
# Podman build recipes and vars # Podman build recipes and vars
include mk/podman.mk include mk/podman.mk
# Disk Imaging and Cookbook tools
include mk/fstools.mk
# Cross compiler recipes # Cross compiler recipes
include mk/prefix.mk include mk/prefix.mk
...@@ -78,16 +89,24 @@ else ...@@ -78,16 +89,24 @@ else
bash bash
endif endif
export RUST_GDB=gdb-multiarch # Necessary when debugging for another architecture than the host
GDB_KERNEL_FILE=cookbook/recipes/core/kernel/target/$(TARGET)/build/kernel.sym
gdb: FORCE gdb: FORCE
gdb cookbook/recipes/kernel/build/kernel.sym --eval-command="target remote localhost:1234" rust-gdb $(GDB_KERNEL_FILE) --eval-command="target remote :1234"
# This target allows debugging a userspace application without requiring gdbserver running inside
# the VM. Because gdb doesn't know when the userspace application is scheduled by the kernel and as
# it stops the entire VM rather than just the userspace application that the user wants to debug,
# connecting to a gdbserver running inside the VM is highly encouraged when possible. This target
# should only be used when the application to debug runs early during boot before the network stack
# has started or you need to debug the interaction between the application and the kernel.
# tl;dr: DO NOT USE THIS TARGET UNLESS YOU HAVE TO
gdb-userspace: FORCE
rust-gdb $(GDB_APP_FILE) --eval-command="add-symbol-file $(GDB_KERNEL_FILE) 0x$(shell readelf -S $(GDB_KERNEL_FILE) | grep .text | cut -c43-58)" --eval-command="target remote :1234"
# An empty target # An empty target
FORCE: FORCE:
# Gzip any binary
%.gz: %
gzip -k -f $<
# Wireshark # Wireshark
wireshark: FORCE wireshark: FORCE
wireshark $(BUILD)/network.pcap wireshark $(BUILD)/network.pcap
...@@ -2,171 +2,62 @@ ...@@ -2,171 +2,62 @@
<img alt="Redox" width="346" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/logos/redox/logo.png"> <img alt="Redox" width="346" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/logos/redox/logo.png">
</p> </p>
**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. This repository is the **Build System** for Redox OS.
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](#ecosystem) for overview of the ecosystem. Redox is under active development by a vibrant community, you can see the key links below:
The website can be found at https://www.redox-os.org. For hardware compatibility, see [HARDWARE.md](HARDWARE.md). - [The **main website** for Redox OS](https://www.redox-os.org).
- [The Redox Book](https://doc.redox-os.org/book/) and [Build Instructions](https://doc.redox-os.org/book/podman-build.html).
- [Redox Chat and Support](https://matrix.to/#/#redox-join:matrix.org).
- [Patreon](https://www.patreon.com/redox_os), [Donate](https://redox-os.org/donate/) and [Merch](https://redox-os.creator-spring.com/).
- Scroll down for a list of key Redox components and their repositories.
Please make sure you use the **latest nightly** of `rustc` before building (for more troubleshooting, see ["Help! Redox won't compile!"](#compile-help)). [Redox](https://www.redox-os.org) is an open-source operating system written in Rust, a language with focus on safety, efficiency and high performance. Redox uses a microkernel architecture, and aims to be reliable, secure, usable, correct, and free. Redox is inspired by previous operating systems, such as seL4, MINIX, Plan 9, Linux and BSD.
[![Downloads](https://img.shields.io/github/downloads/redox-os/redox/total.svg)](https://gitlab.redox-os.org/redox-os/redox/tags) Redox _is not_ just a kernel, it's a **full-featured operating system**, providing components (file system, display server, core utilities, etc.) that together make up a functional and convenient operating system. Redox uses the COSMIC desktop apps, and provides source code compatibility with many Rust, Linux and BSD programs.
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
## Contents
* [What it looks like](#screenshots)
* [Ecosystem](#ecosystem)
* [Help! Redox won't compile](#compile-help)
* [Contributing to Redox](#contributing)
* [Cloning, Building and running](#cloning-building-running)
* [Quick Setup](#quick-setup)
* [Manual Setup](#manual-setup)
* [Setup Using Podman](setup-using-podman)
* [Setup Using Docker](#setup-using-docker)
## <a name="screenshots"> What it looks like </a> [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/Senza%20titolo.jpeg"> ## More Links
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/redox running.jpeg">
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/IMG_1460.PNG">
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/Sodium_v2.PNG"> - [Book](https://doc.redox-os.org/book/)
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/Boot.png"> - [Contribute](CONTRIBUTING.md)
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/IMG_1459.PNG"> - [Hardware Compatibility](https://doc.redox-os.org/book/hardware-support.html)
- Run Redox in a [Virtual Machine](https://doc.redox-os.org/book/running-vm.html) or on [Real Hardware](https://doc.redox-os.org/book/real-hardware.html)
- [Trying Out Redox](https://doc.redox-os.org/book/trying-out-redox.html)
- [Building Redox](https://doc.redox-os.org/book/podman-build.html)
- [Build System Documentation](https://doc.redox-os.org/book/build-system-reference.html)
- [Developer FAQ](https://doc.redox-os.org/book/developer-faq.html)
- [Chat/Discussions/Help](https://doc.redox-os.org/book/chat.html)
## <a name="ecosystem"> Ecosystem </a> ## Ecosystem
The ecosystem and software Redox OS provides is listed below. Some of the key repositories on the Redox GitLab:
| Name (lexicographic order) | Maintainer | Essential Repos | Maintainer
|--------------------------------------------------------------------------------------|--------------------------- |--------------------------------------------------------------------------------------|---------------------------
| [acid (kernel integration tests)](https://gitlab.redox-os.org/redox-os/acid) | **@jackpot51** **@NilSet** | [Kernel](https://gitlab.redox-os.org/redox-os/kernel) | **@jackpot51**
| [binutils](https://gitlab.redox-os.org/redox-os/binutils) | **vacant** | [RedoxFS (default filesystem)](https://gitlab.redox-os.org/redox-os/redoxfs) | **@jackpot51**
| [cookbook](https://gitlab.redox-os.org/redox-os/cookbook) | **@jackpot51** **@ids1024** **@sajattack** | [Drivers](https://gitlab.redox-os.org/redox-os/drivers) | **@jackpot51**
| [coreutils](https://gitlab.redox-os.org/redox-os/coreutils) | **vacant** | [Orbital (display server and window manager)](https://gitlab.redox-os.org/redox-os/orbital) | **@jackpot51**
| [extrautils](https://gitlab.redox-os.org/redox-os/extrautils) | **vacant**
| [games](https://gitlab.redox-os.org/redox-os/games) | **@enrico** (AKA **@HenryTheCat**) **@fabiao**
| [Ion (shell)](https://gitlab.redox-os.org/redox-os/ion) | **@mmstick** **@stratact**
| [ipcd](https://gitlab.redox-os.org/redox-os/ipcd) | **@jD91mZM2**
| [kernel](https://gitlab.redox-os.org/redox-os/kernel) | **@jackpot51**
| [libextra](https://gitlab.redox-os.org/redox-os/libextra) | **vacant**
| [libpager](https://gitlab.redox-os.org/redox-os/libpager) | **vacant**
| [netstack](https://gitlab.redox-os.org/redox-os/netstack) | **@batonius** **@dlrobertson**
| [netutils](https://gitlab.redox-os.org/redox-os/netutils) | **@jackpot51**
| [orbclient (Orbital client)](https://gitlab.redox-os.org/redox-os/orbclient) | **@jackpot51** **@FloVanGH**
| [orbdata](https://gitlab.redox-os.org/redox-os/orbdata) | **@jackpot51**
| [orbgame (Orbital 2D game engine)](https://gitlab.redox-os.org/redox-os/orbgame) | **@FloVanGH**
| [Orbital (windowing and compositing system)](https://gitlab.redox-os.org/redox-os/orbital) | **@jackpot51**
| [orbtk (Orbital toolkit)](https://gitlab.redox-os.org/redox-os/orbtk) | **@FloVanGH**
| [orbutils (Orbital utilities)](https://gitlab.redox-os.org/redox-os/orbutils) | **@jackpot51**
| [pkgutils (current package manager)](https://gitlab.redox-os.org/redox-os/pkgutils) | **@jackpot51** | [pkgutils (current package manager)](https://gitlab.redox-os.org/redox-os/pkgutils) | **@jackpot51**
| [ralloc](https://gitlab.redox-os.org/redox-os/ralloc) | **@Tommoa** **@NilSet** | [relibc (C POSIX library written in Rust)](https://gitlab.redox-os.org/redox-os/relibc) | **@jackpot51**
| [RANSID (Rust ANSI driver)](https://gitlab.redox-os.org/redox-os/ransid) | **@jackpot51** | [netstack (network stack)](https://gitlab.redox-os.org/redox-os/netstack) | **@jackpot51**
| [redoxfs (default filesystem)](https://gitlab.redox-os.org/redox-os/redoxfs) | **@jackpot51** | [Ion (defauilt shell)](https://gitlab.redox-os.org/redox-os/ion) | **@jackpot51**
| [relibc (C Library in Rust)](https://gitlab.redox-os.org/redox-os/relibc) | **@jD91mZM2** **@sajattack** **@Tommoa** **@stratact** | [Termion (terminal library)](https://gitlab.redox-os.org/redox-os/termion) | **@jackpot51**
| [small (stack String and other collections)](https://gitlab.redox-os.org/redox-os/small) | **@Tommoa** | This repo - the root of the Build System | **@jackpot51**
| [syscall](https://gitlab.redox-os.org/redox-os/syscall) | **@jackpot51** | [cookbook (Build system for system components and programs)](https://gitlab.redox-os.org/redox-os/cookbook) | **@jackpot51** **@hatred_45**
| [Sodium (Vim-inspired text editor)](https://gitlab.redox-os.org/redox-os/sodium) | **vacant** | [Redoxer (Tool for Redox development testing)](https://gitlab.redox-os.org/redox-os/redoxer) | **@jackpot51**
| [The Redox book](https://gitlab.redox-os.org/redox-os/book) | **@hatred_45** | [The Redox Book](https://gitlab.redox-os.org/redox-os/book) | **@hatred_45**
| [userutils](https://gitlab.redox-os.org/redox-os/userutils) | **@jackpot51**
## <a name="compile-help"> Help! Redox won't compile! </a>
Sometimes things go wrong when compiling. Try the following before opening an issue:
1. Run `rustup update`
1. Run `make clean pull`.
1. Make sure you have **the latest version of Rust nightly!** ([rustup.rs](https://www.rustup.rs) is recommended for managing Rust versions. If you already have it, run `rustup`).
1. Update **GNU Make**, **NASM** and **QEMU/VirtualBox**.
1. Pull the upstream master branch (`git remote add upstream git@gitlab.redox-os.org:redox-os/redox.git; git pull upstream master`).
1. Update submodules (`git submodule update --recursive --init`).
1. Rebuild with `make rebuild`.
## <a name="contributing"> Contributing to Redox </a>
If you're interested in this project, and you'd like to help us out, [here](CONTRIBUTING.md) is a list of ways you can do just that.
## <a name="cloning-building-running"> Cloning, Building and Running </a>
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!
### <a name="quick-setup" /> Quick Setup </a>
```bash
$ 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 ## What it looks like
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. See [Redox in Action](https://www.redox-os.org/screens/) for photos and videos.
### <a name="manual-setup"> Manual Setup </a> <img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/website/-/raw/master/static/img/screenshot/orbital-visual.png">
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/website/-/raw/master/static/img/screenshot/cosmic-programs.png">
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/website/-/raw/master/static/img/screenshot/cosmic-term-screenfetch.png">
To manually clone, build and run Redox using a Unix-based host, run the following commands (with exceptions, be sure to read the comments): <img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/website/-/raw/master/static/img/screenshot/cosmic-edit-redox.png">
```bash <img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/website/-/raw/master/static/img/screenshot/image-viewer.png">
$ cd path/to/your/projects/folder/ <img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/Boot.png">
# HTTPS
$ git clone https://gitlab.redox-os.org/redox-os/redox.git --origin upstream --recursive
# SSH
$ git clone git@gitlab.redox-os.org: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 cargo-config
$ cargo install 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
```
### <a name="setup-using-podman"> Setup using Podman </a>
[Redox Book instructions]
[Redox Book instructions]: https://doc.redox-os.org/book/ch02-06-podman-build.html
### <a name="setup-using-docker"> Setup using Docker </a>
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.
#!/usr/bin/env bash #!/usr/bin/env bash
# Alternative script for the build system Makefiles
########################################################################### ###########################################################################
# # # #
# Build the system, with a specified processor type and filesystem config # # Build the system, with a specified processor type and filesystem config #
......
# Configuration to run the "acid" tests
include = ["../acid.toml"]
# The Redox build server configuration
# General settings
[general]
# Do not prompt if settings are not defined
prompt = false
# Package settings
[packages]
acid = {}
atk = {}
autoconf = {}
automake = {}
bash = {}
binutils = {}
bootloader = {}
bootstrap = {}
ca-certificates = {}
cairo = {}
cairodemo = {}
#calculator = {}
cargo = {}
cleye = {}
#cmatrix = {} # needs ncursesw now
contain = {}
coreutils = {}
cosmic-edit = {}
cosmic-icons = {}
cosmic-text = {}
cpal = {}
curl = {}
dash = {}
diffutils = {}
dosbox = {}
drivers = {}
drivers-initfs = {}
duktape = {}
eduke32 = {}
escalated = {}
exampled = {}
expat = {}
extrautils = {}
#fal
#fd = {} # ctrlc-3.1.1
#ffmpeg6 = {} # undefined references
findutils = {}
fontconfig = {}
#freeciv = {}
freedoom = {}
#freeglut = {}
freepats = {}
freetype2 = {}
#friar = {} # mio patch
fribidi = {}
#game-2048 = {} # rustc-serialize
#gawk = {} # langinfo.h
gcc13 = {}
gdbserver = {}
#gdk-pixbuf = {} # shared-mime-info
gears = {}
generaluser-gs = {}
gettext = {}
gigalomania = {}
git = {}
glib = {}
glutin = {}
gnu-binutils = {}
gnu-grep = {}
gnu-make = {}
#gstreamer = {} # conflict with thread local errno
harfbuzz = {}
#hematite = {} # needs crate patches for redox-unix
hicolor-icon-theme = {}
initfs = {}
installer = {}
installer-gui = {}
intel-one-mono = {}
ion = {}
jansson = {}
kernel = {}
lci = {}
libc-bench = {}
libffi = {}
libgmp = {}
libiconv = {}
libjpeg = {}
libogg = {}
liborbital = {}
libpng = {}
libsodium = {}
libvorbis = {}
libxml2 = {}
llvm18 = {}
lua54 = {}
#mdp = {} # ncursesw
mesa = {}
mesa-glu = {}
mgba = {}
#miniserve = {} # actix
nano = {}
nasm = {}
#ncdu = {} # fails to link with ncurses
ncurses = {}
#ncursesw = {} # mkstemp configure hang
netdb = {}
netstack = {}
netsurf = {}
netutils = {}
neverball = {}
#newlib = {} # obsolete
#newlibtest = {} # obsolete
nghttp2 = {}
openjazz = {}
openssl1 = {}
openttd = {}
openttd-opengfx = {}
openttd-openmsx = {}
openttd-opensfx = {}
orbclient = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
#orbutils-background = {} # needs recipe update
#orbutils-launcher = {} # needs recipe update
#orbutils-orblogin = {} # needs recipe update
osdemo = {}
#pango = {} # undefined references to std::__throw_system_error(int)
#pastel = {} # needs crate patches for redox-unix
patch = {}
#pathfinder = {} # servo-fontconfig
#pciids = {}
pcre = {}
perg = {}
periodictable = {}
#perl = {} # ctermid, tempnam, ttyname
pixelcannon = {}
pixman = {}
#pkgar = {} # uses virtual Cargo.toml, needs recipe update
pkg-config = {}
pkgutils = {}
pop-icon-theme = {}
#powerline = {} # dirs
prboom = {}
procedural-wallpapers-rs = {}
#python = {} # getaddrinfo
#qemu = {}
readline = {}
redoxerd = {}
redox-fatfs = {}
redoxfs = {}
redox-games = {}
redox-ssh = {}
relibc = {}
#relibc-tests = {} # madvise link error
resist = {}
#retroarch = {} # OS_TLSIndex not declared
ripgrep = {}
rodioplay = {}
rs-nes = {}
rust = {}
rust64 = {}
rust-cairo = {}
rust-cairo-demo = {}
rustual-boy = {}
schismtracker = {}
scummvm = {}
sdl-gfx = {}
#sdl-player = {} # wctype_t
sdl1 = {}
sdl1-image = {}
sdl1-mixer = {}
sdl1-ttf = {}
sdl2 = {}
sdl2-gears = {}
sdl2-image = {}
sdl2-mixer = {}
sdl2-ttf = {}
sed = {}
#servo = {} # some more crates to port
#shared-mime-info = {} # intltool-update out of date
shellharden = {}
shellstorm = {}
smith = {}
sodium = {}
sopwith = {}
#ssh = {}
strace = {}
syobonaction = {}
terminfo = {}
#termplay = {} # backtrace cannot find link.h
timidity = {}
ttf-hack = {}
userutils = {}
uutils = {}
vice = {}
vim = {}
vttest = {}
vvvvvv = {}
#webrender = {} # unwind
#wesnoth = {}
#winit = {} # tzset
xz = {}
zlib = {}
# Configuration for demonstration
include = ["desktop.toml"]
# Minimal desktop configuration
include = ["../desktop-minimal.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
# filesystem_size = 1024
# Package settings
[packages]
# example = {}
\ No newline at end of file
# Default desktop configuration # Default build system configuration
include = ["../minimal.toml"]
# General settings # General settings
[general] [general]
# Filesystem size in MiB # Filesystem size in MiB
filesystem_size = 256 filesystem_size = 256
# Do not prompt if settings are not defined
prompt = false
# Package settings # Package settings
[packages] [packages]
audiod = {} cosmic-edit = {}
bootloader = {} cosmic-icons = {}
bootstrap = {} cosmic-files = {}
ca-certificates = {} cosmic-term = {}
contain = {}
coreutils = {}
dash = {}
diffutils = {}
#drivers = {} # more porting work
#escalated = {} # porting
extrautils = {}
findutils = {}
initfs = {}
#installer = {} # failure to build ring
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
#netsurf = {} # lots of porting issues
netutils = {}
orbdata = {} orbdata = {}
orbital = {} orbital = {}
orbterm = {}
orbutils = {} orbutils = {}
#pkgutils = {} # failure to build ring pop-icon-theme = {}
ptyd = {} shared-mime-info = {}
redoxfs = {}
relibc = {}
resist = {}
smith = {}
userutils = {}
uutils = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]] [[files]]
path = "/etc/init.d/00_base" path = "/usr/lib/init.d/20_orbital"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """ data = """
audiod audiod
orbital display:3/activate orblogin launcher export VT 3
""" orbital orblogin launcher
unset VT
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
""" """
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
# Configuration for Jeremy Soller
include = ["desktop.toml"]
# Minimal network configuration
include = ["../minimal-net.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
# filesystem_size = 1024
# Package settings
[packages]
# example = {}
\ No newline at end of file
# Minimal configuration
include = ["../minimal.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
# filesystem_size = 1024
# Package settings
[packages]
# example = {}
\ No newline at end of file
# Minimal configuration
include = ["../../minimal.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# EFI partition size in MiB
efi_partition_size = 128
# Configuration to run the "resist" tests
include = ["../resist.toml"]
# Server configuration
include = ["../server.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
# filesystem_size = 1024
# Package settings
[packages]
# example = {}
\ No newline at end of file
# Configuration to run the "acid" tests
include = ["base.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# Package settings
[packages]
acid = {}
coreutils = {}
ion = {}
[[files]]
path = "/usr/lib/init.d/10_acid"
data = """
export RUST_BACKTRACE full
acid
acid create_test
acid switch
acid tls
acid thread
shutdown
"""