Skip to content
Snippets Groups Projects
Commit 6338304c authored by Jeremy Soller's avatar Jeremy Soller
Browse files

Merge branch 'update-explanation' into 'master'

Improve the FAQ

See merge request !393
parents 4205219a 285fb199
No related branches found
No related tags found
1 merge request!393Improve the FAQ
Pipeline #15097 failed
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
title = "FAQ" title = "FAQ"
+++ +++
This page covers questions/answers for newcomers and end-users. This page covers questions and answers for newcomers and end-users.
- [What is Redox?](#what-is-redox) - [What is Redox?](#what-is-redox)
- [What does Redox mean?](#what-does-redox-mean) - [What does Redox mean?](#what-does-redox-mean)
...@@ -12,7 +12,7 @@ This page covers questions/answers for newcomers and end-users. ...@@ -12,7 +12,7 @@ This page covers questions/answers for newcomers and end-users.
- [Comparison with other operating systems](#comparison-with-other-operating-systems) - [Comparison with other operating systems](#comparison-with-other-operating-systems)
- [What is the purpose of Redox?](#what-is-the-purpose-of-redox) - [What is the purpose of Redox?](#what-is-the-purpose-of-redox)
- [What I can do with Redox?](#what-i-can-do-with-redox) - [What I can do with Redox?](#what-i-can-do-with-redox)
- [What is a Unix-like OS?](#what-is-a-unix-like-os) - [What is an Unix-like OS?](#what-is-an-unix-like-os)
- [How Redox is inspired by other systems?](#how-redox-is-inspired-by-other-systems) - [How Redox is inspired by other systems?](#how-redox-is-inspired-by-other-systems)
- [What is a microkernel?](#what-is-a-microkernel) - [What is a microkernel?](#what-is-a-microkernel)
- [What programs can Redox run?](#what-programs-can-redox-run) - [What programs can Redox run?](#what-programs-can-redox-run)
...@@ -53,7 +53,7 @@ It sounds like Minix and Linux too. ...@@ -53,7 +53,7 @@ It sounds like Minix and Linux too.
- **True modularity** - **True modularity**
You can modify/change many system components without a system restart, similar to but safer than [livepatching](https://en.wikipedia.org/wiki/Kpatch). You can modify/change many system components without a system restart, similar to but safer than some kernel modules and [livepatching](https://en.wikipedia.org/wiki/Kpatch).
- **Bug isolation** - **Bug isolation**
...@@ -63,17 +63,19 @@ Most system components run in user-space on a microkernel system. Because of thi ...@@ -63,17 +63,19 @@ Most system components run in user-space on a microkernel system. Because of thi
A mature microkernel changes very little (except for bug fixes), so you won't need to restart your system very often to update it. A mature microkernel changes very little (except for bug fixes), so you won't need to restart your system very often to update it.
Since most of the system components are in userspace, they can be replaced on-the-fly, reducing downtime for server administrators. Since most of the system components are in userspace, they can be replaced on-the-fly, reducing downtime of servers a lot.
- **Easy to develop and debug** - **Easy to develop and debug**
Most of the system components run in userspace, simplifying testing/debugging. Most of the system components run in userspace, simplifying the testing and debugging.
You can read more about the above benefits on [this](https://doc.redox-os.org/book/ch04-01-microkernels.html) page.
### Rust benefits ### Rust benefits
- **Less likely to have bugs** - **Less likely to have bugs**
The restrictive syntax and compiler suggestions reduce the probability of bugs a lot. The restrictive syntax and compiler requirements to build the code reduce the probability of bugs a lot.
- **Less vulnerable to data corruption** - **Less vulnerable to data corruption**
...@@ -81,7 +83,7 @@ The Rust compiler helps the programmer to avoid memory errors and race condition ...@@ -81,7 +83,7 @@ The Rust compiler helps the programmer to avoid memory errors and race condition
- **No need for C/C++ exploit mitigations** - **No need for C/C++ exploit mitigations**
The microkernel design written in Rust protects against memory defects that one might see in C/C++ programs. The microkernel design written in Rust protects against memory defects that one might see in software written in C/C++.
By isolating the system components from the kernel, the [attack surface](https://en.wikipedia.org/wiki/Attack_surface) is very limited. By isolating the system components from the kernel, the [attack surface](https://en.wikipedia.org/wiki/Attack_surface) is very limited.
...@@ -95,11 +97,13 @@ Rust's safe and fast language design, combined with the small kernel code size, ...@@ -95,11 +97,13 @@ Rust's safe and fast language design, combined with the small kernel code size,
The C/C++ support for thread-safety is quite fragile. As such, it is very easy to write a program that looks safe to run across multiple threads, but which introduces subtle bugs or security holes. If one thread accesses a piece of state at the same time that another thread is changing it, the whole program can exhibit some truly confusing and bizarre bugs. The C/C++ support for thread-safety is quite fragile. As such, it is very easy to write a program that looks safe to run across multiple threads, but which introduces subtle bugs or security holes. If one thread accesses a piece of state at the same time that another thread is changing it, the whole program can exhibit some truly confusing and bizarre bugs.
You can see [this](https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use) example of a serious class of security bugs that thread-safety fixes.
In Rust, this kind of bug is easy to avoid: the same type system that keeps us from writing memory unsafety prevents us from writing dangerous concurrent access patterns In Rust, this kind of bug is easy to avoid: the same type system that keeps us from writing memory unsafety prevents us from writing dangerous concurrent access patterns
- **Rust-written Drivers** - **Rust-written Drivers**
Drivers written in Rust are likely to have fewer bugs and are therefore more secure. Drivers written in Rust are likely to have fewer bugs and are therefore more stable and secure.
- **ZFS-inspired filesystem** - **ZFS-inspired filesystem**
...@@ -109,11 +113,14 @@ Expect high performance and data safety (copy-on-write, data integrity, volumes, ...@@ -109,11 +113,14 @@ Expect high performance and data safety (copy-on-write, data integrity, volumes,
### Comparison with other operating systems ### Comparison with other operating systems
You can see how Redox is compared to Linux, FreeBSD and Plan 9 on [this](https://doc.redox-os.org/book/ch04-11-features.html) page. You can see how Redox is compared to Linux, FreeBSD and Plan 9 on these pages:
- [Redox OS Features](https://doc.redox-os.org/book/ch04-11-features.html)
- [Comparing Redox to Other OSes](https://doc.redox-os.org/book/ch01-05-how-redox-compares.html)
## What is the purpose of Redox? ## What is the purpose of Redox?
The main goal of Redox is to be a general-purpose OS, while maintaining security, reliability and correctness. The main goal of Redox is to be a general-purpose OS, while maintaining security, stability and correctness.
Redox aims to be an alternative to existing Unix systems (Linux/BSD), with the ability to run most Unix programs with only recompilation or minimal modifications. Redox aims to be an alternative to existing Unix systems (Linux/BSD), with the ability to run most Unix programs with only recompilation or minimal modifications.
...@@ -121,13 +128,13 @@ Redox aims to be an alternative to existing Unix systems (Linux/BSD), with the a ...@@ -121,13 +128,13 @@ Redox aims to be an alternative to existing Unix systems (Linux/BSD), with the a
## What I can do with Redox? ## What I can do with Redox?
As a general-purpose operating system, you will be able to do almost any task on most devices with high performance/security. As a general-purpose operating system, you will be able to do almost any task on most devices with high performance and security.
Redox is still under development, so our list of supported applications is currently limited, but growing. Redox is still under development, so our list of supported applications is currently limited, but growing.
- [Use Cases](https://doc.redox-os.org/book/ch01-04-redox-use-cases.html) - [Use Cases](https://doc.redox-os.org/book/ch01-04-redox-use-cases.html)
## What is a Unix-like OS? ## What is an Unix-like OS?
Any OS compatible with the [Single Unix Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) and [POSIX](https://en.wikipedia.org/wiki/POSIX). You can expect a [shell](https://en.wikipedia.org/wiki/Unix_shell), the "[Everything is a File](https://en.wikipedia.org/wiki/Everything_is_a_file)" concept, multitasking and multiuser support. Any OS compatible with the [Single Unix Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) and [POSIX](https://en.wikipedia.org/wiki/POSIX). You can expect a [shell](https://en.wikipedia.org/wiki/Unix_shell), the "[Everything is a File](https://en.wikipedia.org/wiki/Everything_is_a_file)" concept, multitasking and multiuser support.
...@@ -189,6 +196,7 @@ Some important software that Redox supports: ...@@ -189,6 +196,7 @@ Some important software that Redox supports:
- GNU Bash - GNU Bash
- FFMPEG - FFMPEG
- Git - Git
- RustPython
- SDL2 - SDL2
- OpenSSL - OpenSSL
- Mesa3D - Mesa3D
...@@ -205,17 +213,19 @@ Redox has a package manager similar to `apt` (Debian) and `pkg` (FreeBSD), you c ...@@ -205,17 +213,19 @@ Redox has a package manager similar to `apt` (Debian) and `pkg` (FreeBSD), you c
Redox has some variants for each task, take a look at them below: Redox has some variants for each task, take a look at them below:
- `server-minimal` - The most minimal variant with a basic system. Aimed at embedded devices, very old computers and developers. - `minimal` - The most minimal variant with a basic system without network support. Aimed for embedded devices, very old computers, testers and developers.
- `minimal-net` - The most minimal variant with a basic system and network support. Aimed for embedded devices, very old computers, testers and developers.
- `desktop-minimal` - The most minimal variant with the Orbital desktop environment included. Aimed at embedded devices, very old computers and developers. - `desktop-minimal` - The most minimal variant with the Orbital desktop environment included. Aimed for embedded devices, very old computers, testers and developers.
- `server` - The server variant with a complete system and network tools. Aimed at server administrators, embedded devices, low-end computers and developers. - `server` - The server variant with a complete system and network tools. Aimed for servers, embedded devices, low-end computers, testers and developers.
- `desktop` - The standard variant with a complete system, Orbital desktop environment and useful tools. Aimed at daily usage, producers, developers and gamers. - `desktop` - The standard variant with a complete system, Orbital desktop environment and useful tools. Aimed for end-users, producers, gamers, testers and developers.
- `dev` - The development variant with a complete system and development tools. Aimed at developers. - `dev` - The development variant with a complete system and development tools. Aimed for developers and testers.
- `demo` - The demo variant with a complete system, tools, players and games. Aimed at testers, gamers and developers. - `demo` - The demo variant with a complete system, tools, players and games. Aimed for end-users, gamers, testers and developers.
## Which devices does Redox support? ## Which devices does Redox support?
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
title = "FAQ" title = "FAQ"
+++ +++
Essa página contém perguntas/respostas para iniciantes e usuários comuns. Essa página contém perguntas e respostas para iniciantes e usuários comuns.
- [O que é o Redox?](#o-que-%C3%A9-o-redox) - [O que é o Redox?](#o-que-%C3%A9-o-redox)
- [O que Redox significa?](#o-que-redox-significa) - [O que Redox significa?](#o-que-redox-significa)
...@@ -53,7 +53,7 @@ Ele soa similar com Minix e Linux também. ...@@ -53,7 +53,7 @@ Ele soa similar com Minix e Linux também.
- **Modularidade real** - **Modularidade real**
Você pode modificar/trocar a maioria dos componentes do sistema sem reiniciar o sistema, similar ao [livepatching](https://en.wikipedia.org/wiki/Kpatch) porém mais seguro). Você pode modificar/trocar a maioria dos componentes do sistema sem reiniciar o sistema, similar a alguns módulos de kernel e [livepatching](https://en.wikipedia.org/wiki/Kpatch) porém mais seguro.
- **Isolamento de bugs** - **Isolamento de bugs**
...@@ -61,21 +61,23 @@ A maioria dos componentes do sistema executam no espaço do usuário em um siste ...@@ -61,21 +61,23 @@ A maioria dos componentes do sistema executam no espaço do usuário em um siste
- **Design de não-reinicialização** - **Design de não-reinicialização**
O kernel é pequeno e muda muito pouco (correção de bugs), portanto você não precisa reiniciar seu sistema com frequência para atualizar, já que a maioria dos serviços do sistema estão no espaço do usuário, eles podem ser trocados/atualizados durante a execução (reduzindo o tempo offline de servidores). O kernel é pequeno e muda muito pouco (correção de bugs), portanto você não precisa reiniciar seu sistema com frequência para atualizar, já que a maioria dos serviços do sistema estão no espaço do usuário, eles podem ser trocados/atualizados durante a execução (reduzindo muito o tempo offline de servidores).
- **Fácil de desenvolver e depurar** - **Fácil de desenvolver e depurar**
A maioria dos componentes do sistema estão no espaço do usuário, simplificando a depuração. A maioria dos componentes do sistema estão no espaço do usuário, simplificando os testes e depuração.
Se você quiser ler mais sobre os benefícios citados acima, leia [esta](https://doc.redox-os.org/book/ch04-01-microkernels.html) página.
### Benefícios da Rust ### Benefícios da Rust
- **Menos suscetível a bugs** - **Menos suscetível a bugs**
A síntaxe restritiva e as sugestões do compilador reduz muito a probabilidade de bugs. A síntaxe restritiva e os requisitos do compilador para compilar o código reduzem muito a probabilidade de bugs.
- **Menos vulnerável a corrupção de dados** - **Menos vulnerável a corrupção de dados**
O compilador da Rust ajuda o programador a evitar erros de memória e bugs difíceis de examinar, o que reduz a probabilidade dos bugs de corrupção de dados. O compilador da Rust ajuda o programador a evitar erros de memória e condições de corrida, o que reduz a probabilidade dos bugs de corrupção de dados.
- **Sem necessidade para mitigações de exploit das linguagens C e C++** - **Sem necessidade para mitigações de exploit das linguagens C e C++**
...@@ -93,12 +95,14 @@ Como o kernel é pequeno, ele usa menos memória para fazer suas funções e o c ...@@ -93,12 +95,14 @@ Como o kernel é pequeno, ele usa menos memória para fazer suas funções e o c
O design seguro e veloz da linguagem Rust, combinado com a pequena quantidade de código no kernel, ajudam a garantir um núcleo fácil, confiável e veloz de manter. O design seguro e veloz da linguagem Rust, combinado com a pequena quantidade de código no kernel, ajudam a garantir um núcleo fácil, confiável e veloz de manter.
- **Segurança de Concurrência** - **Segurança de Concorrência**
O suporte para segurança de concurrência nas linguagens de programmação C/C++ é frágil e muito fácil de escrever um programa que parece seguro para executar em vários threads, mas introduz bugs útis e buracos de segurança. O suporte para segurança de concorrência nas linguagens de programmação C/C++ é frágil e muito fácil de escrever um programa que parece seguro para executar em vários threads, mas introduz bugs útis e buracos de segurança.
Se um thread acessa um pedaço do estado ao mesmo tempo que outro thread está modificando, o programa todo pode exibir bugs confusos e bizarros. Se um thread acessa um pedaço do estado ao mesmo tempo que outro thread está modificando, o programa todo pode exibir bugs confusos e bizarros.
Você pode ver [este](https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use) exemplo de uma categoria séria de bugs de segurança que a segurança de concorrência corrige.
Mas na Rust esse tipo de bug é fácil de evitar, o mesmo sistema de escrita que nos previne de escrever de forma insegura também nos previne de escrever padrões perigosos de acesso simultâneo. Mas na Rust esse tipo de bug é fácil de evitar, o mesmo sistema de escrita que nos previne de escrever de forma insegura também nos previne de escrever padrões perigosos de acesso simultâneo.
- **Drivers escritos em Rust** - **Drivers escritos em Rust**
...@@ -107,7 +111,10 @@ Drivers escritos em Rust possuem incentivos para ter menos bugs e portanto melho ...@@ -107,7 +111,10 @@ Drivers escritos em Rust possuem incentivos para ter menos bugs e portanto melho
### Comparação com outros sistemas operacionais ### Comparação com outros sistemas operacionais
Você pode ver como o Redox é em comparação com o Linux, FreeBSD e Plan 9 [nesta](https://doc.redox-os.org/book/ch04-11-features.html) página. Você pode ver como o Redox é em comparação com o Linux, FreeBSD e Plan 9 nessas páginas:
- [Funções do Redox OS](https://doc.redox-os.org/book/ch04-11-features.html)
- [Comparando o Redox Com Outros Sistemas Operacionais](https://doc.redox-os.org/book/ch01-05-how-redox-compares.html)
## Qual o propósito do Redox? ## Qual o propósito do Redox?
...@@ -119,7 +126,7 @@ O Redox pretende ser uma alternativa aos sistemas Unix (Linux/BSD) existentes ta ...@@ -119,7 +126,7 @@ O Redox pretende ser uma alternativa aos sistemas Unix (Linux/BSD) existentes ta
## O que posso fazer com o Redox? ## O que posso fazer com o Redox?
Como um sistema de propósito geral, você é capaz de realizar praticamente qualquer tarefa na maioria dos dispositivos com alto desempenho/segurança. Como um sistema de propósito geral, você é capaz de realizar praticamente qualquer tarefa na maioria dos dispositivos com alto desempenho e segurança.
O Redox está em desenvolvimento, portanto nossa lista de aplicações suportada é limitada atualmente, mas crescente. O Redox está em desenvolvimento, portanto nossa lista de aplicações suportada é limitada atualmente, mas crescente.
...@@ -187,6 +194,7 @@ Softwares importantes que o Redox suporta: ...@@ -187,6 +194,7 @@ Softwares importantes que o Redox suporta:
- GNU Bash - GNU Bash
- FFMPEG - FFMPEG
- Git - Git
- RustPython
- SDL2 - SDL2
- OpenSSL - OpenSSL
- Mesa3D - Mesa3D
...@@ -203,17 +211,19 @@ O Redox tem um gerenciador de pacotes similar ao `apt` (Debian) e `pkg` (FreeBSD ...@@ -203,17 +211,19 @@ O Redox tem um gerenciador de pacotes similar ao `apt` (Debian) e `pkg` (FreeBSD
O Redox possuí variantes para cada tarefa, leia sobre elas abaixo: O Redox possuí variantes para cada tarefa, leia sobre elas abaixo:
- `server-minimal` - A variante mais enxuta com um sistema básico, destinada a dispositivos embarcados, computadores muito antigos e programadores. - `minimal` - A variante mais simples com um sistema básico sem suporte a Internet, destinada a dispositivos embarcados, computadores muito antigos e programadores.
- `minimal-net` - A variante mais enxuta com um sistema básico e suporte a Internet, destinada a dispositivos embarcados, computadores muito antigos e programadores.
- `desktop-minimal` - A variante mais enxuta com o ambiente de desktop Orbital incluído, destinado para dispositivos embarcados, computadores muito antigos e programadores. - `desktop-minimal` - A variante mais enxuta com o ambiente de desktop Orbital incluído, destinada para dispositivos embarcados, computadores muito antigos e programadores.
- `server` - A variante para servidores, com um sistema completo e ferramentas de rede, destinado para admnistradores de rede, dispositivos embarcados, computadores fracos e programadores. - `server` - A variante para servidores, com um sistema completo e ferramentas de rede, destinada a servidores, dispositivos embarcados, computadores fracos e programadores.
- `desktop` - A variante padrão com um sistema completo, o ambiente de desktop Orbital e ferramentas úteis, destinado para o uso diário, produtores, programadores e jogadores. - `desktop` - A variante padrão com um sistema completo, o ambiente de desktop Orbital e ferramentas úteis, destinada a usuários comuns, produtores, jogadores e programadores.
- `dev` - A variante para desenvolvimento com um sistema completo e ferramentas de programação, destinado para programadores. - `dev` - A variante para desenvolvimento com um sistema completo e ferramentas de programação, destinada a programadores.
- `demo` - A variante para demonstração com um sistema completo, ferramentas, reprodutores e jogos, destinado para testadores, jogadores e programadores. - `demo` - A variante para demonstração com um sistema completo, ferramentas, reprodutores e jogos, destinado a usuários comuns, jogadores e programadores.
## Quais dispositivos o Redox suporta? ## Quais dispositivos o Redox suporta?
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment