Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
qrv — QRV Sistema Operativo | Kitploit
Strumenti/GitHubGitHub/r-tty/qrv
Sicurezza Sistemi EmbeddedSicurezza HardwarePaper e RicercaApprendimento e FormazioneRisorse Curate
GitHubr-tty/qrv

qrv

QRV Sistema Operativo

Vedi Repository
24144 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

QRV — un sistema operativo basato su QNX Neutrino, reimmaginato per RISC-V a 64 bit

QRV è un adattamento e una reimplementazione da zero del sistema operativo QNX Neutrino 6.4 per hardware moderno a 64 bit, con RISC-V (rv64g) come architettura principale e x86-64 come target secondario. Il progetto è iniziato la vigilia di Natale del 2020. Il nome QRV evita deliberatamente qualsiasi associazione con il marchio QNX.

QRV è un sistema operativo completo, non solo un kernel. Il microkernel è il suo cuore — ma la parte più cospicua del lavoro è stata dedicata a tutto ciò che lo circonda. La cosa più importante è taskman, il gestore di processi / memoria / path in modalità utente (il procnto di QNX), che è stato profondamente rielaborato e spostato dal kernel allo spazio utente; insieme ad esso, la libreria C, i driver di dispositivo, il filesystem, il loader dinamico e i server di sistema sono stati tutti portati, resi compatibili con il 64 bit e in molti casi pesantemente riscritti. Il microkernel è piccolo per progettazione; il sistema operativo che lo circonda è dove vive la maggior parte di QRV.

Questo non è un fork che si limita a compilare vecchio codice con un nuovo compilatore. È un porting attento, modulo per modulo, a un vero modello LP64, con il confine proprietario di procnto smantellato, il meccanismo IFS/startup sostituito e — a partire dalle release più recenti — il Big Kernel Lock del kernel completamente rimosso e il gestore di processi/memoria/path spostato dal kernel a un server in modalità utente.

Questo README descrive QRV v0.43.

Il blog di sviluppo, con la storia completa del porting, si trova all'indirizzo https://r-tty.blogspot.com. Una narrazione della lunghezza di un libro, The QRV Porting Story, risiede nell'albero dei sorgenti sotto doc/tex/PortingStory/.

QRV è stato sviluppato in stretta collaborazione con Claude Code, lo strumento di codifica agentico di Anthropic — gran parte del porting, del debugging SMP e della documentazione (incluso questo README) è stata svolta come uno sforzo di programmazione in coppia umano–AI, lavorando insieme all'autore.


Sommario

  1. Cos'è QRV
  2. Licenze
  3. Ottenere i sorgenti: obtain_proj.sh e l'albero os/
  4. Architettura del sistema
  5. Taskman e la syscall privilegiata TM_PRIV
  6. Il Big Kernel Lock — e la sua rimozione
  7. Archiviazione: devb-nvme e fs-qrv
  8. Spazio utente
  9. Compilare ed eseguire
  10. Esecuzione su hardware reale
  11. Considerazioni finali: perché un clone libero è importante

1. Cos'è QRV

QNX è un sistema operativo real-time a microkernel la cui idea fondamentale è il message passing sincrono. In QNX, il kernel stesso è minuscolo — sa come schedulare thread, passare messaggi, consegnare segnali, gestire timer e interrupt, e poco altro. Tutto ciò che un sistema operativo monolitico metterebbe dentro il kernel — il gestore dei processi, il gestore della memoria, il filesystem, i driver di dispositivo, lo stack di rete — viene eseguito in normali processi utente chiamati resource manager, e comunicano tra loro e con i loro client attraverso la stessa primitiva IPC send / receive / reply.

Questa architettura è ciò che rende QNX elegante, ed è esattamente ciò che QRV preserva. Un programma che vuole aprire un file invia un messaggio; il server del filesystem lo riceve, esegue il lavoro e risponde. Il kernel orchestra solo l'appuntamento. Il risultato è un sistema in cui un driver può crashare e essere riavviato senza far cadere il kernel, in cui la base di calcolo fidata è misurata in decine di kilobyte, e in cui il confine tra "kernel" e "applicazione" è un messaggio, non una barriera di privilegi piena di syscall.

QRV prende i sorgenti della comunità di QNX Neutrino 6.4 del 2009 e porta avanti quel progetto:

  • 64 bit puliti (LP64). Ogni puntatore e tipo di dimensione è a 64 bit; il porting scova e corregge i troncamenti int/uint32_t/pid_t-su-puntatore di cui il codice a 32 bit è pieno.
  • RISC-V prima di tutto. Il target primario è qemu-system-riscv64 (la macchina virt) e la scheda di sviluppo SiFive Unmatched (FU740). x86-64 viene mantenuto in compilazione come controllo di portabilità.
  • Nessun confine proprietario. Non ci sono IFS e mkifs (QRV usa il formato standard CPIO); non c'è una separazione separata startup/kernel (lo startup è linkato direttamente con il kernel); non ci sono callout e mini-driver.
  • Una build moderna. Una configurazione Kconfig stile Linux, un link incrementale del kernel (i moduli vengono aggiunti e testati uno alla volta, non lanciati al linker come un monolito da 32→64) e una toolchain cross-compilatore (riscv64-linux-gnu-gcc).
  • Un vocabolario rinominato e senza marchi. procnto è taskman (il Task Manager) dappertutto; tutti i riferimenti a "Neutrino" sono rimossi.

QRV non implementa fork() (i programmi partono tramite posix_spawn()), e non ha paging su domanda e nessuno swap — le stesse scelte che QNX stesso ha fatto nella sua generazione 8.0.


2. Licenze

QRV è governato da due licenze contemporaneamente, e capire quale sia quale è essenziale prima di compilare o ridistribuire qualsiasi cosa.

  • Il codice proprio di QRV è sotto licenza Apache 2.0. Tutto ciò che è scritto da zero per questo progetto — il porting RISC-V, il nuovo sistema di build, la separazione di taskman in modalità utente, la rielaborazione del kernel senza lock, i driver e gli strumenti che abbiamo creato — è Apache 2.0. Il testo completo è in LICENSE.txt.

  • Il codice derivato da QNX è sotto BlackBerry QNX Community License (QCL) 2.0. Le parti di QRV che discendono dai sorgenti della comunità di QNX Neutrino del 2009 rimangono sotto la QCL, che permette l'uso non commerciale e accademico dei sorgenti derivati. QRV non rilascia, e non può rilasciare, il codice di QNX sotto altra licenza.

Questa realtà della doppia licenza è precisamente il motivo per cui questo repository non contiene un albero dei sorgenti pronto per la compilazione. Non ci è permesso ridistribuire i sorgenti derivati da QNX. Quindi invece di distribuire il codice, questo repository distribuisce una ricetta (vedi la sezione successiva): una mappa di dove va ogni file QNX, più le patch QRV che lo trasformano. Tu ottieni i sorgenti della comunità QNX upstream da solo, dal loro mirror pubblico, e la ricetta ricostruisce l'albero QRV sulla tua macchina. La tua copia è tua; noi ridistribuiamo solo le nostre patch e metadati sotto licenza Apache.

QRV incorpora anche codice sotto altre licenze permissive — per esempio componenti con licenza BSD adottati da FreeBSD (che sostituiscono moduli QNX invecchiati), un driver di blocco virtio con licenza MIT di derivazione xv6, e la MirBSD Korn shell (mksh) come shell di sistema. WHAT_IS_WHAT.md è la mappa autorevole, componente per componente di cosa è sotto quale licenza e da dove proviene — consultalo ogni volta che non sei sicuro su un particolare file o sottosistema.

Infine, il repository contiene PETITION.md: una richiesta aperta a QNX Software Systems e BlackBerry di rilasciare i sorgenti storici di Neutrino 2007–2009 sotto una licenza permissiva approvata dall'OSI. Se desideri che le fondamenta di questo lavoro siano un giorno completamente libere, quel documento è dove aggiungere il tuo nome.


3. Ottenere i sorgenti: obtain_proj.sh e l'albero os/

Scarica lo strumento