Server boot experience

Registered by Robbie Williamson

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

Robbie Williamson
Clint Byrum
Ubuntu Server
Series goal:
Accepted for oneiric
Milestone target:
milestone icon oneiric-alpha-3
Started by
Dave Walker
Completed by
Clint Byrum


Status: progress on some work items. 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


 * Serialize for debugging
 * Logging of job output (ideas also in upstart bug list)
 * Fencing (well defined sync points for boot)

   * 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



Work Items

Dependency tree

* Blueprints in grey have been implemented.