synit/notes/systemd-functions.md

107 lines
3.8 KiB
Markdown

---
title: 'What does systemd do?'
---
- ac-power: reports whether A/C power is connected
- activate: do socket activation (setup sockets, exec() on activity)
- analyze: "profile systemd", various renderings and checks of system state and config
- ask-password: secure password entry for e.g. cryptsetup
- backlight: saves/restores backlight brightness at shutdown/boot
- basic
- architecture: show some abstraction over current architecture
- escape: string escaping for e.g. shell (blearghhh)
- log: various kinds of logging (incl. syslog, journal, etc)
- ratelimit: generic rate limiting datastructure and utilities
- reboot: system call
- util
- in_initrd() predicate
- virt: detects whether, and what kind of, virtualization is in effect
- binfmt: registers binfmts with the kernel
- boot: bootctl etc: communicate with EFI (?) about successful/failed boots
- boot/efi: an actual EFI implementation?? can't be? maybe it's an EFI boot program. I don't know enough about this
- busctl: introspect contents of D-Bus
- cgls: "Recursively show control group contents"
- cgroups-agent: sends a message to unix socket /run/systemd/cgroups-agent
- cgtop: "Show top control groups by their resource usage"
- core
- automount
- dbus-*, lots of dbus things, wonder what they all are
- dynamic-user: dynamic user/group ID allocation for, like, temporary use?
- efi-random: incorporate any random seed passed down from EFI
- execute: execute programs. lots of code here!
- job: a job/worker manager system
- detect-virt: detect virtualization
- firstboot
- fsck: runs fsck
- fstab-generator
- getty-generator
- hibernate-resume: a little initrd program that runs when restoring from hibernation!
- home: manage "home areas"
- hostname management
- hwdb: a hardware database
- id128: various identifiers
- machine ID
- boot ID
- invocation ID
- import: image importing for containers presumably
- initctl: like telinit I guess
- journal: journald, etc
- kernel-install: when would this be used?
- libsystemd: ?
- libsystemd-network: implementations of network protocols?
- dhcp, dhcp6
- lldp
- libudev: ?
- login
- machine: machined: "Manage registrations of local VMs and containers"
- machine-id-setup: gives a machine a random persistent ID
- modules-load: load configured modules (for explicit loading, rather than on demand)
- mount: transient mounts
- network: various network services e.g. dhcp, lldp, route management, wifi management
- notify: "Notify the init system about service status updates"
- nspawn: "Spawn a command or OS in a light-weight container"
- nss-*
- oom: userspace OOM killer
- partition: partitioning tools
- pstore: ?
- random-seed: load/save random seed at boot/shutdown
- resolve: a full DNS resolver
- rfkill: radio power control
- run: "Run the specified command in a transient scope or service"
- shared
- shutdown
- sleep: enter sleep, hibernate, or both (?)
- sysctl: "Applies kernel sysctl settings"
- sysusers: creates system user accounts
- timedate, timesync: clock management, NTP etc
- tmpfiles: creates hierarchy under volatile/tmpfs areas of the filesystem (!) eg /run, /tmp etc
- udev (!!)
- vconsole: setup virtual consoles for e.g. utf8 mode
Unit names: "plain", "template", "instance" (of template).
Unit files:
- have a "scope" - "system", "global", "user". What does it mean?
- have a "type":
UNIT_SERVICE
UNIT_MOUNT
UNIT_SWAP
UNIT_SOCKET
UNIT_TARGET
UNIT_DEVICE
UNIT_AUTOMOUNT
UNIT_TIMER
UNIT_PATH
UNIT_SLICE
UNIT_SCOPE
- have a "state":
UNIT_ACTIVE
UNIT_RELOADING
UNIT_INACTIVE
UNIT_FAILED
UNIT_ACTIVATING
UNIT_DEACTIVATING
UNIT_MAINTENANCE
Lots of code spent on argv parsing