Skip to content
KitploitKITPLOIT
ツールブログ
Log in
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
qrv — QRV オペレーティングシステム | Kitploit
ツール/GitHubGitHub/r-tty/qrv
組み込みシステムセキュリティハードウェアセキュリティ論文と研究学習と教育厳選リソース
GitHubr-tty/qrv

qrv

QRV オペレーティングシステム

リポジトリを見る
24144ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

QRV — QNX Neutrinoベースのオペレーティングシステム、64ビットRISC-V向けに再構想

QRVは、現代の64ビットハードウェア向けに、QNX Neutrino 6.4オペレーティングシステムを根本から適応・再実装したものです。主要アーキテクチャはRISC-V(rv64g)、セカンダリターゲットはx86-64です。プロジェクトは2020年のクリスマスイブに始まりました。QRVという名称は、QNXの商標との関連を意図的に避けています。

QRVは、カーネルだけでなく完全なオペレーティングシステムです。マイクロカーネルがその心臓部ですが、作業の大部分はそれを取り巻くすべてのものに費やされています。最も注目すべきは、ユーザーモードのプロセス/メモリ/パスマネージャ(QNXのprocnto)であるtaskmanです。これは大幅に再加工され、カーネルからユーザースペースに引き上げられました。それに加えて、Cライブラリ、デバイスドライバ、ファイルシステム、動的ローダー、システムサーバーがすべて移植され、64ビット対応になり、多くの場所で大幅に書き直されています。マイクロカーネルは設計上小さいままですが、その周りのオペレーティングシステムがQRVの大部分を占めています。

これは、古いコードを新しいコンパイラで単にコンパイルするフォークではありません。これは、モジュールごとに慎重に真のLP64モデルに移植したものであり、独自のprocnto境界を解体し、IFS/スタートアップ機構を置き換え、最新リリースではカーネルのBig Kernel Lockを完全に削除し、プロセス/メモリ/パスマネージャをカーネルからユーザーモードサーバーに移動させています。

このREADMEはQRV v0.43について説明しています。

開発ブログ(移植の全容)は https://r-tty.blogspot.com にあります。本格的な文書『QRV移植物語』は、ソースツリーの doc/tex/PortingStory/ にあります。

QRVはClaude Code(Anthropicのエージェント型コーディングツール)と密接に協力して開発されました。移植作業、SMPデバッグ、ドキュメント(このREADMEを含む)の多くは、人間とAIのペアプログラミングの取り組みとして、著者とともに行われました。


目次

  1. QRVとは何か
  2. ライセンス
  3. ソースの入手: obtain_proj.sh と os/ ツリー
  4. システムアーキテクチャ
  5. TaskmanとTM_PRIV特権システムコール
  6. Big Kernel Lock — そしてその削除
  7. ストレージ: devb-nvme と fs-qrv
  8. ユーザースペース
  9. ビルドと実行
  10. 実機での実行
  11. 結びの言葉:なぜ自由なクローンが重要なのか

1. QRVとは何か

QNXはマイクロカーネルリアルタイムオペレーティングシステムであり、その中心的な考え方は同期メッセージパッシングです。QNXでは、カーネル自体は小さく、スレッドのスケジューリング、メッセージの受け渡し、シグナルの配信、タイマーと割り込みの処理、そしてそれ以外はほとんど行いません。モノリシックOSがカーネル内部に入れるものすべて—プロセスマネージャ、メモリマネージャ、ファイルシステム、デバイスドライバ、ネットワークスタック—は、リソースマネージャと呼ばれる通常のユーザープロセスとして実行され、同じsend / receive / reply IPCプリミティブを通じて互いに、そしてクライアントと通信します。

このアーキテクチャこそがQNXをエレガントにしており、QRVがまさに保存しているものです。ファイルを開きたいプログラムはメッセージを送信し、ファイルシステムサーバーがそれを受信し、処理を行い、応答します。カーネルはランデブーを仲介するだけです。その結果、ドライバがクラッシュしてもカーネルをダウンさせることなく再起動でき、信頼できるコンピューティングベースは数十キロバイトで測定され、「カーネル」と「アプリケーション」の境界は、システムコールだらけの特権壁ではなく、メッセージであるシステムが実現します。

QRVは2009年当時のQNX Neutrino 6.4コミュニティソースを基に、その設計を未来に引き継ぎます:

  • 64ビット対応(LP64)。 すべてのポインタとサイズ型は64ビットです。移植では、32ビットコードに潜むint/uint32_t/pid_tのポインタ上の切り捨てを追跡し修正します。
  • RISC-V第一。 主要ターゲットはqemu-system-riscv64(virtマシン)とSiFive Unmatched (FU740) 開発ボードです。x86-64は移植性確認用にビルドを維持しています。
  • 独自の境界なし。 IFSやmkifsはありません(QRVは代わりに標準のCPIO形式を使用)。スタートアップ/カーネルの分離もなく(スタートアップはカーネルに直接リンク)、コールアウトやミニドライバもありません。
  • 現代的なビルド。 LinuxスタイルのKconfig設定、インクリメンタルカーネルリンク(モジュールは32→64のモノリスとしてリンカに投げられるのではなく、一度に1つずつ追加・テスト)、クロスコンパイラツールチェーン(riscv64-linux-gnu-gcc)。
  • 改名・商標除去済みの用語。 procntoは全体で**taskman**(Task Manager)に変更。「Neutrino」への参照はすべて除去されています。

QRVはfork()を実装しておらず(プログラムはposix_spawn()で起動)、デマンドページングやスワップもありません—これらはQNX自身が8.0世代で行ったのと同じ選択です。


2. ライセンス

QRVは同時に2つのライセンスが適用されます。どちらがどれかを理解することは、何かをビルドしたり再配布したりする前に不可欠です。

  • QRV独自のコードはApache License 2.0です。 このプロジェクトのためにゼロから書かれたものすべて—RISC-V移植、新しいビルドシステム、ユーザーモードtaskman分割、ロックフリーカーネル再加工、私たちが作成したドライバやツール—はApache 2.0です。全文は**LICENSE.txt**にあります。

  • QNX由来のコードはBlackBerry QNX Community License (QCL) 2.0です。 2009年のQNX Neutrinoコミュニティソースから派生したQRVの部分は引き続きQCLのもとで、派生ソースの非商用および学術目的での使用を許可します。QRVはQNXのコードのライセンスを変更することはできません。

このデュアルライセンスの現実こそが、このリポジトリにビルド可能なソースツリーが含まれていない理由です。 QNX由来のソースを再配布することは許可されていません。そのため、コードを提供する代わりに、このリポジトリはレシピ(次のセクション参照)を提供します。各QNXファイルの配置先と、それを変換するQRVパッチのマップです。あなた自身でアップストリームのQNXコミュニティソースを公開ミラーから入手し、レシピがあなたのマシン上でQRVツリーを再構築します。あなたのコピーはあなたのものです。私たちは、Apacheライセンスのパッチとメタデータのみを再配布します。

QRVはまた、他のパーミッシブライセンスのコードも取り入れています。例えば、FreeBSDから採用したBSDライセンスのコンポーネント(古いQNXモジュールを置き換え)、xv6由来のMITライセンスvirtioブロックドライバ、システムシェルとしてのMirBSD Kornシェル(mksh)などです。WHAT_IS_WHAT.mdが、何がどのライセンスでどこから来たのかの信頼できるコンポーネントごとの内訳です—特定のファイルやサブシステムについて不明な場合は、それを参照してください。

最後に、リポジトリには**PETITION.md**が含まれています。これは、QNX Software SystemsおよびBlackBerryに対して、歴史的な2007〜2009年のNeutrinoソースをパーミッシブなOSI承認ライセンスで再ライセンスするよう求める公開要請です。この作業の基盤がいつか完全に自由になることを望むなら、その文書にあなたの名前を追加してください。


3. ソースの入手: obtain_proj.sh と os/ ツリー

QNX由来のソースはここで再配布できないため、このリポジトリはソース再構築配布です。以下が含まれます:

ファイル/ディレクトリ目的
obtain_proj.sh再構築スクリプト — これを実行します。
placement.txt各アップストリームQNXパスをQRVパスにマッピング(約680エントリ)。
patches/QRVパッチシリーズ(LZ4圧縮)、およびseries順序ファイル。
LICENSE.txtApache License 2.0。
WHAT_IS_WHAT.mdコンポーネントごとのライセンスと出所。
PETITION.md再ライセンス請願。

スクリプトの動作```

$ ./obtain_proj.sh

1. **上流のQNXコミュニティミラーをクローンします** (`github.com/vocho/openqnx`、浅いクローン)。
2. `placement.txt`に従って**ファイルを配置**し、各上流ファイルを`os/`以下の適切なQRVの場所にコピーします。配置されたファイル、既に存在するファイル、不足しているファイルの数を報告します。
3. 配置が完了したら**クローンを削除**します。
4. `patches/series`から順に**QRVパッチシリーズを適用**します。各パッチはLZ4圧縮されており(`*.patch.lz4`)、`lz4cat … | patch -p1`で適用されます。パッチには現在のリリースのバージョンが含まれています。
5. 必要なスクリプト(例:`emu.sh`、`host_tools/mkgpt.py`)に**実行権限を設定**します。

必要なツールは`git`、`patch`、`lz4cat`(`lz4`パッケージから)です。スクリプトは事前にこれらを確認し、不足しているものがあればインストール方法を表示します。

最終成果物は**`os/`** — 完全でビルド可能なQRVソースツリーです。```
os/
├── kernel/          Everything linked into the qrv-kernel binary
│   ├── arch/riscv/     RISC-V port: vectors, traps, SBI, context switch,
│   │   ├── startup/        arch-specific startup (head.S, mmu.c, …)
│   │   ├── platform/       qemu_virt/, unmatched/
│   │   └── include/        context.h, cpu_paging.h, sbi.h, …
│   ├── startup/         arch-independent startup (hardware_init, smp, …)
│   ├── nano/            core nanokernel: messaging, scheduling, sync, xfer
│   ├── kext/            kernel extensions (kerexts)
│   └── include/         kernel-internal headers
├── taskman/         The Task Manager (QNX's "procnto"), a user-mode server
│   ├── sys/            system manager: main, ELF loader, support
│   ├── proc/           process manager: spawn, wait, …
│   ├── mem/            memory manager: page tables, physical allocator
│   │   └── pageman/        page-granularity virtual-memory operations
│   └── path/           path manager: namespace, /dev/*, /proc/*
├── lib/             C library and runtime
├── include/         User-space-visible headers (the public ABI)
├── userland/        Shell, utilities, drivers, servers (resource managers)
├── servers/         pci, slogger
├── dev/             Device drivers (virtio block, 8250 UART, …)
├── boot/            Boot artifacts and deploy helpers
├── host_tools/      Host-side tooling (mkgpt.py, …)
├── doc/             Documentation, incl. The QRV Porting Story (LaTeX)
├── Kconfig, Makefile, def.mk, common.mk, emu.sh

そこから、cd os && make でシステムがビルドされます(§9 を参照)。


4. システムアーキテクチャ

ツールをダウンロード