mirror of
https://github.com/troglobit/finit.git
synced 2026-10-01 05:22:48 +07:00
Transform keventd from a power-supply monitor + basic hotplug handler into
a full udev-compatible device manager.
Rules engine (rules.c):
- Full .rules file parser covering all udev key types: ACTION, KERNEL,
SUBSYSTEM, DEVPATH, ENV, ATTR, SYSCTL, TAG, RESULT, PROGRAM, TEST,
parent-chain KERNELS/SUBSYSTEMS/ATTRS/DRIVERS, and more
- Pattern matching: plain string, fnmatch glob, and pipe-separated alternatives
- Operators: ==, !=, =, +=, -=, :=
- Assignments: NAME=, MODE=, OWNER=, GROUP=, SYMLINK+=, ENV{k}=, TAG+=, RUN+=
- IMPORT{program|file|builtin|parent|cmdline|db}=
- PROGRAM= with stdout capture for subsequent RESULT== matching
- GOTO=/LABEL= flow control
- Loads *.rules from /lib/udev/rules.d, /run/udev/rules.d, /etc/udev/rules.d
and an optional extra directory (-r DIR); reloads on SIGHUP
Builtin framework (builtin.c):
- kmod: load module by MODALIAS or explicit alias
- hwdb: match device against *.hwdb text files in udev hwdb dirs; builds
correct lookup key per subsystem — evdev:input:b*v*p*e* for input,
usb:v*p* for USB, raw modalias for PCI/platform
- path_id: build stable ID_PATH / ID_PATH_TAG from sysfs topology (PCI, USB,
ATA, NVMe, platform, ACPI, virtio)
- usb_id: read idVendor/idProduct/bcdDevice/serial from sysfs; look up
ID_VENDOR_FROM_DATABASE and ID_MODEL_FROM_DATABASE from usb.ids
(hwdata package) when available; silent fallback when absent
- input_id: classify input devices (keyboard, mouse, joystick, touchscreen,
touchpad) from evdev capability bitmasks in sysfs
- net_id: generate predictable names — MAC-based enx<mac> and PCI-slot-based
enp<bus>s<dev>[f<func>]
- blkid: probe filesystem type, UUID, and label via libblkid; sets ID_FS_*
and ID_PART_TABLE_* properties
Network interface renaming (uevent.c):
- netdev_add() renames interfaces via SIOCSIFNAME when a NAME= rule matched,
then sets the Finit dev/ condition on the final name; and any setup using
persistent interface naming via udev rules
Device node and symlink improvements (uevent.c):
- NAME=, MODE=, OWNER=, GROUP= overrides from matched rules applied at
mknod/chown time, falling back to the built-in permission table
- SYMLINK+= links from rules applied alongside built-in by-id/by-path links
Device property database (udevdb.c):
- Persist per-device E:/S:/I: records to /run/udev/data/ on ADD/CHANGE,
delete on REMOVE; IMPORT{db}= restores saved properties into event env
Build:
- libblkid (util-linux) is now required for keventd
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
158 lines
4.0 KiB
YAML
158 lines
4.0 KiB
YAML
site_name: User's Guide
|
|
site_description: Fast Init for Linux Systems
|
|
site_url: https://finit-project.github.io
|
|
repo_url: https://github.com/finit-project/finit
|
|
repo_name: Finit Project
|
|
copyright: Copyright © 2008-2026 Joachim Wiberg
|
|
docs_dir: doc/
|
|
edit_uri: edit/master/doc/
|
|
extra_css:
|
|
- extra.css
|
|
|
|
exclude_docs: |
|
|
TODO.md
|
|
ChangeLog.md
|
|
README.md
|
|
|
|
nav:
|
|
- Getting Started:
|
|
- Introduction: index.md
|
|
- Features: features.md
|
|
- Quick Example: example.md
|
|
- Building: build.md
|
|
- Configuration:
|
|
- Overview: config/index.md
|
|
- Migration Guide: config/migration.md
|
|
- Files & Layout: config/files.md
|
|
- Conditions: conditions.md
|
|
- Runlevels: config/runlevels.md
|
|
- One-shot Tasks: config/task-and-run.md
|
|
- Services:
|
|
- Syntax: config/services.md
|
|
- Options: config/service-opts.md
|
|
- Environment: config/service-env.md
|
|
- Synchronization: config/service-sync.md
|
|
- Wrapper Scripts: config/service-wrappers.md
|
|
- Run-parts Scripts: config/runparts.md
|
|
- TTY & Console: config/tty.md
|
|
- Environment Variables: config/env.md
|
|
- Logging: config/logging.md
|
|
- Cgroups: config/cgroups.md
|
|
- Capabilities: config/capabilities.md
|
|
- Templating: config/templating.md
|
|
- SysV Compatibility: config/sysv.md
|
|
- Rescue Mode: config/rescue.md
|
|
- Limitations: config/limitations.md
|
|
- Usage:
|
|
- Commands & Status: initctl.md
|
|
- Switch Root: switchroot.md
|
|
- Rebooting & Halting: commands.md
|
|
- Command Line Options: cmdline.md
|
|
- Managing Services: service.md
|
|
- Signals: signals.md
|
|
- Reference:
|
|
- Runlevels Overview: runlevels.md
|
|
- Runparts & rc.local: runparts.md
|
|
- Plugins: plugins.md
|
|
- Watchdog: watchdog.md
|
|
- keventd: keventd.md
|
|
- udev Rule Matching: udev-matching.md
|
|
- D-Bus Integration: dbus.md
|
|
- Service State Machine: state-machine.md
|
|
- Distributions: distro.md
|
|
- Requirements: requirements.md
|
|
|
|
theme:
|
|
logo: img/logo.png
|
|
name: material
|
|
features:
|
|
- toc.follow
|
|
# - toc.integrate
|
|
- navigation.path
|
|
- navigation.instant
|
|
- navigation.instant.progress
|
|
- navigation.tracking
|
|
- navigation.indexes
|
|
# - navigation.tabs
|
|
# - navigation.sections
|
|
# - navigation.expand
|
|
# - navigation.top
|
|
# - navigation.footer
|
|
- search.highlight
|
|
- search.share
|
|
# - content.action.edit
|
|
- content.code.copy
|
|
- content.code.annotate
|
|
- content.footnote.tooltips
|
|
palette:
|
|
- media: "(prefers-color-scheme: light)"
|
|
scheme: default
|
|
primary: orange
|
|
accent: orange
|
|
toggle:
|
|
icon: material/weather-night
|
|
name: Switch to dark mode
|
|
- media: "(prefers-color-scheme: dark)"
|
|
scheme: slate
|
|
primary: black
|
|
accent: black
|
|
toggle:
|
|
icon: material/weather-sunny
|
|
name: Switch to light mode
|
|
|
|
markdown_extensions:
|
|
- admonition
|
|
- attr_list
|
|
- footnotes
|
|
- pymdownx.blocks.caption
|
|
- pymdownx.critic
|
|
- pymdownx.caret
|
|
- pymdownx.keys
|
|
- pymdownx.mark
|
|
- pymdownx.tilde
|
|
- pymdownx.details
|
|
- pymdownx.superfences
|
|
- pymdownx.highlight:
|
|
anchor_linenums: true
|
|
- pymdownx.inlinehilite
|
|
- pymdownx.emoji:
|
|
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
|
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
|
- pymdownx.snippets
|
|
- pymdownx.tabbed:
|
|
alternate_style: true
|
|
- tables
|
|
- toc:
|
|
permalink: true
|
|
|
|
plugins:
|
|
- search
|
|
- callouts
|
|
- glightbox:
|
|
touchNavigation: true
|
|
loop: false
|
|
effect: zoom
|
|
slide_effect: slide
|
|
width: 100%
|
|
height: auto
|
|
zoomable: true
|
|
draggable: true
|
|
skip_classes:
|
|
- custom-skip-class-name
|
|
auto_themed: true
|
|
auto_caption: false
|
|
caption_position: bottom
|
|
background: black
|
|
shadow: false
|
|
manual: false
|
|
|
|
extra:
|
|
generator: false
|
|
homepage: https://finit-project.github.io/
|
|
version:
|
|
provider: mike
|
|
social:
|
|
- icon: fontawesome/brands/github
|
|
link: https://github.com/finit-project/finit
|
|
name: Finit on GitHub
|