NetBSD で Vulkan を動作させるための私の試み

2026/07/03 3:36

NetBSD で Vulkan を動作させるための私の試み

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

本プロジェクトは、NetBSD 10.1 に Lavapipe Vulkan ドライバを成功裏に統合したことでマイルストーンに到達し、これがグラフィックスタックが主要な BSD オペレーティングシステムでサポートされた初となることを意味しています。この画期的な成果により、Mesa を LLVM 19.1.7 と対向させて設定し、約 17 MB の

libvulkan_lvp.so
ドライバおよびその ICD マニフェストをインストールするまでのビルドプロセス全体が自動化されます。ツールの重要な特徴は回復力であり、ビルドがクラッシュした場合でもコマンドを再度実行することでスクリプトが既存のビルドを検出し、自動的に再開できます。ユーザーはまもなくプリビルトバイナリにアクセスできるようになり、インストールを簡素化できますが、現時点では完全なグラフィックパフォーマンスを得るには Vulkan ロードアの今後の統合が必要です。本プロジェクトは、GCC の警告(Mesa の形式指定子に関するもの)などに関するコンパイラ互換性の問題を解決するための回避策を施しつつ、アップストリーム側の修復を待っています。この取り組みは、オープンソースのグラフィック API と BSD エコシステムの間をつなぐことを目指し、NetBSD がアップストリームのバグフィックスを受け取り、最終的に「ネイティブ Vulkan サポートがない唯一の主要な BSD」という地位を解消することを可能にします。

本文

Vulkan ソフトウェアスタック導入プロジェクト (NetBSD)

プロジェクト概要

この取り組みは、Vulkan ソフトウェアスタック(Mesa/Lavapipe)を NetBSD に導入することを目的としています。プロセスの文書化と自動化を行うことで、再現性維持性の確保を目指しています。

現状のステータス

  • 状態: ベータ版
  • 完了した作業:
    • NetBSD 10.1 (amd64) 向けに、LLVM 19.1.7 を用いた Mesa の構成・コンパイル・リンカー記・インストールを完了。
    • Lavapipe ソフトウェア型 Vulkan ドライバー(
      libvulkan_lvp.so
      )を登録済み。

インストール結果

  • ドライバファイル:
    libvulkan_lvp.so
    (約 17MB) が
    /usr/pkg/lib
    にインストール。
  • ICD マニフェスト: Vulkan API バージョン 1.4 を宣伝するマニフェストが
    /usr/pkg/share/vulkan/icd.d/
    にインストールされ、システムが正しく発見可能。
  • 依存関係: 全依存関係を
    ldd
    コマンドで確認済み(問題なし)。
  • 自動化: 環境セットアップからビルド・インストールまでをエンドツーエンドの自動スクリプトで実行可能。

今後の方向性:プレビルトバイナリ

  • 現在: ソースコードからのビルドが必要。
  • 将来: プレビルトバイナリの提供とダウンロードのみでのインストールが予定されています。
    • ビルドマシンによる公開準備中。
    • 将来的には「ダウンロード+インストール」で済み、数時間のビルド工程が不要になる予定です。

現時点での制限事項

  • ロードアビリティの不足:
    • ドライバー(Lavapipe ICD)は導入済ですが、アプリケーション実行に必要なVulkan ロードアビリティ
      libvulkan.so.1
      )はまだ整備されていません。
    • 実行時動作の確認は完了しておりません。
  • ビルド警告:
    • GCC が NetBSD 上の Mesa において
      %m
      フォーマット指定子を却下する問題を回避するため、
      -Wno-error=format
      フラグを適用しています。
    • 適切なアップストリーム化可能な修正(
      strerror(errno)
      の使用など)は保留中です。

目標

NetBSD は現在、主要な BSD システムの中でVulkan サポートを欠いている唯一の OSです。本プロジェクトが目指すのは以下のことです:

  • NetBSD 上で Vulkan ソフトウェアスタック(CPU 動作/Mesa Lavapipe ドライバー)を構築。
  • すべてのステップ(行き止まりも含む)を文書化し、プロセスを再現可能にすること。
  • セットアップを自動化し、新規マシンをビルド準備状態へ導くスクリプトを提供。
  • 将来的には上ストリーム(Mesa, pkgsrc)へのフィードバックにより、プレビルトバイナリまたはパッケージ化された導入を実現。

対象環境と範囲

項目詳細
対象 OSNetBSD 10.1 (amd64)、ミニマル ISO インストール
ホストVirtualBox VM(リアルタイム GPU アクセラレーション不可)
ビルド目標Vulkan スタックのコンパイル・リンカー記のみ
※ソフトウェアドライバ(Lavapipe)

リポジトリ構成

vulkan-netbsd/
├── docs/
│   ├── 01-environment-setup.md    # ベースシステム、pkgsrc、ビルド依存関係
│   ├── 02-source-dependencies.md  # pkgsrc に含まれない依存関係(ソース構築)
│   ├── 03-mesa-build.md           # Mesa(Lavapipe) の構成・コンパイルノート
│   └── 04-prebuilt-artifacts.md   # 再利用可能なプレビルトバイナリの情報
└── scripts/
    ├── setup-env.sh               # 環境セットアップの自動化
    ├── build-glslang.sh           # pkgsrc なし glslang の構築
    ├── build-mesa.sh              # Mesa(Lavapipe) のクローン・構成・コンパイル
    ├── install-mesa.sh            # ドライバ/ICD マニフェストのインストールと検証
    ├── lib-artifacts.sh           # フィンガープリント・プレビルトフェッチヘルパー
    └── package-artifacts.sh       # リリース用 tarball へのパッケージ化

スタート方法(手順)

新しいミニマルな NetBSD 10.1 (amd64) インストール上で、ルートユーザーとして以下のコマンドを実行します。

cd /root

# 環境セットアップスクリプトのダウンロードと実行
ftp https://raw.githubusercontent.com/segaboy/vulkan-netbsd/main/scripts/setup-env.sh
sh setup-env.sh
. /root/.profile

# glslang の構築(Mesa 用依存項)
ftp https://raw.githubusercontent.com/segaboy/vulkan-netbsd/main/scripts/build-glslang.sh
sh build-glslang.sh

# Mesa と Lavapipe ドライバーのビルド
ftp https://raw.githubusercontent.com/segaboy/vulkan-netbsd/main/scripts/build-mesa.sh
sh build-mesa.sh --build

# ドライバと ICD マニフェストのインストールと登録検証
ftp https://raw.githubusercontent.com/segaboy/vulkan-netbsd/main/scripts/install-mesa.sh
sh install-mesa.sh

再試行について

  • build-mesa.sh --build
    は Mesa をクローン・構成・コンパイルし、
    libvulkan_lvp.so
    を生成します。
  • install-mesa.sh
    でインストールと登録が行われます。
  • 中断対応: ビルドが中断した場合でも、同一コマンドを再実行するだけで、スクリプトは既存のビルド状態を検知して自動再開します。
  • 詳細な解説や SSH 環境からの実行については
    docs/01-environment-setup.md
    を参照してください。

ライセンスと注意

このリポジトリ内のスクリプト、ドキュメント、パッチはすべて MIT ライセンス(LICENSE ファイル参照)の下で公開されています。

関連ソフトウェアのライセンス

本プロジェクトでは第三者ソフトウェアを構築・インストール(オプションでの再配布)しますが、これらは以下の独自ライセンスに従います:

  • Mesa: 主に MIT ライセンス(一部コンポーネントは他)。
  • glslang: 寛容なライセンス(BSD 風、Apache 2.0、Khronos 条項など)。
  • LLVM: Apache 2.0 ライセンス(LLVM 例外条項付き)。
    • ※ LLVM は pkgsrc を通じて別途インストールしており、本プロジェクトでは再配布していません。

プレビルトアートの注意点

scripts/package-artifacts.sh
で生成するプレビルトアートは、各プロジェクトの帰属を保持するため、関連するライセンス文章(
share/licenses/
内)をバンドルします。公開時にはこれらのファイルをそのまま維持してください。

同じ日のほかのニュース

一覧に戻る →

2026/07/03 6:03

バージニア州、地理的位置データ販売を禁止

## Japanese Translation: 提供されたテキストは、一貫した記事ではなく二進データ、符号化文字、および読み取れない内容のみから構成されているため、要約することができません。事実や日付、製品名を含む標準的な記事とは異なり、この源資料には有意義な分析に必要な理解可能性を欠いています。その解読不可能な性質から、特定の文脈、出来事、または背景情報は導き出すことができません。テキストを処理できないというこの状況のため、有益な洞察や関連する事実を引き出すことは不可能です。源入力を人間が読み取れる言語に変換されるまで、有効な要約を作成することは不可能です。その間もなお、中央テーマ、主要な論点、または具体的な物語を特定しようとするのは無駄であり、データには識別可能なストーリーが存在しないためです。最も重要な点は、この入力が混乱した非構造化形式のため、標準的な読解タスクに根本的に使用できないということです。

2026/07/03 3:41

エキスパンクス(2018)

## Japanese Translation: EXAPUNKS プロジェクトは、プレイヤーが現実的なハッキング活動に取り組み、「EXas」と呼ばれる自律エージェントを管理し、複雑なデジタルタスクを実行できるサンドボックス環境を提供します。従来のシミュレーションとは異なり、このエコシステムではユーザーが現実世界の物体を操作したり、実際のネットワークを侵害したりし、その侵害された状態の中でゲーム世界内で安全に行動することができます。体験の中核には、秘密のヒント、コメント、チュートリアル、EXas をプログラミングしてファイルを破棄させたり、自己複製したり、他のエージェントを停止させたり、痕跡を残さずに姿を消させたりするための詳細を提供する公式 *TRASH WORLD NEWS* ズィンがあります。プレイヤーは銀行、大学、工場、テレビ局、高速道路の標識、ゲームコンソール、政府システム、さらには自身の肉体など幅広い対象を対象とし、その後「ПАСЬЯНС」(パシアンズ)、地域ロックをハッキングした後の「HACK*MATCH」、あるいは TEC Redshift 用のホームブロー開発などの代替ミニゲームにアクセスできます。物理的なデラックス版のズィンセットは、2020 年 4 月に Lulu でのオンデマンド印刷を通じて復活し、7 ドルプラス送料で提供されましたが、両方の号への注文が必要でした。開発者向けには、2018 年 7 月 16 日に詳細とともにリリースされた「Axiom VirtualNetwork+」があり、ホスト、ファイル、レジスタ、ゴール、そしてその API を通じた完全なパズル仕様機能を利用して、ホストスクリプトを記述した JavaScript ベースの「バーチャルネットワーク」を作成することでカスタムパズルの作成が可能になります。2018 年と 2020 年のこれらのリリース以降、専用のコミュニティが栄え、標準的な商業制約を超えたサイバーセキュリティの探求やイノベーションを促進し続けます。

2026/06/28 8:36

現実には驚くほど多くの詳細が存在する (2017)

## Japanese Translation: 私たちが単純なものとして扱っている多くのタスク—地下室の階段を築くことや水を沸かすことなど—is、実行前に深い調査が必要となる重要な細部を隠しています。著者の父は 18 歳でコロンビアから北米へ移住し、実地作業を通じて建築を教えてくれました(フェンスの取り替え、塹壕の掘削、床および小屋の築造など)。著者はフェンスの手すりを取り替える際、床を敷設し、地下室の階段を築く際にこの教訓を実際の経験として学びました。 二つの 2×12 に角度ブラケットを用いて作られた階段は一見単純に見えますが、複数の副次的タスクを含んでいます:切り取り角度を計算またはトラACING し、U ブラケットを取り付けること、および板材を固定することです。木材は乾燥するにつれて歪むため、2x12 を正しい角度に切り取ることは容易ではありません。視覚的な対齐も失敗するため、三角関数を使用するか、円鋸用ガイドを雇用するか、または計算だけよりも木目追跡の方法を好む必要があります。ブラケットを引かれた線上に合わせてからネジを取り付けた場合でも、最初にもうけホールを掘らないとネジが斜めに取り付けられてしまいます;ブラケットを数インチ移動して再 drilling することでより良い結果が得られます。2 インチより長いネジを使用すると、階段の踏み面から突き抜け足に刺さるリスクがあるため、短いネジが不可欠です。 同様に、沸騰は単に「100°C の水」ではありません。真の沸騰の前に小さな気泡が発生します。ガラス鍋はより高い温度を耐え、硫酸で清掃されたガラス容器では水を過加熱することができ、攪拌によって爆発的に飛び散ります。二つの液体の間にわずか一滴の水を挟むだけでも、沸騰せずに約 300°C に加熱でき、一般的な主張と矛盾します。これらのリスクは、充填ベッドとロケット軌道計画を必要とする工業プロセスにも広がっており、見えない力は正確なスロットル制御と使い回し可能なロケットのための慎重な重量管理を要求します。 歴史もこれらの教訓に反響しています:アルコール熱計は 18 世紀にジャン=アンドレ・デュリュがその非線形性を明らかにするまで標準的なものでした。重要な細部が見えないままにされる時、知的な行き詰まりが生じます—例えば、「すべてのデータは「偽造されている」と主張し気候変動を否定する代わりに、見落とした過ちを注意すること—。一度見えなかった細部が出会うと透明化し、進捗はそれを見無視する場合のみ停滞します(例:三角関数 versus トラACING を巡る家族の議論)。究極的に言えば、住宅修理、大規模なエンジニアリング、科学的探究における成功は、予期しない変数を積極的に探し求め、詳細な観察を受け入れ、表面的な仮説への依存を拒むことにかかっています。

NetBSD で Vulkan を動作させるための私の試み | そっか~ニュース