Upstart (software)

{{Short description|Event-based Linux init daemon}}

{{Infobox software

| name = Upstart

| logo = Upstart daemon logo.svg

| author = Scott James Remnant

| developer = Canonical Ltd.

| released = {{release date and age|2006|8|24}}

| discontinued = yes

| latest release version = 1.13.2{{cite web|url=https://launchpad.net/upstart/1.x/1.13.2|title=1.13.2 "It looks lush from the side" : Series 1.x : upstart |publisher=Launchpad|access-date=2022-01-01}}

| latest release date = {{release date and age|2014|09|04}}

| programming language = C

| operating system = Linux

| genre = Init daemon

| license = GPLv2

| website = {{URL|https://wiki.ubuntu.com/Upstart}}

}}

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 June 2024, there have been no updates released for Upstart since September 2014.{{Cite web|title=Upstart: Overview|url=http://upstart.ubuntu.com/index.html}}

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.{{cite web | url = http://www.netsplit.com/2006/08/26/upstart-in-universe/ | first =Scott James | last = Remnant | title = Upstart in Universe |publisher=Netsplit |date=2006-08-26 |access-date=2009-09-12|archive-url=https://web.archive.org/web/20131113012410/http://netsplit.com/2006/08/26/upstart-in-universe/|archive-date=2013-11-13}}

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;{{citation | url = https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/605007 | publisher = Ubuntu | title = Launch Pad | section = Upstart | number = 605007}} 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.{{citation | chapter-url = https://wiki.ubuntu.com/ReplacementInit | chapter = Discussion of design and implementation of Upstart | publisher = Canonical | title = Ubuntu Wiki}}

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.{{cite web |title=The Upstart Cookbook: initctl emit |url=http://upstart.ubuntu.com/cookbook/#initctl-emit |publisher=Canonical |access-date=26 January 2014}} By default, Upstart includes bridges for socket, dbus, udev, file, and dconf events; additionally, more bridges are possible.{{cite web |title=The Upstart Cookbook: Bridges |publisher=Canonical |url=http://upstart.ubuntu.com/cookbook/#bridges |access-date=26 January 2014}}

Adoption

Linux distributions and other operating systems based on the Linux kernel which use Upstart as the default init system:

  • Upstart is used in Google's ChromeOS and ChromiumOS.{{citation |url=https://www.chromium.org/chromium-os/chromiumos-design-docs/boot-design/ |title=Chrome OS User-Land Boot Design |access-date=2024-06-04}}

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,{{citation |url=https://lwn.net/Articles/585363/ |title=The Debian technical committee vote concludes |publisher=Lwn.net |date=2014-02-11 |access-date=2014-02-11}} after considering switching to Upstart.{{citation |author=Petter Reinholdtsen |url=http://lists.debian.org/debian-devel-announce/2009/09/msg00003.html |title=The future of the boot system in Debian |publisher=Debian.org |date=2009-09-05}} It was eventually removed from the Debian archives in December 2015.{{citation | url=https://packages.qa.debian.org/u/upstart/news/20160111T052637Z.html|title=RM: upstart -- RoQA; unmaintained |publisher=debian.org |date=2015-12-18 |access-date=2016-01-26}}
  • 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.{{citation |url=http://www.ubuntulinux.org/testing/karmic/alpha6#Upstart |title=Upstart |work=About |publisher=Ubuntu}} 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.{{cite web|last=Shuttleworth |first=Mark |title=Losing graciously |url=http://www.markshuttleworth.com/archives/1316 |access-date=14 February 2014 |url-status=live |archive-url=https://web.archive.org/web/20140322130122/http://www.markshuttleworth.com/archives/1316 |archive-date=22 March 2014 }} Ubuntu finished the switch to systemd as its default init system in version 15.04 (Vivid Vervet), with the exception of Ubuntu Touch.{{citation |url=https://wiki.ubuntu.com/VividVervet/ReleaseNotes |title=VividVervet/ReleaseNotes |date=2015-04-24}}
  • In Fedora 9, Upstart replaced sysvinit, however, systemd replaced Upstart in the Fedora 15 release.{{citation |url=https://fedoraproject.org/wiki/Releases/14/FeatureList |title=Fedora 14 Accepted Features |date=2010-07-13 |access-date=2010-07-13}}{{cite web |url=https://lwn.net/Articles/405100/ |title=Fedora defers systemd to F15 |date=2010-09-14 |access-date=2010-09-17 |publisher=Linux Weekly News}}
  • Red Hat includes Upstart in their Red Hat Enterprise Linux 6 release.{{cite web |url=https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/6.0_technical_notes/deployment|publisher=Red Hat |title=Deployment |work=Red Hat Enterprise Linux 6: Technical Notes |access-date=2013-12-31}} As a result, it is also used by RHEL 6 variants such as CentOS, Scientific Linux, and Oracle Linux. For RHEL 7, systemd is used instead.{{citation |url=https://plus.google.com/+LennartPoetteringTheOneAndOnly/posts/cBYAcrNZcz9 |title=Red Hat Summit talk about systemd in RHEL 7 is now available online |first=Lennart |last=Poettering |publisher=Google Plus |date=2013-06-19 |access-date=2013-12-31}}{{citation |author=Tim Burke |title=Red Hat Enterprise Linux Roadmap Highlights |work=presentation |url=http://rhsummit.files.wordpress.com/2012/03/burke_rhel_roadmap.pdf |archive-url=https://web.archive.org/web/20130118084956/http://rhsummit.files.wordpress.com/2012/03/burke_rhel_roadmap.pdf |url-status=dead |archive-date=2013-01-18 |date=2012-06-27 }}
  • openSUSE included Upstart in version 11.3 Milestone 4, but not as default.{{citation |url=http://www.h-online.com/open/news/item/OpenSUSE-gets-an-Upstart-964636.html |archive-url=https://web.archive.org/web/20131208184815/http://www.h-online.com/open/news/item/OpenSUSE-gets-an-Upstart-964636.html |archive-date=8 December 2013 |title=OpenSUSE gets an Upstart |publisher=The H |date=2010-03-26 |access-date=2010-04-04}} systemd replaced Upstart, as the default init system in openSUSE 12.1.{{citation |url=http://h-online.com/-1380033 | archive-url=https://web.archive.org/web/20120420063250/http://www.h-online.com/open/news/item/openSUSE-12-1-arrives-with-systemd-and-Btrfs-1380033.html | archive-date=20 April 2012|title=openSUSE 12.1 arrives with systemd and Btrfs |author=Chris von Eitzen |publisher=The H |date=2011-11-16 |access-date=2011-11-16}}
  • Upstart is used in HP's webOS for the Palm Pre, Palm Pixi (both before Palm was bought out by HP), HP Veer, and HP Pre 3 smart phones, along with the HP TouchPad tablet.{{citation|url=http://mjg59.livejournal.com/111453.html |title=Palm Pre |access-date=2009-07-09 |date=2009-06-10 |first=Matthew |last=Garrett |author-link=Matthew Garrett |url-status=dead |archive-url=https://web.archive.org/web/20091223142117/http://mjg59.livejournal.com/111453.html |archive-date=2009-12-23 }}
  • Upstart replaced the sysvinit in Maemo 5 for Nokia Internet tablets.{{citation |url=http://wiki.maemo.org/Task:Maemo_roadmap/Fremantle |publisher=Maemo |title=Fremantle |access-date=2009-08-24}}

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 systems, such as systemd.{{Cite web|title=Archive of upstart.ubuntu.com on Dec 30, 2018|url=http://upstart.ubuntu.com/|archive-url=https://web.archive.org/web/20181230204902/http://upstart.ubuntu.com/|archive-date=2018-12-30|url-status=live}}

See also

References

{{Reflist|30em}}