Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
qrv — QRV Betriebssystem | Kitploit
Tools/GitHubGitHub/r-tty/qrv
Embedded-System-SicherheitHardware-SicherheitPapers & ForschungLernen & BildungKuratierte Ressourcen
GitHubr-tty/qrv

qrv

QRV Betriebssystem

Repository anzeigen
2414vor 4 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

QRV — ein auf QNX Neutrino basierendes Betriebssystem, neu konzipiert für 64-Bit RISC-V

QRV ist eine grundlegende Adaption und Neuimplementierung des QNX Neutrino 6.4 Betriebssystems für moderne 64-Bit-Hardware, mit RISC-V (rv64g) als primärer Architektur und x86-64 als sekundärem Ziel. Das Projekt begann am Heiligabend 2020. Der Name QRV vermeidet bewusst jede Assoziation mit der Marke QNX.

QRV ist ein vollständiges Betriebssystem, nicht nur ein Kernel. Der Mikrokernel ist sein Herz – aber der größere Teil der Arbeit steckt in allem, was ihn umgibt. Am bemerkenswertesten ist taskman, der Prozess-/Speicher-/Pfad-Manager im Benutzermodus (QNXs procnto), der grundlegend überarbeitet und aus dem Kernel in den Benutzerbereich verlagert wurde; daneben wurden die C-Bibliothek, die Gerätetreiber, das Dateisystem, der dynamische Lader und die System-Server alle portiert, 64-Bit-sauber gemacht und an vielen Stellen wesentlich neu geschrieben. Der Mikrokernel ist bewusst klein; das Betriebssystem darum herum ist der Ort, an dem der Großteil von QRV lebt.

Dies ist kein Fork, der lediglich alten Code mit einem neuen Compiler übersetzt. Es ist eine sorgfältige, modulweise Portierung auf ein echtes LP64-Modell, bei der die proprietäre procnto-Grenze abgebaut, die IFS/Startup-Mechanik ersetzt und – seit den neuesten Versionen – der Big Kernel Lock des Kernels vollständig entfernt und der Prozess-/Speicher-/Pfad-Manager aus dem Kernel in einen Benutzermodus-Server ausgelagert wurde.

Diese README beschreibt QRV v0.43.

Der Entwicklungsblog mit der vollständigen Geschichte der Portierung ist unter https://r-tty.blogspot.com. Eine buchlange Erzählung, The QRV Porting Story, befindet sich im Quellbaum unter doc/tex/PortingStory/.

QRV wurde in enger Zusammenarbeit mit Claude Code, Anthropics agentischem Codierungstool, entwickelt – ein Großteil der Portierung, des SMP-Debuggings und der Dokumentation (einschließlich dieser README) wurde als Mensch-KI-Paarprogrammierung gemeinsam mit dem Autor durchgeführt.


Inhaltsverzeichnis

  1. Was ist QRV
  2. Lizenzierung
  3. Beziehen der Quellen: obtain_proj.sh und der os/-Baum
  4. Systemarchitektur
  5. Taskman und der privilegierte Systemaufruf TM_PRIV
  6. Der Big Kernel Lock – und seine Entfernung
  7. Speicher: devb-nvme und fs-qrv
  8. Benutzerbereich
  9. Bauen und Ausführen
  10. Ausführen auf echter Hardware
  11. Schlussbemerkungen: Warum ein freier Klon wichtig ist

1. Was ist QRV

QNX ist ein Mikrokernel-Echtzeitbetriebssystem, dessen bestimmende Idee der synchrone Nachrichtenaustausch ist. In QNX ist der Kernel selbst winzig – er weiß, wie man Threads plant, Nachrichten übermittelt, Signale zustellt, Timer und Interrupts behandelt, und wenig anderes. Alles, was ein monolithisches OS innerhalb des Kernels unterbringen würde – der Prozessmanager, der Speichermanager, das Dateisystem, die Gerätetreiber, der Netzwerkstack – läuft in gewöhnlichen Benutzerprozessen, den sogenannten Ressourcen-Managern, und sie kommunizieren miteinander und mit ihren Clients über dasselbe Senden / Empfangen / Antworten-IPC-Primitiv.

Diese Architektur macht QNX elegant, und genau das bewahrt QRV. Ein Programm, das eine Datei öffnen möchte, sendet eine Nachricht; der Dateisystem-Server empfängt sie, erledigt die Arbeit und antwortet. Der Kernel vermittelt nur das Rendezvous. Das Ergebnis ist ein System, in dem ein Treiber abstürzen und neu gestartet werden kann, ohne den Kernel mitzureißen, in dem die vertrauenswürdige Codebasis in zehntausenden von Bytes gemessen wird und in dem die Grenze zwischen „Kernel" und „Anwendung" eine Nachricht ist, keine Privilegienwand voller Systemaufrufe.

QRV nimmt die QNX Neutrino 6.4 Community-Quellen aus der Zeit um 2009 und bringt dieses Design weiter:

  • 64-Bit-sauber (LP64). Jeder Zeiger und jeder Größentyp ist 64-Bit; die Portierung jagt die int/uint32_t/pid_t-auf-Zeiger-Kürzungen, von denen 32-Bit-Code wimmelt.
  • RISC-V zuerst. Das primäre Ziel ist qemu-system-riscv64 (die virt-Maschine) und das SiFive Unmatched (FU740)-Entwicklungsboard. x86-64 wird als Portierbarkeitscheck am Laufen gehalten.
  • Keine proprietären Grenzen. Es gibt kein IFS und kein mkifs (QRV verwendet stattdessen das Standard CPIO-Format); es gibt keine separate Startup/Kernel-Trennung (Startup ist direkt mit dem Kernel gelinkt); es gibt keine Callouts und keine Mini-Treiber.
  • Ein moderner Build. Eine Linux-artige Kconfig-Konfiguration, eine inkrementelle Kernel-Linkierung (Module werden nacheinander hinzugefügt und getestet, nicht als 32→64-Monolith dem Linker vorgeworfen) und eine Cross-Compiler-Toolchain (riscv64-linux-gnu-gcc).
  • Ein umbenanntes, entmarkenrechtlichtes Vokabular. procnto ist durchgängig taskman (der Task Manager); alle „Neutrino"-Verweise sind getilgt.

QRV implementiert kein fork() (Programme starten über posix_spawn()), und es hat kein Demand Paging und keinen Swap – dieselben Entscheidungen, die QNX selbst in seiner 8.0-Generation getroffen hat.


2. Lizenzierung

QRV unterliegt zwei Lizenzen gleichzeitig, und zu verstehen, welche welche ist, ist unerlässlich, bevor Sie etwas bauen oder weitergeben.

  • QRVs eigener Code ist Apache License 2.0. Alles, was für dieses Projekt von Grund auf neu geschrieben wurde – die RISC-V-Portierung, das neue Build-System, die Aufteilung des Taskman im Benutzermodus, die lock-freie Kernel-Überarbeitung, die von uns verfassten Treiber und Werkzeuge – ist Apache 2.0. Der vollständige Text steht in LICENSE.txt.

  • QNX-abgeleiteter Code unterliegt der BlackBerry QNX Community License (QCL) 2.0. Die Teile von QRV, die von den QNX Neutrino Community-Quellen von 2009 abstammen, bleiben unter der QCL, die die nicht-kommerzielle und akademische Nutzung der abgeleiteten Quellen erlaubt. QRV kann QNX-Code nicht und wird ihn nicht umlizenzieren.

Diese Dual-Lizenz-Realität ist genau der Grund, warum dieses Repository keinen baufertigen Quellbaum enthält. Wir dürfen die QNX-abgeleiteten Quellen nicht weitergeben. Statt den Code auszuliefern, liefert dieses Repository ein Rezept (siehe nächster Abschnitt): eine Karte, wohin jede QNX-Datei gehört, plus die QRV-Patches, die sie transformieren. Sie besorgen sich die QNX-Community-Quellen selbst von ihrem öffentlichen Spiegel, und das Rezept rekonstruiert den QRV-Baum auf Ihrem Rechner. Ihre Kopie gehört Ihnen; wir geben nur unsere eigenen Apache-lizenzierten Patches und Metadaten weiter.

QRV enthält auch Code unter anderen freizügigen Lizenzen – zum Beispiel BSD-lizenzierte Komponenten, die von FreeBSD übernommen wurden (als Ersatz für gealterte QNX-Module), einen MIT-lizenzierten Virtio-Blocktreiber mit xv6-Abstammung und die MirBSD Korn Shell (mksh) als System-Shell. WHAT_IS_WHAT.md ist die maßgebliche, komponentenweise Aufschlüsselung, was unter welcher Lizenz steht und woher es stammt – konsultieren Sie sie immer, wenn Sie sich über eine bestimmte Datei oder ein Subsystem unsicher sind.

Schließlich enthält das Repository PETITION.md: eine offene Anfrage an QNX Software Systems und BlackBerry, die historischen Neutrino-Quellen von 2007–2009 unter eine freizügige OSI-zugelassene Lizenz zu stellen. Wenn Sie möchten, dass die Grundlagen dieser Arbeit eines Tages vollständig frei sind, ist dieses Dokument der Ort, um Ihren Namen hinzuzufügen.


3. Beziehen der Quellen: obtain_proj.sh und der os/-Baum

Tool herunterladen