Upstart is a discontinued
event-based replacement for the traditional
init daemon—the method by which several
Unix-like computer
operating systems perform tasks when the computer is started. It was written by
Scott James Remnant, a former employee of
Canonical Ltd. In 2014, Upstart was placed in maintenance mode, and other init daemons, such as
systemd, were recommended in place of Upstart.
Ubuntu moved away from Upstart with the release of version
15.04 (Vivid Vervet) in favor of migrating to systemd. As of March 2023, there have been no updates released for Upstart since September 2014.[2]
Rationale
The traditional init process was originally only responsible for bringing the computer into a normal running state after power-on, or gracefully shutting down services prior to shutdown. As a result, the design is strictly
synchronous,
blocking future tasks until the current one has completed. Its tasks must also be defined in advance, as they are limited to this prep or cleanup function. This leaves it unable to handle various non-startup-tasks on a modern
desktop computer elegantly, including:
The addition or removal of
USB flash drives and other portable storage or network devices while the machine is running
The discovery and scanning of new storage devices, especially when a disk may not even power on until it is scanned
The loading of
firmware for a device, which may need to occur after it is detected but before it is usable
Upstart's event-driven model allows it to respond to events asynchronously as they are generated.[3]
Design
Upstart operates asynchronously; it handles starting of the tasks and services during boot and stopping them during shutdown, and also supervises the tasks and services while the system is running.
Easy transition and perfect
backward compatibility with
sysvinit were the explicit design goals;[4] accordingly, Upstart can run unmodified sysvinit scripts. In this way it differs from most other init replacements (beside
systemd and
OpenRC), which usually assume and require complete transition to run properly, and do not support a mixed environment of traditional and new startup methods.[5]
Upstart allows for extensions to its event model through the use of initctl to input custom, single events, or event bridges to integrate many or more-complicated events.[6] By default, Upstart includes bridges for socket, dbus, udev, file, and dconf events; additionally, more bridges are possible.[7]
Linux distributions that support or have supported Upstart to some extent, but moved away since or no longer use it as their default init system:
Debian decided that systemd will be the default init system beginning with the Jessie release,[9] after considering switching to Upstart.[10] It was eventually removed from the Debian archives in December 2015.[11]
Upstart was first included in
Ubuntu in the
Ubuntu 6.10 "Edgy Eft" release in late 2006, replacing
sysvinit.
Ubuntu 9.10 "Karmic Koala" introduced native Upstart bootup as of Alpha 6.[12] In turn, after the Debian project decided to adopt
systemd on a future release in 2014,
Mark Shuttleworth announced that Ubuntu would begin plans to migrate to systemd itself to maintain consistency with upstream.[13] Ubuntu finished the switch to systemd as its default init system in version 15.04 (Vivid Vervet), with the exception of
Ubuntu Touch.[14]
In
Fedora 9, Upstart replaced sysvinit, however, systemd replaced Upstart in the Fedora 15 release.[15][16]
openSUSE included Upstart in version 11.3 Milestone 4, but not as default.[20] systemd replaced Upstart, as the default init system in openSUSE 12.1.[21]
Upstart replaced the sysvinit in
Maemo 5 for
Nokia Internet tablets.[23]
The latest release was version 1.13 on July 11, 2014. Since December 2018 the project website says that Upstart is in maintenance mode only, and recommends other init system, like
systemd.[24]