FAQ
Essa página contém perguntas e respostas para iniciantes e usuários comuns.
O que é o Redox?
Redox é um sistema operacional baseado em microkernel, completo, funcional, para uso geral criado em 2015, com foco em segurança, liberdade, confiabilidade, correção e pragmatismo.
Onde for possível, os componentes do sistema serão escritos em Rust e executam no espaço do usuário.
O Redox busca ser uma alternativa completa para o Linux e BSD.
Estado atual
O Redox está em qualidade alpha/beta, pois implementamos novas funções enquanto corrigimos bugs.
Portanto, ele não está pronto para uso diário, sinta-se livre para testar o sistema até sua maturidade e não armazene arquivos sensíveis sem o devido backup.
A versão 1.0 será lançada quando todas as APIs do sistema forem consideradas estáveis.
O que Redox significa?
Redox é a reação química (redução-oxidação) que cria a ferrugem, sendo o Redox um sistema operacional escrito em Rust, faz sentido.
Ele soa similar com Minix e Linux também.
O que é um microkernel?
Um microkernel é um modelo para núcleo de sistema operacional com uma pequena quantidade de código executando no maior privilégio do processador, este modelo melhora a estabilidade e segurança, com um pequeno custo de desempenho.
Você pode ler mais sobre isso na página Microkernels.
Quais funções o Redox possui?
Benefícios do Microkernel
- Modularidade real
Você pode modificar/trocar a maioria dos componentes do sistema sem reiniciar o sistema, similar a alguns módulos de kernel e livepatching porém mais seguro.
- Isolamento de bugs
A maioria dos componentes do sistema executam no espaço do usuário em um sistema com microkernel, um bug em componentes do sistema fora do kernel não pode quebrar o kernel.
- 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 muito o tempo offline de servidores).
- Fácil de desenvolver e depurar
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 a página Microkernels.
Benefícios da Rust
- Menos suscetível a 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
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++
O design de um microkernel escrito em Rust protege contra as falhas de memória das linguagens C e C++, isolando o sistema do kernel a superfície de ataque é muito limitada.
- Melhorias de segurança/confiabilidade sem impacto significante no desempenho
Como o kernel é pequeno, ele usa menos memória para fazer suas funções e o código limitado no kernel torna ele quase livre de bugs (objetivo do príncipio KISS).
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 Concorrência
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.
Você pode ver este exemplo na Wikipedia 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.
- Drivers escritos em Rust
Drivers escritos em Rust possuem incentivos para ter menos bugs e portanto melhor segurança.
Outros Benefícios
- Sistema de arquivos inspirado no ZFS
O Redox utiliza o RedoxFS como sistema de arquivos padrão, ele suporta funções parecidas com as do ZFS com uma implementação escrita em Rust.
Espere alto desempenho e segurança dos dados (copy-on-write, integridade de arquivos, volumes, snapshots, endurecido contra a perda de arquivos).
Comparação com outros sistemas operacionais
Você pode ver como o Redox é em comparação com o Linux, FreeBSD e Plan 9 nessas páginas:
Qual o propósito do Redox?
O objetivo principal do Redox é ser um sistema de propósito geral com foco em segurança, confiabilidade e correção.
O Redox pretende ser uma alternativa aos sistemas Unix (Linux/BSD) existentes também, podendo executar programas Unix com apenas compilação ou modificações mínimas.
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 e segurança.
O Redox está em desenvolvimento, portanto nossa lista de aplicações suportada é limitada atualmente, mas crescente.
O que é um sistema Unix-like?
Qualquer sistema compátivel com a Especificação Única do Unix e POSIX, portanto com uma Shell, o conceito de “Tudo é um arquivo”, multitarefa e multiusuário.
Unix foi um sistema operacional de multitarefa muito influente e impactou as decisões de design em diversos sistemas modernos.
Como o Redox foi influenciado por outros sistemas?
Plan 9
Este sistema da Bell Labs trouxe o conceito de “Tudo é um arquivo” ao seu maior nível, fazendo toda a comunicação do sistema pelo sistemas de arquivos.
Você apenas precisa montar o software em algum local para obter a função desejada, qualquer software pode funcionar dessa forma.
Minix
O sistema Unix-like com microkernel mais influente, ele possuí funções avançadas tais como modularidade do sistema, resistência a quebra do kernel, reincarnação de driver, proteção contra drivers ruins e interfaces seguras para a comunicação dos processos.
O Redox foi muito influenciado pelo Minix, ele tem funções e arquitetura similar escrita em Rust.
seL4
O mais veloz e simples microkernel do mundo, focado em desempenho e simplicidade.
O Redox segue o mesmo princípio, tentando deixar o espaço do kernel o menor possível (movendo componentes para o espaço do usuário e reduzindo a quantidade de chamadas do sistema, passando a complexidade para o espaço do usuário) e mantendo o desempenho geral bom (reduzindo o custo da troca de contexto).
BSD
Essa família de sistemas Unix implementou diversas melhorias para os sistemas Unix, as variantes de código-aberto dos sistemas BSD adicionaram muitas melhorias no sistema original (assim como o Linux fez).
-
FreeBSD - O Capsicum (um sistema baseado em capacidades) e jails (uma tecnologia de isolamento)) influenciaram a implementação de namespaces do Redox.
-
OpenBSD - O isolamento de chamadas do sistema, sistema de arquivos, servidor gráfico, servidor de áudio e outros influenciaram a segurança do Redox.
Linux
O kernel monolítico mais avançado e o maior projeto de código-aberto do mundo, ele trouxe muitas melhorias e otimizações para o mundo Unix-like.
O Redox tenta implementar as melhorias de desempenho do Linux em um design de microkernel.
Quais programas o Redox executa?
O Redox é desenhado para ser compátivel-em-código com a maioria dos sistemas Unix, Linux e programas POSIX, necessitando apenas de compilação.
Atualmente, a maioria das aplicações com interface gráfica requer um port, já que não suportamos X11 ou Wayland ainda.
Softwares importantes que o Redox suporta:
- GNU Bash
- FFMPEG
- Git
- RustPython
- SDL2
- OpenSSL
- Mesa3D
- GCC
- LLVM
Você pode ver todos os componentes do Redox e programas portados na lista do servidor de compilação
Como instalar programs no Redox?
O Redox tem um gerenciador de pacotes similar ao apt
(Debian) e pkg
(FreeBSD), você pode aprender a como utiliza-lo na página Downloading packages with pkg.
Quais são as variantes do Redox?
O Redox possuí variantes para um grupo de tarefas, leia sobre elas abaixo:
-
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, destinada para dispositivos embarcados, computadores muito antigos 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, destinada a usuários comuns, produtores, jogadores e 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 a usuários comuns, jogadores e programadores.
Quais dispositivos o Redox suporta?
Há bilhões de dispositivos com centenas de modelos/arquiteturas no mundo, nós tentamos escrever drivers para os dispositivos mais utilizados para ajudar mais pessoas, alguns drivers são específicos para um dispositivo e outros são específicos de arquitetura.
Leia o HARDWARE.md para ver todos os computadores testados.
CPU
- Intel - 64-bit (x86_64) e 32-bit (i686) a partir do Pentium II e após com limitações.
- AMD - 64-bit (AMD64) e 32-bit.
- ARM - 64-bit (Aarch64) com limitações.
Interfaces do Hardware
- ACPI
- PCI
(USB em breve)
Vídeo
- VGA - (BIOS)
- GOP (UEFI)
- LLVMpipe (Emulação da OpenGL na CPU)
(Intel/AMD e outros no futuro)
Som
- Chipsets Intel
- Chipsets Realtek
- Alto-falante de PC
(Sound Blaster em breve)
Armazenamento
- IDE (PATA)
- SATA (AHCI)
- NVMe
(USB em breve)
Periféricos
- Teclados, mouse e touchpad PS/2
- Teclados, mouse e touchpad USB
Internet
- Intel Gigabit ethernet
- Intel 10 Gigabit ethernet
- Realtek ethernet
(Wi-Fi e Atheros ethernet em breve)
Tenho um computador fraco, o Redox irá funcionar?
Um processador de computador é a máquina mais complexa do mundo, até os mais antigos são poderosos para a maioria das tarefas, isso depende da tarefa.
O principal problema com os computadores antigos é a quantidade de memória RAM disponível (eles foram vendidos em uma época onde pentes de memória RAM eram caros) e a falta das extensões SSE/AVX (os programas usam elas para acelerar os algoritmos), portanto alguns programas modernos podem não funcionar ou precisam de muita memória RAM para tarefas complexas.
O Redox irá funcionar normalmente (se a arquitetura do processador for suportada pelo sistema) porém você terá que testar cada programa.
Quais máquinas virtuais o Redox possui integração?
- QEMU
- VirtualBox
No futuro o microkernel poderia agir como um supervisor, similar ao Xen.
Um supervisor é um software que executa múltiplas instâncias isoladas de sistemas operacionais simultaneamente.
Como compilar o Redox?
Leia as seguintes páginas:
Como diagnosticar seu Redox em caso de erros
Leia a página Troubleshooting ou nos explique no Chat.
Como reportar bugs para o Redox?
Leia a página Creating Proper Bug Reports e verifique as Issues no GitLab para ver se seu problema foi reportado por alguém.
Como contribuir para o Redox?
Você pode contribuir para o Redox de diversas formas, veja elas em CONTRIBUTING.
Eu tenho um pergunta/problema para a equipe do Redox
- Leia a Documentação para saber mais sobre partes internas do Redox.
- Leia todo o livro do Redox para ver se responde sua pergunta ou conserta seu problema.
- Se a documentação e o livro não resolver, faça sua pergunta ou diga seu problema no Chat.