TODO revision d0767ffd08bbb5c069e266710eb0462315e47e6d
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* enabling an instance unit creates a pointless link, and
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering the unit will be started with getty@getty.service:
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering $ systemctl enable getty@.service
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering ln -s '/usr/lib/systemd/system/getty@.service' '/etc/systemd/system/getty.target.wants/getty@.service'
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* check systemd-tmpfiles for selinux context hookup for mknod(), symlink() and similar
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* swap units that are activated by one name but shown in the kernel under another are semi-broken
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* Dangling symlinks of .automount unit files in .wants/ directories, set up
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering automount points even when the original .automount file did not exist
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering anymore. Only the .mount unit was still around.
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point.
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* When we detect invalid UTF-8, we cannot use it in an error message:
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering log...("Path is not UTF-8 clean, ignoring assignment: %s", rvalue);
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* shorten the message to sane length:
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering 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.
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* external: ps should gain colums for slice
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering - localectl: support new converted x11→console keymaps
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* when installing fedora with yum --installroot /var/run is a directory, not a symlink
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering https://bugzilla.redhat.com/show_bug.cgi?id=975864
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart PoetteringCGroup Rework Completion:
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* implement system-wide DefaultCPUAccounting=1 switch (and similar for blockio, memory?)
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* implement per-slice CPUFairScheduling=1 switch
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* handle jointly mounted controllers correctly
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* introduce high-level settings for RT budget, swappiness
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* general: get rid of readdir_r/dirent_storage stuff, it's unnecessary on Linux
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* add API to clone sd_bus_message objects
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* sd-bus: synthesized messages should get serial number (uint32_t) -1
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* sd-event: allow multiple signal handlers per signal
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* when we detect low battery and no AC on boot, show pretty splash and refuse boot
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* move libasyncns into systemd as libsystemd-asyncns
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* calendarspec: support value ranges with ".." notation. Example: 2013-4..8-1
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* sd-bus: when triggering property change events, allow a NULL strv indicate that all properties listed as such are send out as changed
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* sd-bus: enforce signatures on response messages
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* sd-bus: see if we can drop more message validation on the sending side
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* sd-bus: introduce sd_bus_creds object and attach it to messages as well as allow querying it for names
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* sd-bus: support "const" properties as flag
78f22b973fa2c9b09bd974680836df17163d9ee0Lennart Poettering* sd-event: when a handler returns an error, just turn off its event
* sd-event: child pid handling: first invoke waitid(WNOHANG) and call event handler, only afterwards reap the process
* libsystemd-journal, libsystemd-login, libudev: add calls to easily attach these objects to sd-event event loops
* add field to transient units that indicate whether systemd or somebody else saves/restores its settings, for integration with libvirt
* journalctl: support -M to read journal of containers and determine journal directory from root directory of container
* tmpfiles: to make sure we don't delete unpacked tarballs with old timestamps right-away never delete stuff that is inside a directory with a new mtime
* Automatically configure swap partition to use for hibernation by looking for largest swap partition on the root disk?
- Until we can start daemons directly, find a less ugly, less racy alternative than shell scripts for the second man page example.
* "systemctl cat" or "systemctl view" command or or so, that cats the backing unit file of a service, plus its drop-ins and shows them in a pager
* 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
* Add a new Distribute=$NUMBER key to socket units that makes use of SO_REUSEPORT to distribute network traffic on $NUMBER instances
* tmpfiles: when applying ownership to /run/log/journal, also do this for the journal fails contained in it
* we probably should replace the left-over uses of strv_append() and replace them by strv_push() or strv_extend()
* move config_parse_path_strv() out of conf-parser.c
* After coming back from hibernation reset hibernation swap partition using the /dev/snapshot ioctl APIs
* for transient units, instead of writing out drop-ins for all properties consider serializing them in the normal serialization stream
* session scopes/user unit: add RequiresMountsFor for the home directory of the user
* add a man page containing packaging guidelines and recommending usage of things like Documentation=, PrivateTmp=, PrivateNetwork= and ReadOnlyDirectories=/etc /usr.
* given that logind/machined now let PID 1 do all nasty work, we can
* Fedora: add an rpmlint check that verifies that all unit files in the RPM are listed in %systemd_post macros.
* make sure gdm doesn't use multi-user-x but the new default X configuration file, and then remove multi-user-x from systemd
* when parsing calendar timestamps support the UTC timezone (even if we won't support arbitrary timezone specs, support UTC itself certainly makes sense), also support syntaxes such as +0200
* systemctl list-unit-files should list generated files (and probably with a new state "generated" for them, or so)
* man: the documentation of Restart= currently is very misleading and suggests the tools from ExecStartPre= might get restarted.
* document logic of auto/noauto and fail/nofail in fstab in systemd.mount or systemd-fstab-generator man page
* document systemd-journal-flush.service properly
* Introduce a way how we can kill the main process of a service with KillSignal, but all processes with SIGKILL later on
* 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...
* logind: add Suspend() bus calls which take timestamps to fix double suspend issues when somebody hits suspend and closes laptop quickly.
- qemu wrapper script: http://www.spinics.net/lists/kvm/msg72389.html
* 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 can't do this before split-off udev is gone for good
* 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
* 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.
* dev-setup.c: when running in a container, create a tiny stub udev
- 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
- pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree
- we should probably handle SIGTERM/SIGINT to not leave dot files around, just in case
* 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 can't 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: when rotating, copy over old acls/access mode
- 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
- man: clarify that time-sync.target is not only sysv compat but also useful otherwise. Same for similar targets
- 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 doesn't exist? maybe show how many units are enabled afterwards?
* introduce ntp.service (or suchlike) as symlink that is used to arbitrate between various NTP implementations
* deal with sendmail/postfix exclusivity
- 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 isn't
* refuse boot if /etc/machine-id is not useful (or set taint?)
lxc.network.type=phys mode, and pass through entire network
- nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters, selinux exec context
- refuses to boot containers without /etc/machine-id (OK?), and with empty /etc/machine-id (not OK).
- 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
* services which create their own subcgroups break cgroup-empty notification (needs to be fixed in the kernel)
* 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 32bit 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
* hide PAM/TCPWrap options in fragment parser when compile time disabled
* 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.
* port over to LISTEN_FDS/LISTEN_PID:
- rpcbind (/var/run/rpcbind.sock!) HAVEPATCH
- libvirtd (/var/run/libvirt/libvirt-sock-ro)
- add documentation to systemd.daemon
- allow specification of socket mode/umask when allocating DBusServer
- teach dbus to activate all services it finds in /etc/systemd/services/org-*.service
* dbus upstream still refers to dbus.target and shouldn't
* /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 doesn't free()!