Commit Graph
125 Commits
Author SHA1 Message Date
Joachim Wiberg 665d212bd6 Add support for configuring cgroups and their settings on services
This patch adds support for modifying settings for the default cgroups;
init, user, and system, as well as adding up to a total of eight groups
for the system.

Services can now be assigned to a cgroup, with optional extra settings
for that particular process group.  The syntax is slightly contrivied
but follows the overall Finit syntax of prop:value,prop':value', e.g.

   cgroup maint cpu.weight:123,mem.max:10000

Starting with the introduction of rlimits, a group of services sharing
the same .conf file can share the same (locally "global") rlimits, and
now also the same cgroup, e.g.

    cgroup.maint
    service foo
    service bar cgroup:mem.max:1000

This puts foo and bar in the same top-level cgroup 'maint', with an
extra memory restriction on bar for max 1000 bytes memory.

NOTE: 'mem.' is a Finit extension, a shorthand for cgroups2 'memory.'

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-03-30 10:21:01 +02:00
Joachim Wiberg 544180aa0b contrib: update example configs
- check command removed
- disable modules by default (void)
- OpenSSH requires absolute path (void)
- Read keymap from env (alpine)
- minor cleanup/reordering for consistency

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-28 10:23:15 +01:00
Joachim Wiberg 6862d7cd5f Refactor --with-sysconfig, default to /etc/default and /etc/conf.d
Both Debian and Builroot based systems use /etc/default and
Alpine Linux use /etc/conf.d, so let's just put both in by
default.  If the directories exist we monitor them.

The --with-syconfig configure option is now disabled by default.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-28 09:53:48 +01:00
Joachim Wiberg 01cd9ec358 contrib: debian: rsyslogd provides syslogd cond
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-26 16:42:43 +01:00
Joachim Wiberg ea9f88b9fb contrib: alpine: update to use env: files for service arguments
- Check for env in /etc/conf.d on Alpine
- Update all services with their respective env: file
- Disable default modules, noew modprobe plugin should handle this
- Add watchdog service
- Rename syslogd -> syslog, in case we want to integrate sysklogd

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-25 18:16:53 +01:00
Joachim Wiberg da2dde879e contrib: debian: update to use env: files for service arguments
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-25 18:16:53 +01:00
Joachim Wiberg 8c7a3bc476 contrib: add sysklogd to available services on debian
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-21 17:12:10 +01:00
Magnus Malm 97196d6520 contrib: alpine: Add finit builtin watchdog daemon
Signed-off-by: Magnus Malm <magnusmalm@gmail.com>
2021-02-17 10:34:10 +01:00
Magnus Malm 20c5788430 contrib: debian: Change sshd config to use absolute path
Signed-off-by: Magnus Malm <magnusmalm@gmail.com>
2021-02-15 13:53:22 +01:00
Joachim Wiberg 47d89ba2f6 contrib: Drop --enable-progress, enabled by default now
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-14 20:53:52 +01:00
Joachim Wiberg fe969b64a0 contrib: alpine: fix symbolic link loop
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-12 00:36:18 +01:00
Joachim Wiberg cac321c16e Minor, simplify
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-11 21:50:45 +01:00
Joachim Wiberg 10d4964106 Remove last traces of inetd support
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-11 21:50:17 +01:00
Joachim Wiberg 782da9d091 contrib: alpine: fix reboot/shutdown/halt/suspend symlinks
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-11 21:05:01 +01:00
Joachim Wiberg a45e2c6831 contrib: alpine: remove all plugins as well on uninstall
Old plugins can cause Finit to misbehave.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-11 20:56:23 +01:00
Joachim Wiberg 111f5b163a contrib: alpine: first draft uninstall script
Purpose of script is to restore an Alpine Linux install to its default
state.  Some trace elements of Finit may remain, but critical parts like
reverting back to /bin/busybox as /sbin/init are in place at least.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-11 20:12:04 +01:00
Joachim Wiberg ed0e65e5bb contrib: alpine: enable acpid, crond, ntpd by default
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-11 20:11:33 +01:00
Joachim Wiberg 46c028f58c contrib: drop local symlinks, created by Makefile on install
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-10 13:50:52 +01:00
Joachim Wiberg 5105ff91d9 contrib: install .conf files from installed (fixed) services
This fixes the problem with lingering Makefile's in /etc/finit.d/ on the
target systems.  We also get the new enabled services properly set up.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-10 13:46:32 +01:00
Joachim Wiberg 91750fd1da contrib: use "new" enabled/ directory for pre-enabled services
The initctl tool's enable/disable command can then be used to manage
these services after install.  This is what most users expect.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-10 13:45:06 +01:00
Joachim Wiberg 4ca5204acb contrib: drop absolute paths => simpler conditions
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-10 13:26:08 +01:00
Joachim Wiberg a8b113185d Major change, rename <svc/...> conditions to <pid/...> conditions
The <svc/foo> condition was created to synchronize starting services,
hence the abbreviation.  Example: the Quagga ripd needs to start after
the zebra daemon to ensure its UNIX domain socket is active, otherwise
events may be lost.

However, considering that synchronization was implemented with UNIX PID
files, e.g. waiting for /var/run/quagga/zebra.pid to be created, the
condition abbreviation name <svc/foo> was hard to understand by most
newcomers to Finit.  To make matters worse, a new feature to track or
even create PID files for services that don't create one themselves,
using the syntax 'pid:/path/to/foo.pid' was added.

Connecting the dots between these wasn't obvious.

This patch renames service conditions pid conditions and also adds
a compatibility wrapper to the Finit .conf parser.  Any condition
given in old .conf files with 'svc/' prefix are internally renamed
'pid/', along with a LOG_INFO notice in syslog.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-09 22:07:03 +01:00
Joachim Wiberg 4a83c95d2b contrib: simplify example service stanzas; skip path, reduce conds
- Absolut paths are only necessary in case of ambiguities
- Without absulute paths conditions are shorter, e.g. <svc/syslogd>
- Drop <net/lo/up> condition for SSH daemons, not necessary

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-09 15:07:09 +01:00
Joachim Wiberg 1a5aabc034 Update configure examples and build scripts with correct paths
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-08 17:27:05 +01:00
Joachim Wiberg 06fdcf51b9 configure: revert to using GNU defaults, update summary
- Changing the GNU defaults is messy.  The best way is to leave them
  alone and let the user set their install locations themselves.
- Show --exec-prefix in config Summary, that's where the binaries go

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2021-02-08 07:58:25 +01:00
Tobias Waldekranz 4febd288ef Defer all filesystem setup to the user via /etc/fstab
Traditionally, Finit has setup _some_ filesystems that are Nice To
Have (tm), using options that do the Right Thing (tm).

On the one hand, this is very convenient for users that don't
necessarily know what a reasonable mode= value is for /tmp etc. (pun
intended).  It also means that mountpoints can be created if they
don't exist.

On the other hand it means that all users are forced to submit to the
choices made by Finit.  Also, different filesystems where spread out
at many different points in `main()`, meaning that the fact that
`/proc` was available at a given hook point did not imply that `/sys`
was, for example.

Instead, defer _all_ filesystem setup to the user by simply calling
`mount -a`.  We then ship an example `fstab` that shows how to
re-create the old behavior.
2020-10-20 09:31:58 +02:00
Joachim Nilsson ee4768ba53 contrib: Let tty1 be available in runlevel 1 on Void and Alpine
The default runlevels are otherwise 2-5.  Usually, however, when
debugging a system you may want to have runlevel 1 (single user
level) available to log in.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-04-22 21:15:48 +02:00
Joachim Nilsson c7c0c723d6 Update TTY speed recommendations in README.md and Debian defaults
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-04-22 21:15:48 +02:00
Joachim Nilsson aa08221666 configure: Remove --enable-rw-rootfs detect using /etc/fstab instead
This patch removes the --enable-rw-rootfs build flag.  Like OpenRC we
now check /etc/fstab instad; if `/` is listed *and* doesn't have the
`ro` flag set, we remount / read-write.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-04-22 20:08:52 +02:00
Joachim Nilsson 2759992dd2 contrib/: Fix parallell build, mkdir -p *all* the things
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-02-06 17:30:33 +01:00
Joachim Nilsson b2b6fd25d8 Relocate service helper script to contrib/
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-01-22 22:28:18 +01:00
Joachim Nilsson a8183b0559 Check if symlink exists before trying to create symlink
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-01-22 20:45:05 +01:00
Joachim Nilsson 227e4fa097 Create destination contrib/*/finit.d dir if missing
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-01-22 19:03:06 +01:00
Joachim Nilsson 0337985422 Ignore generated files
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-01-22 09:02:19 +01:00
Joachim Nilsson f59d41cdec Add silly process monitor script to distribution.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-01-22 09:02:18 +01:00
Joachim Nilsson 1cc998eb60 Distribute and install contrib/ directory with all examples
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-01-22 09:01:58 +01:00
Joachim Nilsson a4ece0fe3f Add log rotate, log, condition and non-SIGHUP example .conf sample
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-01-16 17:41:03 +01:00
Joachim Nilsson 3ef75ac176 debian: Mention the possibility to change the default init to Finit
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 21:49:19 +02:00
Joachim Nilsson 83b613581a void: Clean up README
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 21:48:58 +02:00
Joachim Nilsson d4c28f87d1 void: Update installation instruction, recommend manual edit of grub
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 19:15:28 +02:00
Joachim Nilsson 5b53f001a2 Revert parts of c2bf7d3, core-services scripts not executable
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 11:24:29 +02:00
Joachim Nilsson 5301bcb4f1 void: Drop-privs to correct @username:group
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 10:51:39 +02:00
Joachim Nilsson c2bf7d3a50 void: Call runit core startup scripts using run-parts at bootstrap
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 10:30:21 +02:00
Joachim Nilsson 685771aef2 void: Simplify uuidd service description
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 10:29:53 +02:00
Joachim Nilsson 3ebb697910 Install a proper #!/bin/sh style rc.local on Void Linux
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 10:18:11 +02:00
Joachim Nilsson 1e8a45cbe2 void: Remove non-working hack to create /run/uuid in <service>.conf
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 10:06:12 +02:00
Joachim Nilsson dd8dd67106 void: Create /run/uuid directory and start uuidd as @uuid:uuid
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 09:14:22 +02:00
Joachim Nilsson 84369ab8b5 void: No syslogd to wait for in Void Linux
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 08:54:24 +02:00
Joachim Nilsson 7ef3959a45 Minor, consistency in presentation
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-18 08:14:29 +02:00
Joachim Nilsson 858f793ad2 Initial support for Void Linux
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-10-17 23:53:24 +02:00