====== Startup ====== System configuration Service bootstrap Historically, the startup system has recently moved from init to [[systemd]]. Ten years ago, most distributions used SysV Init. Various distributions developed new and improved init systems. Ubuntu built Upstart, for example. As of 2020, most distributions have switched to systemd, developed at Red Hat. It was a long and controversial adoption period, and still today Ubuntu version 20 supports both init and systemd. So one can find remnants of SysVInit still present, though systemd-init is the primary startup system. For example, the following are from SysV init: $ service --status-all # list the startup services $ ls /etc/init.d # list the scripts to start and manage the services These have been replaced by systemd $ systemctl $ ls /lib/systemd/system So let's look at the cron service. For every script in /etc/init.d, there is a unit file in /lib/systemd/system. * /etc/init.d/cron -> /lib/systemd/system With SysV Init you could run the init.d script directly: $ exec /etc/init.d/cron -options or you could use the service command. $ service cron start Now in systemd, you use the systemctl command. $ systemctl cron start Other tools /lib/lsb/init-functions /var/name.pid ? Configuration files: /etc/default/name /etc/name/name.conf ===== Startup Services ===== Notes "zeroconf network configuration, when user plugs laptop into network, including DNS service discovery Lennart Poettering 2005 avahi is the name of a lemur in Madagascar copy of bonjour" ^ Name ^ Description ^ Run ^ Files ^ | acpid | Advanced Configuration and Power Interface. Provide a socket to multiplex kernel ACPI events. | daemon | /usr/sbin/acpid | | alsa-utils | Audio Levels. Save and restore at bootup and shutdown. | run once | /usr/sbin/alsactl\\ /usr/sbin/alsactl\\ /run/alsa\\ /usr/share/alsa/utils.sh\\ /var/lib/alsa/asound.state | | anacron | Anachronistic cron. Run once at startup to catch up with missed jobs. Also called by cron. | run once | /usr/sbin/anacron | | apparmor | AppArmor | ? | /lib/apparmor/rc.apparmor.functions\\ /sys/module/apparmor\\ /rofs/etc/apparmor.d | | apport | Automatic Crash Report generation | ? | /usr/share/apport/apport\\ /lib/lsb/init-functions | | avahi-daemon | Zeroconf Network Configuration. Copy of Bonjour. | daemon | /usr/sbin/avahi-daemon\\ /etc/default/avahi-daemon | | bluetooth | start bluetooth daemons | daemon | /sbin/bluetoothd\\ /etc/default/bluetooth | | console-setup.sh | Set console font and keymap. | run once | /lib/console-setup/console-setup.sh | | cron | cron scheduler | daemon | /usr/sbin/cron\\ /var/run/crond.pid\\ /etc/default/cron\\ /etc/pam.d/cron | | cups | Print Spooler and Server. has web interface at localhost:631 | daemon | /usr/sbin/cupsd\\ /run/cups/ | | cups-browsed | Make network printers available locally, by browsing Bonjour broadcasts. | daemon | /usr/sbin/cups-browsed\\ /var/run/cups | | dbus | D-Bus. interprocess messaging | daemon | /usr/sbin/dbus-daemon\\ /usr/sbin/dbus-uuidgen\\ /var/run/dbus\\ /etc/default/dbus | | gdm3 | GNOME display manager | daemon | /usr/sbin/gdm3\\ /var/run/gdm3.pid\\ /usr/share/gdm/generate-config | | grub-commoplymouth-logn | Record successful boot. If GRUB suspects previous boot was unsuccessful, it displays the boot menu. | run once | /boot/grub/grubenv | | hwclock.sh | Set and adjust CMOS clock. Sync hardware and system clock time. Run at startup and shutdown. | run once | /sbin/hwclock\\ /etc/default/hwclock\\ /etc/default/rcS | | irqbalance | Balance interrupts for SMP systems. | daemon | /usr/sbin/irqbalance\\ /run/irqbalance.pid\\ /etc/default/irqbalance | | kerneloops | Send kernel crash reports to oops.kernel.org. | daemon | /usr/sbin/kerneloops\\ /etc/default/kerneloops\\ /var/run/kerneloops.pid | | keyboard-setup.sh | Setup the console keyboard layout. | run once | /lib/console-setup/keyboard-setup.sh | | kmod | Load the kernel modules listed in /etc/modules | run once | /etc/modules | | network-manager | Automatically switch network connections to the best available connection | daemon | | | openvpn | start openvpn | daemon | | | plymouth | Boot splash manager. Show and hide splash screen during boot. | run once | /etc/default/plymouth\\ /lib/lsb/init-functions | | plymouth-log | Inform plymouth that /var/log is writable. | run once | /etc/default/plymouth-log\\ /lib/lsb/init-functions | | pppd-dns | Restore /etc/resolve.conf if the system crashed before the ppp link was shut down. | run once | /lib/lsb/init-functions | | procps | Process parameters. Configure kernel parameters from /etc/sysctl.conf. | daemon | | | pulseaudio-enable-autospawn | Enable autospawn for pulseaudio daemon. | run once | | | rsync | Allow fast remote file copy, like RCP. | daemon | /usr/bin/rsync\\ /etc/default/rsync\\ /etc/rsyncd.conf\\ /var/run/rsync.pid | | rsyslog | Rocket fast system for logging. Enhanced syslogd. | daemon | /usr/sbin/rsyslogd\\ /run/rsyslogd.pid\\ /etc/default/rsyslog\\ /lib/lsb/init-functions | | saned | SANE network scanner server. | daemon | /usr/sbin/saned\\ /etc/default/saned\\ /lib/lsb/init-functions\\ /var/run/saned.pid | | speech-dispatcher | Common interface to speech synthesizers. | daemon | /usr/bin/speech-dispatcher\\ /run/speech-dispatcher/speech-dispatcher.pid\\ /lib/lsb/init-functions | | spice-vdagent | Has to do with X-11, Spice Guest. | daemon | /usr/sbin/spice-vdagentd\\ lsb | | udev | Start systemd-udevd. Hot plug events dispatcher. | daemon | | | ufw | Start ufw firewall. | daemon | | | unattended-upgrades | Unattended package upgrades shutdown. | daemon | | | uuidd | uuid generation daemon | daemon | | | whoopsie | Crash report submission daemon. | daemon | | | x11-common | Set up the X server and ICE socket directories. | run once | | ====== from init to systemd ====== init - the original from SystemV Unix, serial-processing, slow boots upstart - ubuntu-developed more efficient init openrc - dependency-based, combines aspects of init and systemd runit - cross-platform: BSD, MacOS, etc systemd - multi-processing for fast boot, now ubiquitous note: gentoo has its own init system As of 2020, init has been replaced by systemd. See below.