A boot animation showing stages of systemd as a tree

  • Rust 85%
  • Nix 8.4%
  • Python 4.2%
  • Nushell 2.1%
  • Shell 0.3%
Repository files (latest commit first)
Filename Latest commit message Latest commit date

a7e33b453a

ci/woodpecker/push/checks Pipeline was canceled

ci/woodpecker/push/publish-release-and-update-pr Pipeline was successful

test: drop the scripted initrd sample machine now that NixOS removed it

2026-11-09 21:54:18 +01:00
.cargo refactor: reorganise flake, tests and repo tasks 2026-10-21 12:12:49 +02:00
.woodpecker ci: move CI tasks into Nushell scripts and update dependencies weekly 2026-11-05 19:59:06 +01:00
bootvine chore: release v0.1.3 2026-11-05 19:52:10 +00:00
ci ci: sync the shared CI tasks 2026-11-05 20:45:36 +01:00
docs test: drop the scripted initrd sample machine now that NixOS removed it 2026-11-09 21:54:18 +01:00
nix ci: sync the shared CI tasks 2026-11-05 20:45:36 +01:00
scripted-demos feat: show why units failed, with their last journal lines 2026-10-30 14:59:10 +01:00
vm-tests test: drop the scripted initrd sample machine now that NixOS removed it 2026-11-09 21:54:18 +01:00
xtask refactor: keep recordings on an orphan branch 2026-10-30 19:59:46 +01:00
.envrc boot-tree: libdbus feed thread, dedicated VT, stage sections, bead timeline, demo example 2026-10-11 15:54:28 +02:00
.gitignore refactor: keep recordings on an orphan branch 2026-10-30 19:59:46 +01:00
.pre-commit-config.yaml ci: add Woodpecker checks, Cachix config and conventional commit hooks 2026-10-21 12:49:34 +02:00
.rustfmt.toml refactor: reorganise flake, tests and repo tasks 2026-10-21 12:12:49 +02:00
Cargo.lock chore: release v0.1.3 2026-11-05 19:52:10 +00:00
Cargo.toml feat: show why units failed, with their last journal lines 2026-10-30 14:59:10 +01:00
CHANGELOG.md chore: release v0.1.3 2026-11-05 19:52:10 +00:00
flake.lock boot-tree: live systemd boot dependency tree on a dedicated VT 2026-10-11 15:54:28 +02:00
flake.nix ci: move CI tasks into Nushell scripts and update dependencies weekly 2026-11-05 19:59:06 +01:00
LICENSE fix: add license 2026-10-21 11:27:58 +02:00
README.md refactor: keep recordings on an orphan branch 2026-10-30 19:59:46 +01:00
release-plz.toml ci: open a release pull request for every unreleased change 2026-10-30 20:09:58 +01:00
rust-toolchain.toml boot-tree: live systemd boot dependency tree on a dedicated VT 2026-10-11 15:54:28 +02:00

A live tree of systemd jobs on the boot console, in the spirit of nix-output-monitor. It replaces the scrolling kernel and systemd lines with the units still pending and, in the room the tree leaves, a timeline of the slowest ones that ran.

I started bootvine out of frustration with the boot screen of most Linux distributions: a wall of log lines scrolling past too fast to read, which never gave me any idea of what was going on.

A boot through the initrd into stage 2, with one failed unit

It also follows shutdowns, answers passphrase prompts such as a LUKS unlock in place, and shows why a unit failed with its last journal lines. The guide walks through each part of the screen.

Requirements

  • systemd ≥ 246 as PID 1
  • libdbus and libsystemd
  • a virtual terminal
  • a systemd initrd, to show the boot from the initrd as well as stage 2

See Install for each distribution.

Try it without installing

With Nix, boot a sample NixOS machine with slow and failing units in a QEMU window, without touching your system's boot:

nix run git+https://codeberg.org/wvhulle/bootvine#sample-vm-slow-services

It logs in as root; poweroff shows the shutdown. The guide lists the other sample machines and the scripted demos that play in a terminal.

Documentation

License

GPL-3.0-or-later.