All approaches to keep OpenRC as default failed: - --ignore: pacman ignores it during fresh install provider resolution - --assume-installed=init-logind: ALPM doesn't check assume-installed for virtual providers - --ask=12: infinite loop (pacman re-adds elogind-dinit after each removal) - dummy package in custom repo: init-rc conflict hits via different path Dinit works because pacman --noconfirm naturally picks elogind-dinit (alphabetically before elogind-openrc), pulling dinit-rc which has no conflict. All inits (OpenRC, Runit, S6) remain selectable in the online installer. Changes: - buildiso: INITSYS='dinit', remove --assume-installed/--ask hacks - basestrap/main.py, packages/main.py: remove same hacks - profile.yaml: antergos-live-dinit for dinit, move openrc pkg to init-specific - packagechooser.conf (x2): default=Dinit, Dinit first in item list - packagechooser_dm.conf: *-dinit instead of *-openrc - README.md, README.pl.md, docs/*: update all OpenRC-first references - AGENTS.md: document dinit as default
2.3 KiB
2.3 KiB
title, layout, parent, nav_order
| title | layout | parent | nav_order |
|---|---|---|---|
| Dinit | default | Init Systems | 2 |
Dinit
Dinit is a modern init system designed for speed and correctness. Written in C++, it focuses on parallel service startup and dependency management without the bloat of systemd or the complexity of S6. Dinit is the default init system in Antergos NeXT.
Philosophy
Dinit aims to be a "better than OpenRC but simpler than S6" middle ground. It handles dependencies automatically (like systemd) but stays out of your way (like OpenRC). Services are defined in declarative config files, not shell scripts.
Who uses it?
- Not widely adopted by major distros yet
- Popular in DIY Linux builds (Linux From Scratch, custom embedded)
- Default init in Antergos NeXT; available in Artix as an alternative
Key concepts
| Concept | What it means |
|---|---|
| Service files | Declarative .conf files in /etc/dinit.d/ |
| Dependencies | Automatic — Dinit figures out start order |
| Parallel startup | Very fast — starts services concurrently |
| Process supervision | Optional — can restart crashed services |
Basic commands
# Start a service
dinitctl start sshd
# Stop a service
dinitctl stop sshd
# Enable at boot
dinitctl enable sshd
# Disable at boot
dinitctl disable sshd
# Check status
dinitctl status sshd
# List all services
dinitctl list
Example service file
/etc/dinit.d/sshd.conf:
type = process
command = /usr/bin/sshd -D
depends-on = dbus
depends-on = network
Comparison with OpenRC
| OpenRC | Dinit | |
|---|---|---|
| Service format | Shell scripts | Declarative config |
| Dependencies | Manual (need/use) |
Automatic |
| Speed | Fast | Very fast (more parallel) |
| Complexity | Low | Medium |
| Supervision | No built-in | Optional |
Should you use it?
Pick Dinit if:
- You want the fastest possible boot
- You like declarative config (YAML-like)
- You want automatic dependency resolution
- You're fine with a newer, actively developed init system
OpenRC is also available if you prefer shell scripts and a longer track record.