HN 日本語サマリー

← 一覧へ戻る
科学・技術

Vinix – Vで書かれたモダンなオペレーティングシステム

Vinix – A modern operating system written in V (vinix-os.org)

83 pointsby hggh55 コメント

要約

Vinixは、V言語でゼロから開発された新しいオペレーティングシステムです。最小限のリソース使用量、高速な起動、systemdやテレメトリを含まない設計を特徴としています。特にApple Silicon Mac向けに最適化されており、macOSやLinuxに代わる高速でオープンソースな選択肢を目指しています。Linuxバイナリとの互換性や、開発中のApple GPUドライバーによるハードウェアアクセラレーションも提供予定です。

全文翻訳

[画像: Files、Activity Monitor、Terminalが開いた状態でQEMUで実行されているVinixデスクトップ](https://vinix-os.org/assets/vinix-qemu-desktop-hero.png)

50 MB RAM
起動時の使用量

≈1 GB のディスク
インストール後の容量

Apple Silicon Mac の公式サポート

Alpine Linux バイナリとの互換性

M3、M4、M5 サポートも近日対応予定。

アルファ版ソフトウェア。 Vinix は現在活発に開発中であり、日常的な使用や本番環境での使用はまだ想定されていません。

QEMU で Vinix を実行する

ビルド前提条件 をインストールし、ランチャーでデスクトップをビルドして起動します。

Apple Silicon Mac

QEMU は ARM64 デスクトップに macOS のハードウェア仮想化を使用します。

brew install qemu
git clone https://github.com/vlang/vinix
cd vinix
./scripts/run-desktop-aarch64.sh
その他のコンピューター

x86_64 ランチャーを使用します。利用可能な場合は KVM を使用し、それ以外の場合は QEMU エミュレーションを使用します。

git clone https://github.com/vlang/vinix
cd vinix
./scripts/run-desktop-amd64.sh

Vinix の動作中の様子

機能

Vinix は最新のマシンのメモリとディスクのほんの一部しか使用しません。
RAM 起動時 — 1 GB インストール後 — 50 MB 起動からデスクトップまで — 数秒 GCなし · systemdなし · テレメトリなし

スピードとパフォーマンス

Vinix は数秒でデスクトップに起動し、RAM 約 50 MB、ディスク容量 1 GB で安定します。

カーネルにはガベージコレクタがありません。手動メモリ管理を使用しているため、コレクションパスがシステムコール、割り込みハンドラ、またはコンポジタを任意の瞬間に停止させることはありません。メモリ使用量は一定に保たれます。

起動したもので、あなたが開始したもの以外は何も実行されません。systemd はなく、バックグラウンドインデクサーもなく、何もホームに電話しません。デスクトップはフレームバッファに直接描画され、ウィンドウを合成します。その下にディスプレイサーバーはなく、90日経ってもマシンは1日目と同じように動作します。リリースを重ねてもその状態は維持されます。Vinix はリリースごとに肥大化することはありません。

サンドボックス化されたアプリケーションは、そのディレクトリの外側のファイルシステムに到達できません。
SANDBOX (オプション) システムの他の部分 /home ~/.ssh その他のアプリ

作業中

オプションのアプリごとのサンドボックス

アプリケーションは、iOS でアプリが制限されるのと同じ方法で、サンドボックス内で起動できます。サンドボックス化されたプログラムは、独自のプライベートディレクトリを持ち、ファイルシステム全体はそのディレクトリしか見えません。あなたのドキュメント、SSHキー、他のアプリケーションのデータ、そしてシステムの残りの部分は、プログラムには単に存在しないため、そのプログラム内のバグや悪い依存関係は、与えられていないものを読み取ることができません。

これはオプションであり、デフォルトではオフです。システムがあなたとあなたのコンピューターの間に壁を設けるのではなく、あなたが選択したプログラムのためにオンにするものです。サンドボックスなしで同じバイナリを実行すると、通常のファイルパーミッションを持つ他のUnixプロセスのように動作し、他に何も邪魔になりません。

これは実際に役立つ場合に意図されています。ブラウザ、ダウンロードした未読のバイナリ、他のリポジトリからのビルドスクリプトなどです。あなた自身のツールは、現在と同じように動作し続けます。

Alpine Linux バイナリは、Linux システムコールを介して Vinix カーネルに直接呼び出します。
ALPINE AARCH64 BINARY ELF musl chromium blender VINIX KERNEL VFS SCHEDULER MEMORY DRIVERS openat mmap futex ioctl VMなし · コンテナなし · エミュレーションなし

Linux システムコールおよび Alpine Linux バイナリとの完全な互換性

Vinix は Linux ディストリビューションではありません。そのカーネルは V 言語でスクラッチから書かれています。Linux プログラムは Linux に直接話しかけるのではなく、固定された番号付きインターフェース(openat、mmap、clone、futex など数百のシステムコール)を使用します。Vinix はそのインターフェースを実装しており、さらにプログラムがエントリ時に期待する ELF レイアウトと musl の動作も実装しています。

そのため、未変更の aarch64 Alpine Linux パッケージはここでネイティブに実行されます。Linux 仮想マシン、互換性コンテナ、CPU エミュレーションはありません。バイナリはベアメタル CPU で実行され、システムコールは Vinix カーネルに着地します。pkg install chromium は Alpine が出荷しているのと同じパッケージを取得し、起動します。

だからこそ、Chromium、GIMP、Blender、Sublime Text、Gnumeric、Wine はすでに Vinix で動作しています。手作業でポートされた数少ないパッケージに依存するのではなく、数千の既存のパッケージを利用できます。まだ実装されていない Linux カーネル機能を必要とするアプリケーションは、まだ失敗する可能性があり、それらのギャップは見つかり次第閉じられます。

開発中の Apple M1 AGX GPU ドライバー
APPLE M1 — AGX GPU

作業中

M1–M5 GPU ドライバー

Apple は macOS 以外では GPU のドキュメントやドライバーを公開していないため、Mac でハードウェアアクセラレーションを使用したい他のオペレーティングシステムは、自分で作成する必要があります。Vinix は、M1 から独自のドライバーを作成しています。

M1 では、AGX(GPU 自体)と DCP(画面を所有するディスプレイコントローラー)の 2 つのドライバーが必要です。どちらも Apple のメールボックスと RTKit インターフェースを介してアクセスされるコプロセッサであり、DART IOMMU が GPU のメモリビューをカーネルのものから分離しています。その上に、Mesa と OpenGL があり、アプリケーションがソフトウェアレンダリングではなく実際のアクセラレーションを得られるように、これらの 2 つのドライバーが必要とするものだけを実装した最小限の DRM サブシステムがあります。

これは現在進行中の作業であり、他の多くのことはこれに依存しています。ハードウェアアクセラレーションされたデスクトップ、スムーズなビデオ、そして最終的には Wine を介したゲームです。M2 から M5 は M1 の完了後に続きます。それらの GPU は密接に関連しているため、同じドライバーを拡張してサポートすることができ、最初からやり直す必要はありません。

[画像: MacBook Air、MacBook Pro、iMac、Mac mini、Mac Studio を含む Apple Mac のラインナップ]

公式サポートハードウェア

Vinix はすべての Apple Silicon Mac をサポートする予定です。2026年9月10日現在、M1 Mac のみがサポートされています。

Intel Mac が次に来ます。2010 年の Mac mini のような古いモデルも含まれます。これにより、古い Mac に高速でモダンな、完全にサポートされた OS を提供できます。

スタック全体が一緒にビルドおよびテストされているため、スリープ、ウェイクアップ、リッドクローズ、ハイバネーション、Wi-Fi、グラフィックス、オーディオ、または Linux のインストールをプロジェクトにする可能性のあるその他のハードウェアの基本機能のドライバーや回避策を探す必要はありません。

amd64 マシンにも Vinix をインストールできますが、ドライバーのサポートは限られています。現時点では、VM で実行することをお勧めします。

画面をうまく使う

余分なパディングや丸い角はありません。作業スペースが増えます。

一つのやり方

1 つのディストリビューション、1 つの UI、1 つのパッケージマネージャー、1 つの init システム、1 つのバイナリフォーマット。常に選択を迫られることはなく、すべてがうまく機能します。

必要なものを変更する

システムを好みの方法で動作するようにカスタマイズできます。

選べるテーマ

多くのテーマから選択できます。macOS Catalina や Windows XP のように見せることもできます。

よくある質問

macOS より Vinix を選ぶ理由?

これが Vinix が存在する主な理由です。MacBook 用の高速でオープンソースのミニマルなオペレーティングシステムを提供することです。Apple は優れたハードウェアを構築していますが、それ専用に作られた軽量システムはありませんでした。

macOS はリリースごとに遅くなり、より肥大化していきます。購入時に瞬時に感じられた同じ Mac が、数回のアップデート後に遅くなり、アプリを 1 つも開いていないのにシステムはすでに数十ギガバイトのディスクと数ギガバイトの RAM を消費します。リリースは不安定になり、疑問のある設計上の選択、再配置または削除された設定、誰も求めていない機能、そしてオンラインアカウントやサービスに結び付けられるシステムの増加が見られます。

Vinix は逆の方向へ進みます。約 50 MB の RAM と 1 GB のディスク容量を使用し、数秒で起動し、その状態を維持します。システム全体がオープンソースなので、その一部を読み取り、変更し、自分で再構築できます。何もホームに電話しません。

バグ修正は迅速で、プロセスは透明です。macOS では、バグレポートを送信しても、何年も何も聞かされないことがあります。Vinix では、ほとんどのバグはその日に修正され、公開されているバグレポート、ディスカッション、修正を追跡できます。

ゲーミングもあります。Vinix は強力な Mac をゲーミングマシンに変えるでしょう。Apple Silicon には GPU がありますが、ゲームはありません。ほとんどのパブリッシャーは macOS を完全にスキップしており、存在するポートはドロップされます。例えば、Valve は Counter-Strike 2 の macOS サポートを終了しました。Vinix は、The Witcher 3、Counter-Strike 2、Elden Ring、Grand Theft Auto V、Red Dead Redemption 2、Skyrim、Doom Eternal、Hogwarts Legacy など、macOS バージョンがない人気のタイトルをサポートする予定です。

これは計画中の作業であり、今日プレイできるものではありません。すでにここで動作している 2 つのコンポーネントに基づいています。Wine(Vinix 上で Windows アプリケーションを実行する)と、x86_64 バイナリを ARM64 ハードウェアで実行するユーザーモード x86 翻訳レイヤーです。残りの部分は現在開発中の Apple GPU ドライバーです。

Linux より Vinix を選ぶ理由?

Linux は良いシステムです。それがあなたに合っているなら、Vinix に切り替える理由はほとんどありません。

Vinix が提供するのは、ミニマリズムと systemd のないシステムです。物事を行う方法は 1 つだけです。1 つのディストリビューション、1 つのデスクトップ、1 つのパッケージマネージャー、1 つの init システム、1 つのバイナリフォーマット。作業を開始するために選択または設定する必要のあるものは何もありません。

Vinix はコンパイルもはるかに高速です。V 言語は、ヘッダーファイルではなくモジュールを使用し、Clang や GCC よりもコンパイル速度に重点を置いているため、主に高速です。これにより、開発サイクルがスピードアップします。

すぐに、Vinix のフルデバッグビルド(最適化なし)が数秒でコンパイルできるようになります。

新しいカーネルも魅力です。Vinix はスクラッチから書かれており、1 人で全体を理解できるほど小さいです。

なぜ Vinix は V 言語で書かれているのか?

コンパイルが非常に高速です。カーネル全体が数秒で再ビルドされるため、何かを変更し、再ビルドし、起動するのは、コーヒーブレークではなく、1 つの迅速なステップです。これにより、システム全体での作業が楽しく保たれます。

V はシンプルで読みやすい言語でもあります。言語は午後で学習できるほど小さく、コードは数か月後も簡単に追跡でき、開発を迅速に進めることができます。これは、スクラッチから構築されたオペレーティングシステムにとって重要です。

Vinix は Linux ディストリビューションですか?

いいえ。Vinix は独立して開発された Unix ライクなオペレーティングシステムであり、独自のカーネル、ドライバー、プロセスモデル、ファイルシステムレイヤー、およびシステムコールを備えています。x86_64 および ARM64 をターゲットとしています。Vinix は Alpine Linux バイナリを実行できますが、その下に Linux は実行されません。

ソフトウェアのポートを容易にするために、慣れ親しんだ Unix および Linux の規約に従っています。互換性は実用的な目標であり、オペレーティングシステムの基盤ではありません。

テクノロジースタックは何ですか?

Vinix は、Vinix カーネルと初期メモリ、フレームバッファ、ブートモジュール情報を提供するブートローダーである Limine で起動します。その上に、主に V 言語で書かれたスタンドアロンカーネルがあり、C 言語と、ハードウェアが必要とするアーキテクチャ固有のアセンブリ言語が少量使用されています。

物理および仮想メモリマネージャー、スケジューラを含む元のカーネルコアは、Limine の作成者である mintsuki によって書かれました。約 2 年間の開発休止の後、Alexander Medvednikov が新しいメンテナーになりました。それ以来、Vinix はストレージ、ネットワーキング、入力、グラフィックス、Unix スタイルのユーザーランドサポート、および Alpine Linux バイナリとの互換性を獲得しました。

システムイメージは、そのカーネルと initramfs、および使い慣れたコマンドラインと開発ユーザーランドをペアにします。ネイティブ Vinix アプリケーションとデスクトップは、V 言語と V UI2 で書かれています。

カーネルアーキテクチャは何ですか?モノリシックですか、それともマイクロカーネルですか?

モノリシックです。スケジューラ、物理および仮想メモリマネージャー、仮想ファイルシステム、デバイスドライバー、ネットワークスタックはすべて 1 つのカーネルイメージ内に存在し、メッセージを渡すのではなく、特権モードで単一のアドレス空間で実行されます。これは実用的な選択です。これにより、すべてのディスク読み取りまたはネットワークパケットの IPC ラウンドトリップが回避され、Linux 互換の動作の実装が容易になります。

モノリシックだからといって大きいわけではありません。カーネルは主に V 言語で書かれており、1 人で読み通せるほど小さいです。Limine によってロードされるハイアーハーフカーネルであり、プリエンプティブで SMP 対応、CPU ごとの状態、きめ細かいロック、NUMA およびマルチソケットメモリトポロジーの認識を備えています。すべてのプロセスは独自のメモリ空間を持ち、ユーザーコードは特権なしで実行され、Linux 互換のシステムコールを介してカーネルに入ります。

ロード可能なカーネルモジュールはありません。ドライバーはカーネルイメージにコンパイルされ、V 言語ではカーネル全体の再ビルドに数秒しかかからないため、再ビルドと再起動が高速なパスです。

ドライバーはどのように機能しますか?

ドライバーは、カーネルツリー内の通常の V モジュールであり、カーネル起動シーケンスによって呼び出される initialise() 関数を持っています。x86_64 では、PCI バスをスキャンし ACPI を使用してハードウェアが検出されます。Apple Silicon では、ファームウェアがデバイスツリーを提供します。

初期化されると、ドライバーは devtmpfs を介して /dev の下にノードを公開し、カーネルの Resource インターフェース(読み取り、書き込み、ioctl、mmap など)を実装します。通常のファイルも同じインターフェースを実装しているため、VFS、読み取りおよび書き込みシステムコール、ポーリング、メモリマッピングはすべて、個別のパスなしでデバイス上で機能します。割り込みはプラットフォームのコントローラー(Apple Silicon の AIC、汎用 ARM64 の GIC、x86_64 の APIC)を介して到着します。ハンドラは各イベントを待っているスレッドをウェイクアップします。

現在存在するものは次のとおりです。NVMe、AHCI、ATA ストレージ(GPT パーティションと ext2 を含む)、コンソール、pty、シリアル、キーボード、マウス、HD オーディオ、フレームバッファデバイス。仮想マシン用の virtio ファミリ(ブロック、ネットワーク、GPU、入力)。Apple Silicon 上では、ANS ストレージ、DART IOMMU、コプロセッサ用のメールボックスと RTKit、SMC、SPI キーボードとタッチパッド、Type-C、Wi-Fi です。グラフィックススタックは、GEM バッファオブジェクトを備えた最小限の DRM サブシステムを使用します。AGX GPU および DCP ディスプレイコントローラー ドライバーが必要とするものだけを実装しています。

Vinix は決定論的ですか?

リアルタイムの意味ではありません。Vinix はリアルタイムオペレーティングシステムではなく、レイテンシ保証を行いません。スケジューラはプリエンプティブであり、1 つのポリシーしかありません。スレッドは、その nice 値で重み付けされたタイムスライスを取得し、カーネルはそのためにワンショットタイマーを設定します。SCHED_FIFO または SCHED_RR を要求しても、受け入れられてから静かにスケジュールされるのではなく、EINVAL で失敗します。なぜなら、そこで「はい」と答えるのは嘘だからです。ハードリアルタイムの作業には別のシステムが必要です。

Vinix は設計上、1 つの点で予測可能です。カーネルにはガベージコレクタがありません。-gc none と手動メモリ管理でビルドされているため、コレクションパスがシステムコール、割り込みハンドラ、またはコンポジタを任意の瞬間に停止させることはありません。メモリ使用量は、システムがしばらく実行されても同じように感じられる大きな理由である、のこぎり歯状ではなく、一定かつ制限された状態に保たれます。

同じ予測可能性は、どのサービスが実行されるかにも適用されます。1 つのディストリビューション、1 つのデスクトップ、1 つの init システム、1 つのパッケージマネージャー、固定されたブートシーケンスは、同じイメージをブートする 2 台のマシンが同じサービスを同じ順序で起動することを意味します。今日のコンピューターの動作を決定する累積的なローカル構成はありません。

カーネルサブシステムは、ライブランダムネスではなく、シードされた擬似ランダムシーケンスでテストされます。ページキャッシュは数百の決定論的なランダム化された操作を実行し、Apple の ANS ストレージや SPI キーボードなどのドライバーは、決定論的に変更されたパケットを数千回処理します。これにより、障害が再現可能になります。リリースビルドスクリプトはシステムイメージを生成しますが、Vinix はまだそれらがバイト単位で再現可能であるとは主張していません。

Vinix は Alpine Linux バイナリをどのように実行できますか?

ARM64 では、Vinix は musl に対してビルドされた選択された aarch64 Alpine Linux パッケージを使用できます。それらは同じ CPU アーキテクチャでネイティブに実行されます。Linux 仮想マシンや CPU エミュレーションはありません。Vinix は、プログラムが期待する Linux 向けの ELF、musl、およびシステムコール動作を提供します。

pkg ツールは、Alpine のリポジトリからパッケージとそのランタイム依存関係を解決し、Vinix イメージにステージングし、Alpine 固有の init システムを想定している Alpine のメンテナー スクリプトをスキップします。これはターゲットを絞った互換性であり、サポートされテストされたアプリケーションは直接動作しますが、実装されていない Linux カーネル機能は他のアプリケーションを制限する可能性があります。

Vinix にはパッケージマネージャーやアプリストアはありますか?

はい。Vinix には pkg というコマンドラインパッケージマネージャーが付属しており、Alpine Linux の aarch64 リポジトリからソフトウェアをインストールできます。これにより、手作業でポートされた数個のパッケージではなく、数千の既存のパッケージを利用できます。

pkg update はインデックスを更新し、pkg search はパッケージを検索し、pkg install は依存関係とともにパッケージを取得します。その他のコマンドには、pkg remove、pkg upgrade、pkg list、pkg info があります。パッケージ名は Alpine 固有であり、Vinix は現在 aarch64 用の Alpine 3.21 を追跡しています。Chromium、GIMP、Blender、Gnumeric、Sublime Text、GTK、および通常のコマンドラインツールはすべてこの方法でインストールされますが、まだ実装されていない Linux カーネル機能を必要とするアプリケーションは、まだ失敗する可能性があります。

グラフィカルなアプリストアはまだありません。現時点では pkg はターミナルツールです。

Vinix はどのデスクトップ環境とウィンドウマネージャーを使用しますか?

デフォルトは Vinix 独自のネイティブデスクトップです。これは V 言語と V UI2 で構築されたデスクトップ環境およびウィンドウマネージャーです。入力情報を読み取り、フレームバッファに直接描画し、その下にディスプレイサーバーなしで独自のウィンドウを合成します。

Vinix は X.org と X ウィンドウマネージャー、および Hyprland を使用したオプションの ARM64 Wayland セッションもサポートしています。これらは互換性および実験的なパスであり、ネイティブ Vinix デスクトップが通常のセッションのままです。

Vinix 用のネイティブアプリをどのように書きますか?

Vinix は、Wine、X11、Wayland を介してアプリケーションを実行できます。ネイティブ GUI アプリの場合は、V 言語 と ui2 を使用してください。

別の言語を好む場合は、言語の C FFI を介して C ウィンドウ API を使用してください。これは、描画できるフレームバッファと、待機できるファイルディスクリプタを持つキーボードおよびマウスイベントストリームを提供します。

プライバシーポリシーは何ですか?

何も送信されず、何も共有されません。Vinix はあなたのコンピューターで実行されるオペレーティングシステムです。ホームに電話したり、テレメトリを収集したり、ファイルを共有したり、使用データをどこかに送信したりしません。あなたのコンピューター、あなたの OS、あなたのファイル。

プロジェクトロードマップ

基盤は、ネイティブツールチェーンと使い慣れたユーザーランドから、両方の主要アーキテクチャ上のデスクトップまで広がっています。

今すぐ利用可能
  • mlibc、bash、GCC/G++、V、nano
  • ストレージドライバーと ext2
  • ネットワーキング
  • V-UI
  • X.org と X ウィンドウマネージャー
  • ARM64 上の Hyprland を使用した Wayland
  • Intel VT-x ハイパーバイザー
  • Docker
今後の予定
  • Intel HD グラフィックスドライバー
  • M1–M5 GPU ドライバー

メンテナーにメールを送信