1config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
2	bool
3	# see src/basic/architecture.h
4	default y if BR2_arc
5	default y if BR2_aarch64 || BR2_aarch64_be
6	default y if BR2_arm || BR2_armeb
7	default y if BR2_i386 || BR2_x86_64
8	default y if BR2_m68k
9	default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
10	default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
11	default y if BR2_nios2
12	default y if BR2_riscv
13	default y if BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb
14	default y if BR2_sparc || BR2_sparc64
15	default y if BR2_s390x
16
17menuconfig BR2_PACKAGE_SYSTEMD
18	bool "systemd"
19	depends on BR2_INIT_SYSTEMD
20	depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
21	depends on BR2_USE_MMU
22	depends on !BR2_STATIC_LIBS # kmod
23	depends on BR2_TOOLCHAIN_USES_GLIBC
24	depends on BR2_TOOLCHAIN_HAS_SSP
25	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 # LOOP_SET_BLOCK_SIZE
26	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5
27	depends on BR2_HOST_GCC_AT_LEAST_5 # host-systemd
28	select BR2_PACKAGE_HAS_UDEV
29	select BR2_PACKAGE_DBUS if !BR2_PACKAGE_DBUS_BROKER # runtime
30	select BR2_PACKAGE_LIBCAP
31	select BR2_PACKAGE_LIBXCRYPT
32	select BR2_PACKAGE_UTIL_LINUX
33	select BR2_PACKAGE_UTIL_LINUX_LIBS
34	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
35	select BR2_PACKAGE_UTIL_LINUX_AGETTY
36	select BR2_PACKAGE_UTIL_LINUX_MOUNT
37	select BR2_PACKAGE_UTIL_LINUX_FSCK
38	select BR2_PACKAGE_UTIL_LINUX_SULOGIN
39	select BR2_PACKAGE_KMOD
40	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod-tools
41	select BR2_PACKAGE_KMOD_TOOLS
42	select BR2_TARGET_TZ_INFO
43	select BR2_NEEDS_HOST_UTF8_LOCALE
44	select BR2_PACKAGE_HOST_SYSTEMD # for systemctl preset-all, during target-finalize
45	help
46	  systemd is a system and service manager for Linux,
47	  compatible with SysV and LSB init scripts. systemd provides
48	  aggressive parallelization capabilities, uses socket and
49	  D-Bus activation for starting services, offers on-demand
50	  starting of daemons, keeps track of processes using Linux
51	  cgroups, supports snapshotting and restoring of the system
52	  state, maintains mount and automount points and implements
53	  an elaborate transactional dependency-based service control
54	  logic.  It can work as a drop-in replacement for sysvinit.
55
56	  Kernel versions below 4.15 ("recommended baseline") have
57	  significant gaps in functionality and are not recommended
58	  for use with this version of systemd.
59
60	  Systemd requires a Linux kernel >= 3.15 with the following
61	  options enabled:
62
63	  - CONFIG_DEVTMPFS
64	  - CONFIG_CGROUPS (it is OK to disable all controllers)
65	  - CONFIG_INOTIFY_USER
66	  - CONFIG_SIGNALFD
67	  - CONFIG_TIMERFD
68	  - CONFIG_EPOLL
69	  - CONFIG_UNIX (it requires CONFIG_NET, but every other flag in
70	    it is not necessary)
71	  - CONFIG_SYSFS
72	  - CONFIG_PROC_FS
73	  - CONFIG_FHANDLE (libudev, mount and bind mount handling)
74
75	  - CONFIG_NET_NS (Required for PrivateNetwork=, used in some
76	    systemd units)
77
78	  - CONFIG_USER_NS (Required for PrivateUsers=)
79
80	  - CONFIG_AUTOFS_FS / CONFIG_AUTOFS4_FS
81	  - CONFIG_TMPFS_POSIX_ACL
82	  - CONFIG_TMPFS_XATTR
83
84	  These options will be automatically enabled by Buildroot if
85	  it is responsible for building the kernel. Otherwise, if you
86	  are building your kernel outside of Buildroot, make sure
87	  these options are enabled.
88
89	  Systemd also provides udev, the userspace device daemon.
90
91	  The selection of other packages will enable some features:
92
93	  - acl package will add support for multi-seat.
94	  - xz and/or l4 packages will add compression support in
95	    journal and coredump.
96	  - libcurl package will add support for systemd-journal-upload.
97	  - libgcrypt package will add support for journal sealing and
98	    DNSSEC verification in resolved.
99
100	  Notice that systemd selects the fsck wrapper from util-linux
101	  but no particular fsck.<fstype> is selected. You must choose
102	  the apropriate ones (e.g. e2fsck, from the e2fsprogs
103	  package) according to the system configuration.
104
105	  https://freedesktop.org/wiki/Software/systemd/
106
107if BR2_PACKAGE_SYSTEMD
108
109config BR2_PACKAGE_PROVIDES_UDEV
110	default "systemd"
111
112config BR2_PACKAGE_SYSTEMD_BOOT
113	bool "systemd-boot"
114	depends on BR2_i386 || BR2_x86_64
115	select BR2_PACKAGE_GNU_EFI
116	help
117	  systemd-boot is a simple UEFI boot manager which executes
118	  configured EFI images. The default entry is selected by a
119	  configured pattern (glob) or an on-screen menu.
120
121	  systemd-boot operates on the EFI System Partition (ESP)
122	  only. Configuration file fragments, kernels, initrds, other
123	  EFI images need to reside on the ESP. Linux kernels need to
124	  be built with CONFIG_EFI_STUB to be able to be directly
125	  executed as an EFI image.
126
127	  See the Grub2 help text for details on preparing an EFI
128	  capable disk image using systemd-boot: the instructions are
129	  exactly the same, except that the systemd-boot configuration
130	  files will be located in /loader/ inside the EFI partition.
131
132	  https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/
133
134config BR2_PACKAGE_SYSTEMD_INITRD
135	bool "Services for booting from initrd"
136	help
137	  Install various services that are only useful if systemd is
138	  run from an initrd.
139
140config BR2_PACKAGE_SYSTEMD_KERNELINSTALL
141	bool "install kernel-install and related files"
142	help
143	  kernel-install is used to install and remove kernel and
144	  initramfs images to and from the boot loader partition.
145	  The boot loader partition will usually be one of
146	  /boot, /efi, or /boot/efi.
147
148config BR2_PACKAGE_SYSTEMD_ANALYZE
149	bool "systemd-analyze"
150	help
151	  systemd-analyze may be used to determine system boot-up
152	  performance statistics and retrieve other state and tracing
153	  information from the system and service manager, and to
154	  verify the correctness of unit files.
155	  It is also used to access special functions useful for
156	  advanced system manager debugging.
157
158config BR2_PACKAGE_SYSTEMD_BOOT_EFI_ARCH
159	string
160	default "ia32"  if BR2_i386
161	default "x64"   if BR2_x86_64
162	depends on BR2_PACKAGE_SYSTEMD_BOOT
163
164config BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE
165	bool "enable journal remote tools"
166	select BR2_PACKAGE_LIBCURL
167	select BR2_PACKAGE_LIBMICROHTTPD
168	help
169	  journal remote functionality adds three tools:
170
171	  systemd-journal-gatewayd serves journal events over the
172	  network.
173
174	  systemd-journal-remote is a command to receive serialized
175	  journal events and store them to journal files.
176
177	  systemd-journal-upload will upload journal entries to the
178	  URL specified with --url=.
179
180	  https://www.freedesktop.org/software/systemd/man/systemd-journal-gatewayd.service.html
181	  https://www.freedesktop.org/software/systemd/man/systemd-journal-remote.service.html
182	  https://www.freedesktop.org/software/systemd/man/systemd-journal-upload.html
183
184config BR2_PACKAGE_SYSTEMD_BACKLIGHT
185	bool "enable backlight support"
186	help
187	  systemd-backlight is a service that restores the display
188	  backlight brightness at early boot and saves it at shutdown.
189
190	  https://www.freedesktop.org/software/systemd/man/systemd-backlight@.service.html
191
192config BR2_PACKAGE_SYSTEMD_BINFMT
193	bool "enable binfmt tool"
194	help
195	  systemd-binfmt is an early boot service that registers
196	  additional binary formats for executables in the kernel.
197
198	  http://www.freedesktop.org/software/systemd/man/systemd-binfmt.service.html
199
200config BR2_PACKAGE_SYSTEMD_COREDUMP
201	bool "enable coredump hook"
202	help
203	  systemd-coredump can be used as a helper binary by the
204	  kernel when a user space program receives a fatal signal and
205	  dumps core.
206
207	  https://www.freedesktop.org/software/systemd/man/systemd-coredump.html
208
209config BR2_PACKAGE_SYSTEMD_PSTORE
210	bool "enable pstore support"
211	default y
212	help
213	  When this features is enabled, additional tools and services
214	  are built to support archiving contents of the persistent
215	  storage filesytem.
216
217	  https://www.freedesktop.org/software/systemd/man/systemd-pstore.html
218
219config BR2_PACKAGE_SYSTEMD_FIRSTBOOT
220	bool "enable firstboot support"
221	help
222	  systemd-firstboot initializes the most basic system settings
223	  interactively on the first boot.
224
225	  https://www.freedesktop.org/software/systemd/man/systemd-firstboot.html
226
227config BR2_PACKAGE_SYSTEMD_HIBERNATE
228	bool "enable hibernation support"
229	select BR2_PACKAGE_SYSTEMD_INITRD
230	help
231	  When this features is enabled, additional tools and services
232	  are built to support suspending and resuming the system.
233
234	  https://www.freedesktop.org/software/systemd/man/systemd-sleep.html
235
236config BR2_PACKAGE_SYSTEMD_HOMED
237	bool "enable home daemon"
238	depends on BR2_TOOLCHAIN_HAS_THREADS # cryptsetup -> lvm2
239	depends on BR2_USE_MMU # cryptsetup -> lvm2
240	depends on !BR2_STATIC_LIBS # cryptsetup -> lvm2
241	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # cryptsetup -> json-c
242	select BR2_PACKAGE_CRYPTSETUP
243	select BR2_PACKAGE_OPENSSL
244	select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
245	select BR2_PACKAGE_UTIL_LINUX_LIBFDISK
246	help
247	  systemd-homed is a system service that may be used to create,
248	  remove, change or inspect home directories.
249
250	  https://www.freedesktop.org/software/systemd/man/systemd-homed.service.html
251
252comment "homed support needs a toolchain w/ threads, dynamic library"
253	depends on BR2_USE_MMU
254	depends on BR2_TOOLCHAIN_HAS_SYNC_4
255	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
256		BR2_STATIC_LIBS
257
258config BR2_PACKAGE_SYSTEMD_HOSTNAMED
259	bool "enable hostname daemon"
260	default y
261	help
262	  systemd-hostnamed is a system service that may be used as a
263	  mechanism to change the system's hostname.
264
265	  https://www.freedesktop.org/software/systemd/man/systemd-hostnamed.service.html
266
267config BR2_PACKAGE_SYSTEMD_HWDB
268	bool "enable hwdb installation"
269	default y
270	help
271	  Enables hardware database installation to /usr/lib/udev/hwdb.d
272
273	  Disabling this option improves first boot time (or every boot
274	  time in case of initramfs images) and saves several MB space.
275
276	  https://www.freedesktop.org/software/systemd/man/hwdb.html
277
278config BR2_PACKAGE_SYSTEMD_IMPORTD
279	bool "enable import daemon"
280	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
281	select BR2_PACKAGE_LIBCURL
282	select BR2_PACKAGE_LIBGCRYPT
283	select BR2_PACKAGE_XZ
284	select BR2_PACKAGE_ZLIB
285	help
286	  systemd-importd is a system service that manages virtual
287	  machine and container images for systemd-machined and
288	  machinectl.
289
290	  https://www.freedesktop.org/software/systemd/man/machinectl.html#Image%20Transfer%20Commands
291
292config BR2_PACKAGE_SYSTEMD_CATALOGDB
293	bool "enable journal catalog database installation"
294	depends on BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW # conflicting tmpfiles magic
295	help
296	  Build and install the journal catalog database.
297
298	  catalog files are used to provide extended and potentially
299	  localized messages for the journal.
300
301	  The original catalog files will be built into a DB at
302	  /usr/share/factory/var/lib/systemd/catalog/database.
303
304	  https://www.freedesktop.org/wiki/Software/systemd/catalog/
305
306config BR2_PACKAGE_SYSTEMD_LOCALED
307	bool "enable locale daemon"
308	help
309	  systemd-localed is a system service that may be used as
310	  mechanism to change the system locale settings, as well as
311	  the console key mapping and default X11 key mapping.
312
313	  https://www.freedesktop.org/software/systemd/man/systemd-localed.service.html
314
315config BR2_PACKAGE_SYSTEMD_LOGIND
316	bool "enable login daemon"
317	help
318	  systemd-logind is a system service that manages user logins.
319
320	  https://www.freedesktop.org/software/systemd/man/systemd-logind.service.html
321
322config BR2_PACKAGE_SYSTEMD_MACHINED
323	bool "enable machine daemon"
324	help
325	  systemd-machined is a system service that keeps track of
326	  virtual machines and containers, and processes belonging to
327	  them.
328
329	  https://www.freedesktop.org/software/systemd/man/systemd-machined.service.html
330
331config BR2_PACKAGE_SYSTEMD_MYHOSTNAME
332	bool "enable myhostname NSS plugin"
333	default y
334	help
335	  nss-myhostname is a plug-in module for the GNU Name Service
336	  Switch (NSS) functionality of the GNU C Library (glibc),
337	  primarily providing hostname resolution for the locally
338	  configured system hostname as returned by gethostname(2).
339
340	  https://www.freedesktop.org/software/systemd/man/nss-myhostname.html
341
342config BR2_PACKAGE_SYSTEMD_NETWORKD
343	bool "enable network manager"
344	default y
345	help
346	  systemd-networkd is a system service that manages networks.
347	  It detects and configures network devices as they appear, as
348	  well as creating virtual network devices.
349
350	  This simple network configuration solution is an alternative
351	  to dhcpcd or ISC dhcp.
352
353	  https://www.freedesktop.org/software/systemd/man/systemd-networkd.html
354
355config BR2_PACKAGE_SYSTEMD_OOMD
356	bool "enable out-of-memory killer"
357	help
358	  systemd-oomd is a system service that uses cgroups-v2 and
359	  pressure stall information (PSI) to monitor and take action
360	  on processes before an OOM occurs in kernel space.
361
362	  https://www.freedesktop.org/software/systemd/man/systemd-oomd.html
363
364config BR2_PACKAGE_SYSTEMD_POLKIT
365	bool "enable polkit support"
366	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # polkit -> c++17
367	depends on BR2_TOOLCHAIN_HAS_THREADS # polkit
368	depends on BR2_USE_WCHAR # libglib2
369	depends on !BR2_OPTIMIZE_FAST # polkit -> duktape
370	select BR2_PACKAGE_POLKIT
371	help
372	  If enabled, systemd is built with polkit support and policy
373	  files for its services are generated and installed. It is
374	  useful for allowing unprivileged processes to speak to
375	  systemd's many privileged processes.
376
377	  https://wiki.freedesktop.org/www/Software/polkit/
378
379comment "polkit support needs a toolchain with threads, wchar, gcc >= 7"
380	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \
381		!BR2_TOOLCHAIN_HAS_THREADS
382
383comment "polkit support can't be built with Optimize for fast"
384	depends on BR2_OPTIMIZE_FAST
385
386config BR2_PACKAGE_SYSTEMD_PORTABLED
387	bool "enable portable services"
388	help
389	  Portable services are systemd services that can be dynamically
390	  attached and detached from the system.
391
392	  These services must come with their own root directory which
393	  they are bound to through an automatically generated drop-in.
394
395	  They also have restrictions applied by the host system in the
396	  form of profiles.
397
398	  This functionality is provided by the system service
399	  systemd-portabled along with the corresponding CLI
400	  portablectl.
401
402	  https://systemd.io/PORTABLE_SERVICES/
403
404config BR2_PACKAGE_SYSTEMD_QUOTACHECK
405	bool "enable quotacheck tools"
406	help
407	  systemd-quotacheck is a service responsible for file system
408	  quota checks. It is run once at boot after all necessary
409	  file systems are mounted. It is pulled in only if at least
410	  one file system has quotas enabled.
411
412	  https://www.freedesktop.org/software/systemd/man/systemd-quotacheck.service.html
413
414config BR2_PACKAGE_SYSTEMD_RANDOMSEED
415	bool "enable random-seed support"
416	help
417	  systemd-random-seed is a service that restores the random
418	  seed of the system at early boot and saves it at
419	  shutdown. Saving/restoring the random seed across boots
420	  increases the amount of available entropy early at boot.
421
422	  https://www.freedesktop.org/software/systemd/man/systemd-random-seed.service.html
423
424config BR2_PACKAGE_SYSTEMD_REPART
425	bool "enable repart support"
426	select BR2_PACKAGE_OPENSSL
427	select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
428	select BR2_PACKAGE_UTIL_LINUX_LIBFDISK
429	help
430	  systemd-repart grows and adds partitions to a partition table,
431	  based on the configuration files described in repart.d.
432
433	  https://www.freedesktop.org/software/systemd/man/systemd-repart.html
434
435config BR2_PACKAGE_SYSTEMD_RESOLVED
436	bool "enable resolve daemon"
437	default y
438	help
439	  systemd-resolved is a system service that provides network
440	  name resolution to local applications. It implements a
441	  caching and validating DNS/DNSSEC stub resolver, as well as
442	  an LLMNR resolver and responder.
443
444	  https://www.freedesktop.org/software/systemd/man/systemd-resolved.html
445
446config BR2_PACKAGE_SYSTEMD_RFKILL
447	bool "enable rfkill tools"
448	help
449	  systemd-rfkill is a service that restores the RF kill switch
450	  state at early boot and saves it at shutdown.
451
452	  https://www.freedesktop.org/software/systemd/man/systemd-rfkill.service.html
453
454config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT
455	bool "enable SMACK support"
456	select BR2_PACKAGE_ATTR
457	select BR2_PACKAGE_SMACK
458	help
459	  Enable support for SMACK, the Simple Mandatory Access
460	  Control Kernel, a minimal approach to Access Control
461	  implemented as a kernel LSM.
462
463	  This feature requires a kernel >= 3.8.
464
465	  When this feature is enabled, Systemd mounts smackfs and
466	  manages security labels for sockets.
467
468config BR2_PACKAGE_SYSTEMD_SYSEXT
469	bool "enable sysext support"
470	help
471	  systemd-sysext activates/deactivates system extension
472	  images.
473
474	  System extension images may – dynamically at runtime —
475	  extend the /usr/ and /opt/ directory hierarchies with
476	  additional files.
477
478	  This is particularly useful on immutable system images where
479	  a /usr/ and/or /opt/ hierarchy residing on a read-only file
480	  system shall be extended temporarily at runtime without
481	  making any persistent modifications.
482
483	  https://www.freedesktop.org/software/systemd/man/systemd-sysext.html
484
485config BR2_PACKAGE_SYSTEMD_SYSUPDATE
486	bool "enable sysupdate support"
487	select BR2_PACKAGE_OPENSSL
488	select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
489	select BR2_PACKAGE_UTIL_LINUX_LIBFDISK
490	help
491	  systemd-sysupdate atomically updates the host OS, container
492	  images, portable service images or other sources, based on
493	  the transfer configuration files described in sysupdate.d.
494
495	  Note that the bootloader must be configured specifically to
496	  support the A/B update mechanism defined by sysupdate. Only
497	  systemd-boot does this out of the box.
498
499	  https://www.freedesktop.org/software/systemd/man/systemd-sysupdate.html
500
501config BR2_PACKAGE_SYSTEMD_SYSUSERS
502	bool "enable sysusers support"
503	help
504	  systemd-sysusers creates system users and groups, based on
505	  the file format and location specified in sysusers.d(5).
506
507	  https://www.freedesktop.org/software/systemd/man/systemd-sysusers.html
508
509config BR2_PACKAGE_SYSTEMD_TIMEDATED
510	bool "enable timedate daemon"
511	default y
512	help
513	  systemd-timedated is a system service that may be used as a
514	  mechanism to change the system clock and timezone, as well
515	  as to enable/disable NTP time synchronization.
516
517	  https://www.freedesktop.org/software/systemd/man/systemd-timedated.service.html
518
519config BR2_PACKAGE_SYSTEMD_TIMESYNCD
520	bool "enable timesync daemon"
521	default y
522	help
523	  systemd-timesyncd is a service that may be used to
524	  synchronize the local system clock with a Network Time
525	  Protocol server.
526
527	  This simple NTP solution is an alternative to sntp/ntpd from
528	  the ntp package.
529
530	  https://www.freedesktop.org/software/systemd/man/systemd-timesyncd.html
531
532config BR2_PACKAGE_SYSTEMD_USERDB
533	bool "enable userdb daemon"
534	help
535	  systemd-userdbd is a system service that multiplexes
536	  user/group lookups to all local services that provide JSON
537	  user/group record definitions to the system. In addition it
538	  synthesizes JSON user/group records from classic UNIX/glibc
539	  NSS user/group records in order to provide full backwards
540	  compatibility.
541
542	  https://www.freedesktop.org/software/systemd/man/systemd-userdbd.service.html
543
544config BR2_PACKAGE_SYSTEMD_UTMP
545	bool "enable utmp support"
546	help
547	  systemd-update-utmp-runlevel.service is a service that writes
548	  SysV runlevel changes to utmp and wtmp, as well as the audit
549	  logs, as they occur.  systemd-update-utmp.service does the
550	  same for system reboots and shutdown requests.
551
552	  https://www.freedesktop.org/software/systemd/man/systemd-update-utmp.service.html
553
554	  Utmp keeps track of what users do on the system (where they
555	  logged from, on which terminal, ...) along with a general
556	  status of the system (list of reboots, current uptime, current
557	  number of users logged in).
558
559	  You should only enable this if your system will have actual
560	  users who log in.
561
562	  https://man7.org/linux/man-pages/man5/utmp.5.html
563
564config BR2_PACKAGE_SYSTEMD_VCONSOLE
565	bool "enable vconsole tool"
566	default y
567	select BR2_PACKAGE_KBD if BR2_PACKAGE_SYSTEMD_VCONSOLE_DEFAULT_KEYMAP != ""
568	help
569	  systemd-vconsole-setup is an early boot service that
570	  configures the virtual console font and console keymap.
571
572	  https://www.freedesktop.org/software/systemd/man/systemd-vconsole-setup.service.html
573
574config BR2_PACKAGE_SYSTEMD_VCONSOLE_DEFAULT_KEYMAP
575	string "default keymap"
576	default "us"
577	depends on BR2_PACKAGE_SYSTEMD_VCONSOLE
578	help
579	  Default keymap for the system. Leave empty to not set a
580	  default keymap.
581
582endif
583