
2026/11/09 22:02
ブートコンソール上のシステムド・ジョブの実行ツリー
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
サマリー:
本稿は、標準的なブートログが読み込めない状態を、systemd ジョブのインタラクティブなツリーに置き換えるための Rust ユーティリティ Bootvine を紹介しています。
nix-output-monitor のようなプロジェクトの理念に基づいており、Linux の起動時に発生するカーネルテキストの壁をスクロールすることによるユーザーの不満に対処することを目的としています。Bootvine は、待機中のユニットへの即時可視性を提供し、最も遅いサービスを強調表示し、シャットダウンを追跡し、仮想ターミナル上に直接的に特定の失敗理由(最後のジャーナル行を含む)を表示します。また、LUKS 解読などのパスフレーズプロンプトに応答するなど、重要なインタラクションも処理します。
技術要件には、PID 1 として動作する
systemd ≥ 246、および libdbus と libsystemd のインストールが含まれます。本プロジェクトは NixOS や Ubuntu を含む各種ディストリビューションに対応しており、2026 年 11 月にコミットされた新しいリリース(v0.1.3)には、プレイ可能のターミナルデモを備えた拡張ドキュメントと自動テスト環境が含まれています。ユーザーは提供されているサンプル VM (nix run...) を使用してシステムで安全に失敗をシミュレーションでき、ホストの安定性に影響を与えないように設計されています。リポジトリでは Woodpecker による CI パイプラインを採用し、依存関係を週次更新するとともに、記録用としてオルファンブランチを利用しています。本文
Bootvine:システムドのブート過程を可視化するツリー構造
最新コミット履歴(レポジトリファイル別)
以下の表に、主要ファイルへの最新のコミット情報と日付を示します。
| ファイル | カテゴリ | コミット内容・変更点 | 日時 |
|---|---|---|---|
| CI パイプライン | - : キャンセル- : 成功 | - |
, , | 機能廃止 | NixOS から削除されたため、スクリプトによる サンプルマシンの機能を廃止 | 2026/11/09 21:54 (+01) |
, , | リリース管理 | v0.1.3 のリリース対応 | 2026/11/05 19:52 (UTC) |
, | CI リファクタリング | CI 関連タスクを Nushell スクリプトへ移行し、依存関係を週単位で更新 | 2026/11/05 19:59 (+01) |
, | デバッグ機能強化 | ユニットが失敗した理由と、直近のジャーナルログを表示する機能を追加 | 2026/10/30 14:59 (+01) |
| CI自動化 | CI で未リリースの変更に対して自動でリリース用 PRを起票 | 2026/10/30 20:09 (+01) |
, , | リポジトリ整理 | 記録ファイルを孤児ブランチに保持するよう整理済み | 2026/10/30 19:59 (+01) |
, , , | 環境構築 | : 専用仮想ターミナルで systemd ブート依存ツリーの実行機能実装 | 2026/10/11 15:54 (+02) |
, , | 品質向上 | - CI に Woodpecker チェック、Cachix 設定、Conventional Commits フックを追加 - ライセンス追加 - テスト・タスク整理再実施 | 2026/10/21 |
プロジェクト概要
Bootvine は、
nix-output-monitor の理念に基づき開発されたプロジェクトです。ブートコンソール上に表示される systemd タスクのライブツリーを表示します。
従来の問題点
多くの Linux ディストリビューションのブート画面は、以下の課題があります。
- ログ文字列が速すぎすぎて読みづらい
- カーネルログや
ログ行がただ流れるだけで、何が起きているか分かりにくいsystemd - スクロールが必要なため、特定のイベントを見逃しやすい
Bootvine の特徴
これらの不満から開発された本プロジェクトは、以下の機能を提供します。
- ツリー形式表示: まだ実行待ちのユニット(タスク)をツリー構造で可視化
- 時間軸履歴: 遅延したユニットの実行履歴をその下に時系列で表示
- シャットダウン追跡: システム停止時の動きを追跡可能
- パスワード入力補助: LUKS デクリプションなどのパスフレーズプロンプトへの回答機能
- 失敗理由の可視化: ユニットが失敗した理由と、最後のジャーナルログを表示
詳細については ガイド をご参照ください。
要件 (Requirements)
動作に必要な環境は以下の通りです。
≥ 246 (PID 1 として動作していること)systemd
およびlibdbuslibsystemd- 仮想ターミナル (Virtual Terminal)
- システムのブートプロセス自体、および
ステージ 2 のブートを示すため:initrdsystemd initrd
インストール方法については
を参照してください。#install
サンプル仮想マシンでの試行 (Try it without installing)
システム自体を触ることなく、QEMU ウィンドウ上でサンプル NixOS マシンを起動できます。 動作が遅いユニットや失敗するユニットを含む環境を模擬したデモです。
以下のコマンドを実行します:
nix run git+https://codeberg.org/wvhulle/bootvine#sample-vm-slow-services
- ログイン: ルートユーザーとしてログインします。
- シャットダウン確認:
コマンドを使用すると、システム停止動作を確認できます。poweroff - その他のデモ: 他のサンプルマシンや、ターミナル内で再生可能なスクリプト化されたデモについては
をご参照ください。#guide
ドキュメントとガイド (Documentation)
詳細情報は以下のドキュメントをご覧ください。
- Guide: 画面全体への解説
- ツリー表示の仕組み
- 時間軸と遅延処理
- 失敗時の動作とジャーナルログ
- シャットダウン・パスフレーズプロンプトなど
- Install: インストール手順
- NixOS、Ubuntu およびその他のディストリビューションへの対応
- Configuration: 設定項目
- カラー設定
- タイミング調整
- コンソール設定
- Architecture: アーキテクチャ
- ブートプロセスの追跡方法
- コンソールの占有メカニズム
- Development: 開発環境
- コードスタイル
- 開発環境の設定
License: GPL-3.0-or-later