Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
qrv — Sistema Operacional QRV | Kitploit
Ferramentas/GitHubGitHub/r-tty/qrv
Segurança de Sistemas EmbarcadosSegurança de HardwarePapers e PesquisaAprendizado e EducaçãoRecursos Curados
GitHubr-tty/qrv

qrv

Sistema Operacional QRV

Ver Repositório
2414há 4 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

QRV — um sistema operacional baseado no QNX Neutrino, reimaginado para RISC-V de 64 bits

QRV é uma adaptação e reimplementação completa do sistema operacional QNX Neutrino 6.4 para hardware moderno de 64 bits, com RISC-V (rv64g) como arquitetura primária e x86-64 como alvo secundário. O projeto começou na véspera de Natal de 2020. O nome QRV evita deliberadamente qualquer associação com a marca QNX.

QRV é um sistema operacional completo, não apenas um kernel. O microkernel é seu coração — mas a maior parte do trabalho foi investida em tudo que o cerca. O mais notável é o taskman, o gerenciador de processos / memória / caminhos em modo de usuário (o procnto do QNX), que foi profundamente reformulado e retirado do kernel para o espaço do usuário; junto com ele, a biblioteca C, os drivers de dispositivo, o sistema de arquivos, o carregador dinâmico e os servidores do sistema foram todos portados, adaptados para 64 bits e, em muitos lugares, substancialmente reescritos. O microkernel é pequeno por design; o sistema operacional ao redor dele é onde a maior parte do QRV reside.

Isto não é um fork que meramente compila código antigo em um novo compilador. É um port cuidadoso, módulo por módulo, para um modelo verdadeiro LP64, com a fronteira proprietária do procnto desmontada, a maquinaria IFS/startup substituída e — a partir das versões mais recentes — a trava Big Kernel Lock do kernel completamente removida e o gerenciador de processos/memória/caminhos movido para fora do kernel para um servidor em modo de usuário.

Este README descreve o QRV v0.43.

O blog de desenvolvimento, com a história completa do port, está em https://r-tty.blogspot.com. Uma narrativa em formato de livro, The QRV Porting Story, reside na árvore de fontes em doc/tex/PortingStory/.

O QRV foi desenvolvido em estreita colaboração com o Claude Code, a ferramenta de codificação agente da Anthropic — grande parte do port, da depuração SMP e da documentação (incluindo este README) foi realizada como um esforço de programação em parceria humano–IA, trabalhando junto com o autor.


Conteúdo

  1. O que é QRV
  2. Licenciamento
  3. Obtendo as fontes: obtain_proj.sh e a árvore os/
  4. Arquitetura do sistema
  5. Taskman e a chamada de sistema privilegiada TM_PRIV
  6. A trava Big Kernel Lock — e sua remoção
  7. Armazenamento: devb-nvme e fs-qrv
  8. Espaço do usuário
  9. Compilando e executando
  10. Executando em hardware real
  11. Considerações finais: por que um clone livre é importante

1. O que é QRV

QNX é um sistema operacional de tempo real microkernel cuja ideia definidora é a passagem síncrona de mensagens. No QNX, o próprio kernel é minúsculo — ele sabe como agendar threads, passar mensagens, entregar sinais, lidar com temporizadores e interrupções, e pouco mais. Tudo que um SO monolítico colocaria dentro do kernel — o gerenciador de processos, o gerenciador de memória, o sistema de arquivos, os drivers de dispositivo, a pilha de rede — é executado em processos comuns de usuário chamados gerenciadores de recursos, e eles se comunicam entre si e com seus clientes através da mesma primitiva IPC enviar / receber / responder.

Essa arquitetura é o que torna o QNX elegante, e é exatamente o que o QRV preserva. Um programa que deseja abrir um arquivo envia uma mensagem; o servidor de sistema de arquivos a recebe, realiza o trabalho e responde. O kernel apenas intermedia o encontro. O resultado é um sistema onde um driver pode falhar e ser reiniciado sem derrubar o kernel, onde a base de computação confiável é medida em dezenas de kilobytes, e onde a fronteira entre "kernel" e "aplicação" é uma mensagem, não uma muralha de privilégios cheia de chamadas de sistema.

O QRV pega as fontes comunitárias do QNX Neutrino 6.4 da era 2009 e traz esse design adiante:

  • Limpo para 64 bits (LP64). Todo ponteiro e tipo de tamanho é de 64 bits; o port caça e corrige os truncamentos de int/uint32_t/pid_t em ponteiros que o código de 32 bits está repleto.
  • RISC-V primeiro. O alvo primário é qemu-system-riscv64 (a máquina virt) e a placa de desenvolvimento SiFive Unmatched (FU740). x86-64 é mantida em compilação como verificação de portabilidade.
  • Sem fronteiras proprietárias. Não há IFS e nem mkifs (QRV usa o formato padrão CPIO); não há separação startup/kernel (startup é vinculado diretamente com o kernel); não há callouts e nem mini-drivers.
  • Uma compilação moderna. Uma configuração Kconfig estilo Linux, um link incremental do kernel (módulos são adicionados e testados um de cada vez, não jogados no linker como um monólito 32→64), e uma cadeia de ferramentas de cross-compilação (riscv64-linux-gnu-gcc).
  • Um vocabulário renomeado, sem marcas registradas. procnto é taskman (o Gerenciador de Tarefas) em toda parte; todas as referências a "Neutrino" são eliminadas.

QRV não implementa fork() (programas iniciam via posix_spawn()), e não possui paginagem sob demanda e nem swap — as mesmas escolhas que o QNX fez em sua geração 8.0.


2. Licenciamento

QRV é regido por duas licenças ao mesmo tempo, e entender qual é qual é essencial antes de compilar ou redistribuir qualquer coisa.

  • O código próprio do QRV é Apache License 2.0. Tudo escrito do zero para este projeto — o port RISC-V, o novo sistema de compilação, a separação do taskman em modo de usuário, a reformulação livre de trava do kernel, os drivers e ferramentas que criamos — é Apache 2.0. O texto completo está em LICENSE.txt.

  • O código derivado do QNX é a BlackBerry QNX Community License (QCL) 2.0. As partes do QRV que descendem das fontes comunitárias do QNX Neutrino de 2009 permanecem sob a QCL, que permite o uso não comercial e acadêmico das fontes derivadas. QRV não pode, e não irá, relicenciar o código do QNX.

Esta realidade de licenciamento duplo é precisamente a razão pela qual este repositório não contém uma árvore de fontes pronta para compilação. Não temos permissão para redistribuir as fontes derivadas do QNX. Então, em vez de enviar o código, este repositório envia uma receita (veja a próxima seção): um mapa de onde cada arquivo QNX vai, mais os patches QRV que o transformam. Você obtém as fontes comunitárias upstream do QNX por conta própria, a partir de seu espelho público, e a receita reconstrói a árvore QRV em sua máquina. Sua cópia é sua; redistribuímos apenas nossos próprios patches e metadados licenciados sob Apache.

QRV também incorpora código sob outras licenças permissivas — por exemplo componentes licenciados sob BSD adotados do FreeBSD (substituindo módulos QNX antigos), um driver de bloco virtio licenciado sob MIT de ascendência xv6, e o shell Korn MirBSD (mksh) como shell do sistema. **WHAT_IS_WHAT.md é a referência autorizada, quebra por componente, do que está sob qual licença e de onde veio — consulte-o sempre que estiver em dúvida sobre um arquivo ou subsistema específico.

Finalmente, o repositório contém PETITION.md: um pedido aberto à QNX Software Systems e à BlackBerry para relicenciar as fontes históricas do Neutrino de 2007–2009 sob uma licença permissiva aprovada pela OSI. Se você gostaria que os fundamentos deste trabalho se tornem um dia totalmente livres, esse documento é onde adicionar seu nome.


3. Obtendo as fontes: obtain_proj.sh e a árvore os/

Baixar ferramenta