Server boot experience

Registered by Robbie Williamson on 2011-04-25

Review of the Ubuntu Server boot experience, looking at what we do now and what we should change to provide a better experience to meet the needs of our userbase, i.e. option for detailed messaging, upstart improvements, etc.

Blueprint information

Status:
Complete
Approver:
Robbie Williamson
Priority:
High
Drafter:
Clint Byrum
Direction:
Approved
Assignee:
Ubuntu Server
Definition:
Approved
Series goal:
Accepted for oneiric
Implementation:
Implemented
Milestone target:
milestone icon oneiric-alpha-3
Started by
Dave Walker on 2011-07-02
Completed by
Clint Byrum on 2011-09-06

Whiteboard

Status: progress on some work items. https://bugs.launchpad.net/ubuntu/+bugs?field.tag=runlevel1 bugs reported.

Work Items:
[cjwatson] turn off quiet for server: DONE
[jamesodhunt] allow upstart visualization tool to filter out jobs/events that aren't in existence: POSTPONED
[clint-fewbar] define/document a simple job/alias/event for "networking up", for generic network services (event: static-network-up): DONE
define/document a simple job/alias/event for "system has booted", for /etc/rc.local type behavior (note that 'stopped rc' is usable but not well documented): POSTPONED
improve start on for cron and other services (start when all user info available) (cron should probably start on stopped rc): POSTPONED
update Upstart Cookbook with "abstract jobs" and full exposition of how to define optimal "start on" and "stop on" for a new job: POSTPONED
[clint-fewbar] file bugs on services that don't respect single user mode appropriately: bug tag 'runlevel1' used for 21 bugs filed: DONE
[clint-fewbar] automated testing for single to multiuser: POSTPONED
[clint-fewbar] add init-checkconf rule to lintian for upstart jobs (may be infeasible as emits lines aren't always available to validate start/stop on conditions): POSTPONED
need to measure boot speed difference between sourcing /etc/default files, and not: POSTPONED

N/A work:
define/document a simple job/alias/event for "local filesystems are up", for local services -- already exists, local-filesystems
define/document a simple job/alias/event for "network filesystems are up", for network filesystem services - already exists, remote-filesystems

Ideas

 * Serialize for debugging
 * Logging of job output (ideas also in upstart bug list)
 * Fencing (well defined sync points for boot)
   http://upstart.at/wp-content/uploads/2011/03/initctl2dot.png

   * as late as possible -- grub common one example for init.d

 * Generic Jobs (network-services, etc)
   * Document best practice in /usr/share/doc/upstart/examples and man page
 * Delay until all network interfaces are up
 * Default to always showing plymouth upstart bridge output

* runlevel 1 and back to 2 doesn't work right
  * useful for emergency maintenance recovery
* consider adding call to init-checkconf to lintian rule to ensure job config syntactically valid
* clean-up behaviour of single-user mode
* /etc/default/* -> what to do

Actions:

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.