TODO revision 424a87321427d255ac287f08a649e7808ae1641c
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* Should systemctl status \* work on all unit types, not just .service?
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* enabling an instance unit creates a pointless link, and
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen the unit will be started with getty@getty.service:
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen $ systemctl enable getty@.service
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen ln -s '/usr/lib/systemd/system/getty@.service' '/etc/systemd/system/getty.target.wants/getty@.service'
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* Dangling symlinks of .automount unit files in .wants/ directories, set up
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen automount points even when the original .automount file did not exist
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen anymore. Only the .mount unit was still around.
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point.
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* shorten the message to sane length:
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service failed to load: No such file or directory. See system logs and 'systemctl status display-manager.service' for details.
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* sd_bus_unref() is broken regarding self-references and "pseudo thread-safety".
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen See the comment in sd_bus_unref() for more..
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* Fedora: when installing fedora with yum --installroot /var/run is a directory, not a symlink
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen https://bugzilla.redhat.com/show_bug.cgi?id=975864
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* Fedora: add an rpmlint check that verifies that all unit files in the RPM are listed in %systemd_post macros.
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* Fedora: post FPC ticket to move add %tmpfiles_create to the packaging guidelines
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* systemd-notify: fake ucred of msg to PID of parent, if that works, with fallback to our own if it doesn't.
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* machined: make sure we can restart machined without losing machines
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* machined/machinectl: sort IP addresses we return by scope and protocol
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* machined: write NSS module for looking up IP addresses for machines
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* timer units: actually add extra delays to timer units with high AccuracySec values, don't start them already when we are awake...
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen - hookup with networkd: NTP servers from dhcp
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* a way for container managers to turn off getty starting via $container_headless= or so...
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* figure out a nice way how we can let the admin know what child/sibling unit causes cgroup membership for a specific unit
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* add a kernel command line option to enable the debug shell
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* journalctl: add the ability to look for the most recent process of a binary. journalctl /usr/bin/X11 --pid=-1 or so...
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* set NOTIFY_SOCKET also for control processes
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* drop parsing of chkconfig header lines from service.c
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* mount_cgroup_controllers(): symlinks need to get the label applied
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* For timer units: add some mechanisms so that timer units that trigger immediately on boot do not have the services they run added to the initial transaction and thus confuse Type=idle. Alternatively, split up the boot-up state into two, and make Type=idle only be affected by jobs for the default target, but ignore any further jobs
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* Add RPM macros for registering/unregistering binfmt drop-ins
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* Add timeout to early-boot, and shut down the system if it is hit. Solves the laptop-in-bag problem and is useful for embedded cases
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* sd-resolve: add callback api
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* ImmutableSystem=yes/no or so to mount /usr, /boot read-only/invisible, and leave /var and /etc writable
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* InaccessibleHome=yes/no or so to hide /home and /run/user from a service
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* Run most system services with cgroupfs read-only and procfs with a more secure mode
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* sd-event: generate a failure of a default event loop is executed out-of-thread
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen* add "M" as recursive version of "m" to tmpfiles, then use it for
/proc/$PID/exe
a tiny process that joins the namespace and creates/binds the socket
to allow Chown/chgrp on sockets without requiring NSS in PID 1.
- manager property enumeration was broken when systemd moved to /usr/lib/
- add field to transient units that indicate whether systemd or somebody else saves/restores its settings, for integration with libvirt
* Automatically configure swap partition to use for hibernation by looking for largest swap partition on the root disk?
* libsystemd-journal, libsystemd-login, libudev: add calls to easily attach these objects to sd-event event loops
* Automatically configure swap partition to use for hibernation by looking for largest swap partition on the root disk?
* rfkill,backlight: we probably should run the load tools inside of the udev rules so that the state is properly initialized by the time other software sees it
* After coming back from hibernation reset hibernation swap partition using the /dev/snapshot ioctl APIs
* make sure gdm does not use multi-user-x but the new default X configuration file, and then remove multi-user-x from systemd
* man: the documentation of Restart= currently is very misleading and suggests the tools from ExecStartPre= might get restarted.
- introduce sd_bus_emit_object_added()/sd_bus_emit_object_removed() that automatically includes the build-in interfaces in the list
- .busname units should not use get_user_creds()/get_cgroup_creds() but instead do NSS only in temporarily forked off child
- kdbus: matches against source or destination pids for an "strace -p"-like feel. Problem: The PID info needs to be available in userspace too...
- NameLost/NameAcquired obsolete
* dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we
* add a pam module that passes the hdd passphrase into the PAM stack and then expires it, for usage by gdm auto-login.
* maybe add a generator that looks for "systemd.run=" on the kernel cmdline for container usercases...
* timedatctl, localectl: possibly make some commands work without the daemon, for chroot situations...
* timedatectl: print a nicer message when enabling ntp fails because ntpd/chrony are not installed
* systemctl delete x.snapshot leaves no trace in logs (at least at default level).
* systemd-inhibit: make taking delay locks useful: support sending SIGINT or SIGTERM on PrepareForSleep()
* journal-or-kmsg is currently broken? See reverted commit 4a01181e460686d8b4a543b1dfa7f77c9e3c5ab8.
* remove any syslog support from log.c -- we probably cannot do this before split-off udev is gone for good
* think about window-manager-run-as-user-service problem: exit 0 → activate shutdown.target; exit != 0 → restart service
* timedate: have global on/off switches for auto-time (NTP), and auto-timezone that connman can subscribe to.
- change bootctl to be backed by systemd-bootd to control temporary and persistent default boot goal plus efi variables
* fstab: add new mount option x-systemd-after=/foobar/waldo to allow manual dependencies to other mount points
* print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word
* mount: turn dependency information from /proc/self/mountinfo into dependency information between systemd units.
- logind: optionally, ignore idle-hint logic for autosuspend, block suspend as long as a session is around
- When we update the kernel all kind of hibernation should be prohibited until shutdown/reboot
- logind: wakelock/opportunistic suspend support
- we should probably handle SIGTERM/SIGINT to not leave dot files around, just in case
- session scopes/user unit: add RequiresMountsFor for the home directory of the user
- add Suspend() bus calls which take timestamps to fix double suspend issues when somebody hits suspend and closes laptop quickly.
* exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty.
- journal: when waiting for journal additions in the client always sleep at least 1s or so, in order to minimize wakeups
- add API to close/reopen/get fd for journal client fd in libsystemd-journal.
- fallback to /dev/log based logging in libsystemd-journal, if we cannot log natively?
- check if we can make journalctl by default use --follow mode inside of less if called without args?
- journal: add a setgid "systemd-journal" utility to invoke from libsystemd-journal, which passes fds via STDOUT and does PK access
- journactl: support negative filtering, i.e. FOOBAR!="waldo",
- journal: send out marker messages every now and then, and immediately sync with fdatasync() afterwards, in order to have hourly guaranteed syncs.
- journal-send.c, log.c: when the log socket is clogged, and we drop, count this and write a message about this when it gets unclogged again.
- journal: sanely deal with entries which are larger than the individual file size, but where the components would fit
- tmpfiles: when applying ownership to /run/log/journal, also do this for the journal fails contained in it
- man: clarify that time-sync.target is not only sysv compat but also useful otherwise. Same for similar targets
- add a man page containing packaging guidelines and recommending usage of things like Documentation=, PrivateTmp=, PrivateNetwork= and ReadOnlyDirectories=/etc /usr.
- document systemd-journal-flush.service properly
- documentation: recommend to connect the timer units of a service to the service via Also= in [Install]
- man: extend runlevel(8) to mention that runlevels suck, and are dead. Maybe add runlevel(7) with a note about that too
- print nice message from systemctl --failed if there are no entries shown, and hook that into ExecStartPre of rescue.service/emergency.service
- add new command to systemctl: "systemctl system-reexec" which reexecs as many daemons as virtually possible
- systemctl enable: improve the success messages (i.e. more human readable, less shell-like)
- systemctl enable: fail if target to alias into does not exist? maybe show how many units are enabled afterwards?
- systemctl list-unit-files should list generated files (and probably with a new state "generated" for them, or so)
* introduce ntp.service (or suchlike) as symlink that is used to arbitrate between various NTP implementations
* deal with sendmail/postfix exclusivity
- when parsing calendar timestamps support the UTC timezone (even if we will not support arbitrary timezone specs, support UTC itself certainly makes sense), also support syntaxes such as +0200
- DST/timezone changes && ntp is active && RTC-in-localtime (never do it without ntp)
logs-show.c. Alternatively: use libelfutil, which seems to be the
* If we show an error about a unit (such as not showing up) and it has no Description string, then show a description string generated form the reverse of unit_name_mangle().
* clean up date formatting and parsing so that all absolute/relative timestamps we format can also be parsed
* on shutdown: move utmp, wall, audit logic all into PID 1 (or logind?), get rid of systemd-update-utmp-runlevel
- instructions shipped by packages and stored in /usr/lib/
* hostnamed: before returning information from /etc/machine-info.conf check the modification data and reread. Similar for localed, ...
* currently x-systemd.timeout is lost in the initrd, since crypttab is copied into dracut, but fstab is not
- nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters
- refuses to boot containers without /etc/machine-id (OK?), and with empty /etc/machine-id (not OK).
- generate predictable mac addresses for the netdev we create (host0), maybe based on guest's machine
- support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator
* after deserializing sockets in socket.c we should reapply sockopts and things
* come up with a nice way to write queue/read_ahead_kb for a block device without interfering with readahead
* move PID 1 segfaults to /var/lib/systemd/coredump?
* create /sbin/init symlinks from the build system
* properly handle loop back mounts via fstab, especially regards to fsck/passno
* initialize the hostname from the fs label of /, if /etc/hostname does not exist?
* when breaking cycles drop sysv services first, then services from /run, then from /etc, then from /usr
* ExecOnFailure=/usr/bin/foo
- remove src/udev/udev-builtin-firmware.c (CONFIG_FW_LOADER_USER_HELPER=n)
- add trigger --subsystem-match=usb/usb_device device
* when a service has the same env var set twice we actually store it twice and return that in systemctl show -p... We should only show the last setting
* add option to sockets to avoid activation. Instead just drop packets/connections, see http://cyberelk.net/tim/2012/02/15/portreserve-systemd-solution/
* save coredump in Windows/Mozilla minidump format
* support crash reporting operation modes (https://live.gnome.org/GnomeOS/Design/Whiteboards/ProblemReporting)
* default to actual 32-bit PIDs, via /proc/sys/kernel/pid_max
* when a bus name of a service disappears from the bus make sure to queue further activation requests
* support sd_notify() style notification when reload begins (RELOADING=1), reload is finished (READY=1), and add ReloadSignal= then to use in combination
* support sd_notify() style notification when shutting down, to make auto-exit bus services work (STOPPING=1)
- readahead: make use of EXT4_IOC_MOVE_EXT, as used by http://e4rat.sourceforge.net/
* add support for /bin/mount -s
- init=/bin/sh vs. "emergency" mode, vs. "rescue" mode, vs. "multi-user" mode, vs. "graphical" mode, and the debug shell
- hooking a script into various stages of shutdown/rearly booot
* support systemd.mask= on the kernel command line.
- add documentation to systemd.daemon
- inbuilt piping support (essentially degenerate async)? see loopback-setup.c and other places
- add proper initrd support (in particular generate .network/.link files based on /proc/cmdline)
- patch kernel to support module alias for tunnel device (ipip/sit/gre),
- add tun/tap netdev support
- teach dbus to activate all services it finds in /etc/systemd/services/org-*.service
* dbus upstream still refers to dbus.target and should not
* /usr/bin/service should actually show the new command line
* fedora: suggest auto-restart on failure, but not on success and not on coredump. also, ask people to think about changing the start limit logic. Also point people to RestartPreventExitStatus=, SuccessExitStatus=
* fedora: F20: go timer units all the way, leave cron.daily for cron
* fedora: update policy to declare access mode and ownership of unit files to root:root 0644, and add an rpmlint check for it
* set_put(), hashmap_put() return values check. i.e. == 0 does not free()!