HN 日本語サマリー

← 一覧へ戻る
インフラ・DevOps

選択可能なカーネルを備えたQNX風オペレーティングシステム

A QNX-inspired operating system with selectable kernels (qsoe.net)

27 pointsby edvinbesic3 コメント

要約

QSOEは、QNXにインスパイアされた、選択可能なカーネルを持つオペレーティングシステムで、単一のユーザー空間とビルドシステムを共有する2つのバリアントで提供されます。QSOE/Nは独自に開発されたマイクロカーネルSkimmer上で動作し、QSOE/LはseL4をカーネルとして利用します。どちらのバリアントも64ビットRISC-Vをターゲットとし、SiFive HiFive Unmatchedボードで動作確認済みで、Apache-2.0ライセンスの下でリリースされています。

全文翻訳

QSOE 選択可能なカーネルを備えたQNX風オペレーティングシステム。ニュース: QSOE 0.1がリリースされました — 統合された2カーネルシステムの最初の公開リリースです(2026年6月)。発表を読む → QSOEは、1つのユーザー空間と1つのビルドシステムを共有する2つのバリアントで提供されます。QSOE/Nは、このプロジェクトのためにゼロから書かれたマイクロカーネルであるSkimmer上で動作します(設計上SMP対応)。QSOE/LはseL4をカーネルとして動作します。どちらのバリアントも、コンパイルすると、U-Bootローダーなどで直接使用可能なカーネルとinitrdファイルを提供します。ユーザー空間は両バリアント間で100%同一であり、カーネルごとに生成される唯一の部分はタスクマネージャーであるtaskmanとCライブラリであるlibc.soです。これらはソースレベルで約85%が共有されており、カーネルとの薄いレイヤーでのみ分岐します。設計はQNX Neutrinoの伝統に従っており、小さなカーネルと、それ以外のすべてがユーザー空間に配置され、同期メッセージパッシングIPCと、サービスのためのリソースマネージャーモデルを採用しています。QSOEはSiFive HiFive Unmatched (FU740)上の64ビットRISC-V (RV64, Sv39)をターゲットとしており、QEMUが日常の開発に使用されています。両方のQSOEバリアントは現在、実ハードウェアで起動します。Apache-2.0ライセンスでリリースされています。gitlab.com/qsoe/os 開発ブログ ダウンロード QSOEはソースからビルドすることも、プレビルドされたバイナリからインストールすることもできます。各リリース用の既製イメージはgithub.com/qsoe-dev/dlで公開されています(現在のリリース: 0.1)。ファイルは以下の通りです: skimmer.bin — Skimmerマイクロカーネル: QSOE/Nバリアントのカーネル。ブートローダー(またはQEMU)によって上記のユーザー空間パッケージと一緒にロードされる生のバイナリイメージです。 modpkg.cpio — モジュールパッケージ: 共有QSOEユーザー空間(taskman、init、Cライブラリ、シェル、ドライバー、ユーティリティ)のCPIOアーカイブ。QSOE/Nはこれをskimmer.binと一緒にinitrdとして起動します。 qsoe-l-qemu.elf — QEMU virtマシン用の単一の自己完結型ELFとしてのQSOE/Lバリアント(seL4カーネル上)。elfloader、seL4カーネル、taskman、ユーザー空間をまとめてバンドルしており、他に何も起動する必要はありません。 qsoe-l-sifive.elf — 同じQSOE/Lイメージで、SiFive HiFive Unmatched (FU740)ボード用にビルドされています。 mrbml-riscv64.efi — mr-bml、QSOE独自のブートローダー(RISC-V用EFIアプリケーション)。どちらのバリアントもロードでき、実ハードウェア上のブートメニューを駆動します。 nvme.img.gz — すぐに実行できる自己起動型QEMUディスクイメージ(GPT)。そのEFIパーティションにはmr-bmlが含まれ、オンディスクルートには両方のカーネルが含まれているため、QEMUは-kernelなしで直接mr-bmlメニューに起動します。QSOEを実行する最速の方法です。以下の「QEMU下での実行」を参照してください。 virtio.img.gz — QEMU下でQSOE/Lを実行する場合にのみ使用されるコンパニオンルートディスク(標準のseL4はQEMUのNVMeが必要とする割り込みコントローラーよりも古いため、代わりにvirtioディスクからルートをマウントします)。QSOE/Nや実ハードウェアには必要ありません。 要するに、QEMUで実行するには、nvme.img.gz(QSOE/Lの場合はvirtio.img.gzも)を取得し、「QEMU下での実行」を参照してください。実ハードウェアにインストールするには、mrbml-riscv64.efiとカーネルが必要です。QSOE/Nはskimmer.bin + modpkg.cpioを使用し、QSOE/Lはqsoe-l-*.elfイメージのいずれかを使用します。そして「インストール」を参照してください。 QEMU下での実行 QSOEを実行する最も簡単な方法 — ハードウェアも-kernelのやりくりも不要です。nvme.imgのダウンロードは自己起動型UEFIディスクです。QEMUのファームウェアはそこからmr-bmlを実行し、mr-bmlのメニューはディスクから直接いずれかのバリアントを起動します。qemu-system-riscv64 — QSOE/Nにはバージョン11.0.1以降が必要です(そのNVMeにはAIA割り込みコントローラーが必要です)。edk2 RISC-V UEFIファームウェア — Debian/Ubuntuではqemu-efi-riscv64パッケージ。osリポジトリのランチャーrun-nvme.sh — 正しいQEMUマシン、ファームウェア、ディスクを各バリアントのためにラップしてくれるので、自分で設定する必要はありません。実行する ```bash # イメージを解凍する — QSOE/Lが必要な場合のみvirtio.img.gzを追加する gunzip nvme.img.gz virtio.img.gz # ランチャーをそれらに向け、メニューからバリアントを選択する NVME_IMG=./nvme.img VIRTIO_IMG=./virtio.img ./run-nvme.sh ``` nまたはlを渡してメニューをスキップすることもできます (./run-nvme.sh n)。スクリプトは自動的に一致するQEMUマシンを選択します — AIAマシン上のNVMeルートを持つQSOE/N、PLICマシン上のvirtioルートディスクを持つQSOE/L。mr-bmlメニューとシステムコンソールはどちらもターミナルに表示されます。バリアントを選択すると、ログインプロンプトに起動します。パスワードQSOEでrootとしてログインしてください。 インストール 実ハードウェア、実ディスク。QSOE 0.1はSiFive HiFive Unmatched (FU740)で起動します。SpaceMiT K3は将来のターゲットです。これは、すでにLinuxを実行しているボードを前提としています — 既存のEFIおよびブートパーティションにファイルを配置するため、ボードのファームウェアに精通していることが期待されます。ブートモデルはシンプルです: mr-bmlはEFIシステムパーティションに存在します。それはそのメニューとカーネルをext2/3/4パーティションから読み込みます。選択されたバリアントは、fs-qrvパーティションから自身のルートをマウントします。手順 mrbml-riscv64.efiをESPにEFI/BOOT/BOOTRISCV64.EFI(UEFIリムーバブルメディアパス)としてコピーするか、efibootmgrでブートエントリとして登録します。 ブート/ルートファイルシステムに/boot/qsoe/を作成し、そこにカーネルをコピーします: QSOE/Nにはskimmer.bin + modpkg.cpio、QSOE/Lにはqsoe-l-sifive.elf。 /boot/mr-bml/mr-bml.cfgを各バリアントにつき1つのエントリで作成します — 例: ``` # /boot/mr-bml/mr-bml.cfg — mainfs=パーティションをディスクに合わせて調整してください menuentry 'QSOE/N (Skimmer)' { kernel /boot/qsoe/skimmer.bin mainfs=/dev/nvme0n1p8 modpkg /boot/qsoe/modpkg.cpio } menuentry 'QSOE/L (seL4)' { kernel /boot/qsoe/qsoe-l-sifive.elf mainfs=/dev/nvme0n1p8 } ``` mainfs=デバイスはQSOEルートファイルシステム(fs-qrv)を保持するパーティションの名前です — ボード上でQSOEに割り当てたパーティションに設定してください。実ハードウェアではQEMU virtio分割はありません: 両方のバリアントがNVMeディスクを直接駆動します。 ソースからのビルド QSOEはriscv64-linux-gnu-クロスツールチェーン(rv64gc)と標準のmakeでビルドされます。QEMUはテストに便利です。アンブレラリポジトリはビルドをオーケストレートし、そのリリースタグに一致するコンポーネントリポジトリを取り込みます。 ```bash git clone https://gitlab.com/qsoe/os cd os make prepare # このタグのコンポーネントをフェッチ(component.listを参照) make # 両方のバリアントをビルド: QSOE/N、次にQSOE/L make dist # オプション: QEMUディスクイメージ(nvme.img.gz、virtio.img.gz) ``` QSOE/Lはmake prepare中にseL4カーネルをシャロークローンします。ビルドはダウンロードリストにあるファイルを正確に生成します。ツリー全体はApache-2.0ライセンスです。ソースはgitlab.com/qsoeにあります。 ドキュメント リリースと同時にPDFとして公開されているQSOEマニュアル: Design.pdf — アーキテクチャ: 2カーネルモデル、taskman、IPCおよびリソースマネージャー設計。 UserGuide.pdf — インストール、シェル、基本的なコマンド、テキストエディタとユーティリティ。 ProgrammingBook.pdf — QSOEプログラミング、リソースサーバーフレームワークの章を含む。 AppPortingGuide.pdf — Unix(およびQNX)ソフトウェアをQSOEに移植する: 考慮すべき点 — fork()なし、brk()なし、poll()経由のselect()、その他。 ロードマップ Linuxカーネルにはロードマップがないとよく言われます。QSOEにはあります — 今日の0.1から統合された1.0までの10のリリースが計画されています。作業計画であり、契約ではありません: 作業が次に何が本当に必要かを示すにつれて、マイルストーンは変更される可能性があります。 0.1 — 最初の公開リリース。2カーネル基盤、共有ユーザー空間、/usrに読み取り専用fs-qrv、インタラクティブなgetty + ログイン、ソース公開。(現在) 0.2 — GK208(「Kepler」)上のテキストモードコンソール: リアルタイムオーディオ作業がシリアル経由だけでなくハードウェア上でも見えるように、デバイス上の表示が可能になる。 0.3 — 最初の書き込み可能なファイルシステム: qrvfsがファイル作成/削除、O_CREAT/O_TRUNC、realpathおよびシンボリックリンク解決をサポート。 0.4 — 標準的なデュアルパネルファイルマネージャー: QSOEのフラッグシップアプリケーションで、書き込み可能なファイルシステムとユーザー空間をエンドツーエンドで利用する。 0.5 — 最初のdeva-hdmiオーディオデバイス、ハードリアルタイムパスに必要な優先順位/割り込み/スケジューリングの基礎作業。 0.6 — 包括的な適合性スイート、およびオーディオリアルタイムパッケージ(N-CPUシステム上でN個のハードリアルタイムタスクまで)。 0.7 — 時期が近づいたら定義される。 0.8 — 2番目のハードウェアターゲット(SpaceMiT K3、RVA23クラス)とAIA割り込みアーキテクチャ(IMSIC/APLIC)により、MSI/MSI-Xがボード全体で統一的に機能する。 0.9 — QNX-libc互換性強化: ターゲットとなるQNのセットを再コンパイルして実行