DebianUbuntuSprint

Differences between revisions 1 and 29 (spanning 28 versions)
Revision 1 as of 2009-06-15 13:50:30
Size: 8329
Editor: robbie.w
Comment:
Revision 29 as of 2009-06-24 15:24:33
Size: 11725
Editor: pere-hungry
Comment: Some debian fixes in place.
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
||<tablestyle="float:right; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Table of Contents'''<<BR>> <<TableOfContents>>||
Line 6: Line 8:

=== Getting to the Building ===
27th Floor, Millbank Tower<<BR>>
21-24 Millbank<<BR>>
London<<BR>>
SW1P 4QP<<BR>>
Tel: +44 (0)20 7630 2400<<BR>>
 * [[http://maps.google.co.uk/maps/ms?f=q&hl=en&ie=UTF8&cd=2&om=1&msa=0&msid=116834975520045313395.000001129e487c9561c11&ll=51.494771,-0.130591&spn=0.011142,0.029182&z=15|Google map to the building]]

=== Getting Inside ===
Visitors will need to tell reception in the main lobby that they are visiting Canonical. Once confirmed, you will be asked to sign in and issued a visitor badge, which you must carry with you.
Line 26: Line 17:
|| Name || Arrival Date/Time || Arrival Airline/Flight# || Departure Date/Time || Departure Airline/Flight# ||
|| Robbie Williamson ||

== Accommodation ==
~+[[http://www.parkplaza.com/londonuk_riverbank|Park Plaza Riverbank]]+~
=== Directions to Park Plaza Riverbank ===
[[http://maps.google.co.uk/maps/ms?f=q&hl=en&ie=UTF8&cd=2&om=1&msa=0&msid=116834975520045313395.000001129e487c9561c11&ll=51.494771,-0.130591&spn=0.011142,0.029182&z=15| Google Map to Park Plaza Riverbank]]
=== From London Gatwick (40m) ===
 * From Arrivals, head towards signs for the Train station
 * Don't be fooled by the Gatwick Express signs, it's not that much faster and is much more expensive.
 * Take a Southern train to Victoria. (35 min)
 * Once at Victoria, follow signs for the London Underground.
 * Take a southbound Victoria Line train heading for "Brixton" (5m)
 * Leave the underground at Vauxhall, follow directions below

=== From London Heathrow ===
 * For a door to door ride (the time of day directly effects length of ride) use dot2dot. Reported to have on-board WiFi.<<BR>>

 They have counters next to the auto rental counters in terminals 1,3,4, &5. At terminal 2 go to the information desk in arrivals<<BR>>
 Current price as of 29 Oct 2008 was £16 one way Heathrow to downtown London and drop you at the door of the Park Plaza Riverbank or the office. This may be a special price for the month of October, regular price is £20. Discounts if more then one person in group. All pre-booked customers are guaranteed a place and we will have you on your way within 20 minutes* of checking in for your Dot2Dot service, so it might be worth booking on the web site before trip.

 They will pick up downtown and take you to the airport too.<<BR>>

 According to the driver available 24 hours a day. [[http://www.dot2.com/Home.aspx|dot2dot]]
=== From London Heathrow (45m) ===
 * From Arrivals, head towards signs for the London Underground
 * Take an eastbound Piccadilly Line train heading for "Cockfosters" (30min)
 * Change at Green Park for a southbound Victoria Line train heading for "Brixton" (5m)
 * Leave the underground at Vauxhall, follow directions below

=== From Vauxhall Station ===
 * Walk north along Albert Embankment (5-10 min)
 * Hotel is on the right hand side of the road.

=== Places to eat ===

||Name ||Address ||Type of Cuisine ||Price ||Hours ||Distance (walking) ||
|| Pizza Express || Millbank Center<<BR>>Tel. 020 7976 6214|| Italian || Average £15 || Mon-Sun 12pm-11pm || 2 min ||
|| The Morpeth Arms || 58 Millbank, <<BR>>Westminster, London SW1P 4RW <<BR>>Tel. 20 78346442 <<BR>>www.youngs.co.uk || Pub Food || Average Price: £10|| Daily 10:30-23:00 <<BR>>Food 11:00 - 22:00|| 10 min ||
|| The English Maid || Albert Embankment London, SE1<<BR>> Docked in front ofPark Plaza Riverbank. <<BR>>Tel: 020 75821066<<BR>> Has free Wi''''''Fi for customers|| Pub Food || lunch dinner Average Price: £10|| Daily 11:00-01:00|| 7 min ||
|| City Cafe || Enter via Thorney St (behind Pizza Express)<<BR>>Tel. 020 7932 4600 || Modern European || 2-course set lunch £10, a la carte dinner more expensive || Mon- Sat 7am-10.30pm / Sun 7am-10pm || 5 min ||
|| Rex Whistler Restaurant at Tate Britain || Tate Britain, Millbank, SW1P 4RG<<BR>>Tel. +44 20 7887 8825 www.tate.org.uk || Modern European || Main courses £15-£20 ||Mon-Sun 10am-5.30pm || 5 min ||
|| Goya || 4 Lupus Street, SW1V 3EB<<BR>>Tel. +44 20 7976 5309 www.goyarestaurant.co.uk|| Spanish || Main courses £10-£16 || Mon-Sat 12pm-12am / Sun 12pm-11.30pm || 8 min ||
|| The Atrium || 4 Millbank, SW1P 3JA<<BR>>Tel. +44 20 7233 0032 www.atriumrestaurant.com|| International || Main Courses £9.95-£19.75 / 2 courses menu £17.95 ||Mon-Fri 12pm-3pm / 6pm-11pm || 8 min ||
|| Quirinale North Court || 1 Great Peter Street SW1P 3LL<<BR>Tel. +44 20 7222 7080 www.quirinale.co.uk || Italian || Main Courses £12.50-£19 || Mon-Fri 12pm - 2.30 pm / 6pm - 10.30pm||8 min ||
|| Queen's Arms || 11 Warwich Way, Pimlico, SW1V 1QT www.thequeensarmspimlico.co.uk || Pub Food || Average Meal £8-£10 ||Mon-Sat 12pm-11pm / Sun 12pm-10.30pm ||8 min ||
|| Kazan || 93-94 Wilton Road, SW1V 1DW<<BR>>Tel. +44 20 7233 7100 www.kazan-restaurant.com|| Turkish || Main courses £9.95-£17 / 2 courses menu £9.99-£14.95 ||Tues-Sat 12pm-10:45pm/ Sun-Mon 12pm-10:30pm ||10 min ||
|| DimT|| 56 – 62 Wilton Road Victoria London, SW1V 1DE<<BR>>Tel. 020 7834 0507 www.restaurant-guide.com/dim-t-victoria.htm || Asian Fusion || Main courses £8-£10 ||Mon-Sun 12pm-11.30pm || 10 min ||
|| Vincent Rooms || Victoria Centre, Vincent Square, SW1P 2PD<<BR>>Tel. +44 20 7802 8391 www.westking.ac.uk|| Modern European || Main courses £7.25-£10.50 / 3 courses menu (incl coffee) £22.50||Mon-Fri 12pm-2pm / 6pm-9pm ||10 min ||
|| Atami || 37 Monck Street, SW1P 2BL<<BR>>Tel. +44 20 7222 2218 www.atamirestaurant.co.uk|| Japanese || Main courses £12.50-£21.50 / Set lunch £8.50-£18 || Mon-Fri 12pm-3pm & 5:30pm-11pm / Sat 5:30pm-11pm ||10 min ||
|| Grumbles || 35 Churton Street, Pimlico, London SW1V 2LT<<BR>>Tel: 020 7834 0149 www.grumblesrestaurant.co.uk|| Bistro || Main courses £8-£16 || Mon-Sat 12pm-10.45pm / Sun 12pm-10.30pm ||10 min ||
|| Coriander ||332 Kennington Lane Vauxhall, London SE11 5HY www.thecoriander.com|| Indian || Main courses £7 ||Mon-Sat 12pm-2.30pm / 5.30pm-11pm / Sun 1pm-11pm || 10 min ||
|| Caramel || 77 Wilton Rd Victoria, London SW1V 1<<BR>>Tel.020 7233 8298 www.london-eating.co.uk/6386.htm|| Turkish || Main courses £20 || Tue-Sat 9am-11pm || 10 min ||
|| Cinnamon Club || The Old Westminster Library 30-32 Great Smith Street, SW1P 3BU <<BR>>Tel. +44 20 7222 2555 www.cinnamonclub.com|| Indian || Main courses £11-£29 / 2 courses set menu £19 / 3 courses set menu £22 ||Mon-Fri 7.30am-9.30am & 12pm-2.30pm & 6pm-10.45pm / Sat 6pm-10.45pm || 15 min ||
|| Bank Westminster || 45 Buckingham Gate, SW1E 6BS<<BR>>Tel. +44 20 7379 9797 www.bankrestaurants.com|| Modern European || Main courses £10.50-£30 || Mon-Fri 12pm-3pm & 5.30pm-10.30pm Sat 5.30pm-10.30pm || 15 min ||
|| Contented Vine || 17 Sussex Street SW1V 4RR<<BR>>Tel. 020 7834 0044 www.contentedvine.com|| Bistro Brasserie || 2 courses set menu £11.50 / 3 courses set menu £14.50 || Mon 5.30pm-10.30pm / Tue-Fri 12pm-3pm & 5pm-10.30pm / Sat-Sun 10am-10pm ||15 min ||
|| Cafe Madeira || # 46A-46B Albert Embankment, Vauxhall, SE1 7TN<<BR>>Tel: 020 7820 1117|| Portuguese || Average £5 || Mon-Sun 6am-9pm ||16 min ||
|| Hot Stuff || 19 Wilcox Rd, London, SW8 2XA<<BR>>Tel: 020 77201480‎ || Indian || £5-£10 || Mon-Fri 12pm-10pm / Sat 3pm-10pm (booking essential, no parties > 10) || 15-20 min ||
|| Bar Estrela || 111-115 South Lambeth Road, London, SW8 1UZ - 020 7793 1051‎ || Portuguese Tapas || £5-£10 || Usual || 15-20 min ||
|| Rebato's || 169 South Lambeth Rd, London, SW8 1XW - 020 75828089‎ || Spanish Tapas || £10-£15 || Mon-Fri 12-2.30pm/5.30-10.45pm / Sat 7-10.45pm || 15-20 min ||
|| South Bank Centre || Southbank Centre, Belvedere Road, SE1 8XX,‎ || Loads to choose || £5-£30 || Mon-Sun 9am-11pm || 20-25 min ||
||Mekong || [[http://www.london-eating.co.uk/3643.htm|46 Churton St, London, SW1V 2LP]] <<BR>>Tel: 0871 0757044. Quality varies|| Vietnamese || £15-£20 || ?? || ?? ||
 * ColinWatson
 * [[http://qa.debian.org/developer.php?login=kel%40otaku42.de|KelModderman]]
 * LukClaes
 * [[http://www.michaelbiebl.de/|MichaelBiebl]]
 * [[http://www.hungry.com/~pere/|PetterReinholdtsen]]
 * RobbieWilliamson
 * ScottJamesRemnant
 * SteveLangasek
Line 90: Line 27:
 * Current boot speed of Ubuntu and Debian
  * Comparison of bootchart data
  * Analyze differences
 * Future plans for Ubuntu and Debian
  * sysvinit
  * upstart
 * Ways Debian and Ubuntu can leverage each others progress
 * Next Steps?
  * [[http://debconf9.debconf.org/|DebConf]]
  * How to continue communication, i.e. mailing list, wiki page, etc?
Line 91: Line 38:
== Post Event Evaluation ==
 * TBD
== Notes ==
=== Considerations for Transitioning Debian to Use upstart ===
 * Preconditions for /sbin/init as upstart:
  * /etc/inittab backwards-compatibility support
   * should reuse the existing inittab conversion script to spit out jobs to a tmp dir that upstart reads from
   * inotify watch /etc/inittab, generate event when it changes and hook up an upstart job to run the conversion script
  * sysv-rc support for upstart jobs (/lib/init/upstart-job)
  * dh_installupstart
  * update-rc.d, invoke-rc.d implementation that can DTRT with upstart jobs
 * a soft migration in Debian will be more easily accepted
 * could have upstart read /etc/init.d/* as a directory of conf files in a different "format" and parse the LSB headers
  * LSB expressed interest in this approach
 * could have a "translator" app, e.g. run-upstart-server, to allow sysvinit to execute /etc/init/*.conf files
 * What we do with the non-Linux port?
  * Get upstart working with BSD implement upstart job compat with sysvinit
  * upstart/sysvinit bi-directional dependency handling

=== Transition from sysvinit to upstart ===
[[attachment:whiteboard01.pdf|sysvinit-upstart relationship drawing]]
 * /lib/init/upstart-job is either:
  * (sysvinit installed) a helper utility built from upstart source that provides a wrapper for running the named upstart service as if it were an init script
  * (upstart installed) a helper utility that will warn the user about using /etc/init.d/$JOB and run 'service $JOB start' instead
 * upstart-job needs an option to spit out the LSB headers to feed them to things like insserv
 * insserv needs to check, if /etc/init.d/foo is a symlink to /lib/init/upstart-job and in that case call the init script with the right option to get LSB header and not directly parse the file (proposed option name: '/lib/init/upstart-job <service basename> lsb-header')
 * dh_installupstart to autogenerate an init script symlink shipped in the package
   * Add dependency on upstart-job to misc:Depends
   * Generate symlink /etc/init.d/foo -> /lib/init/upstart-job
  * need to run the dh_installupstart design past joeyh early
 * upstart-job is provided by a package that provides virtual package (prob. upstart-job), this can be upstart or sysv-compat-upstart depending which version is required
 * upstart-job must be buildable on all architectures and should be part of the upstart source package. For architectures where upstart currently fails to builds (like kfreebsd/hurd), it should be possible to disable compilation.
 * /lib/init/upstart-job should have no dependencies on anything in /usr, should be possible to be implemented in shell, but preferably implemented in C for speed reasons.
 * packages shipping upstart job files must depend on this virtual package (handled by the debhelper script)

=== /etc/inittab Support ===
 * runs between rcS and rc2
 * based on existing migration script
 * copies from /etc/event.d (... /etc/init?) to /lib/init/rw/event.d and rewrites
 * adds new files to /lib/init/rw/event.d
 * upstart reads the latter directory via inotify
 * need signal that instructs upstart to re-run that script (init q)

=== Reviewed of Debian Unstable Bootchart ===
 * [NEED LINK TO BOOTCHART]
  * hwclock & hwclock.sh....why?
  * why is modprobe slow in the initramfs?
  * x-session starting about 4 secs after Xorg (gdm bug)
  * need to install a '''newer''' version of readahead
   * current readahead has problems which cause boot failure under certain circumstances
   * using sreadahead would provide an improvement on SSDs
  * loadcpufreq possibly not needed with some kernel tuning

=== service Command ===
 * initial implementation available in Ubuntu, implements the traditional start/stop/status commands
  * bug filed in Debian: [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=534300|#534300]]
 * the service script should be a common implementation in sysvinit-utils, the common Essential: yes package
 * one backend implementation for each rc system (sysv-rc, file-rc, insserv, and upstart), via update-rc.d
  * spec out the interface first, then migrate functionality into the rc system packages
  * documentation for {{{update-rc.d}}} (policy, manpages) should be explicit that these interfaces are internal to {{{service}}}, and are '''not''' meant for use by maintainer scripts (... nor users)
 * http://lists.debian.org/debian-devel/2009/04/msg00017.html
 * enable|disable feature - if provided at update-rc.d layer we need to ensure sysvinit-utils depend on versions of packages which provide update-rc.d with enable|disable feature (Provides?)
 * uncertainty and doubt whether update-rc.d is correct layer to contain the disable|enable implementations
  * can reuse existing code within update-rc.d
  * update-rc.d should not become more appealing to users - it is not intended for them to use. Adding this functionality does just that however ...
  * need to define new interfaces in policy?

==== service Backend / update-rc.d Extensions Requirements ====
 1. Enable/disable service (user-facing)<<BR>>
  [2345]/Sxx <-> [2345]/K(100-xx)
 2. Remove link (usually 0/6, but not always) (maintainer script)<<BR>>
  R/[SK]xx -> null
 3. Add link, e.g. due to bugs such as copying RH runlevel setup (maintainer script)<<BR>>
  null -> R/[SK]xx
 4. Move link in sequence (maintainer script)<<BR>>
  R/[SK]xx -> R/[SK]yy (atomic)
 5. Move link between runlevels (maintainer script)<<BR>>
  X/Sxx -> Y/Syy (atomic)

==== update-rc.d Syntax ====
Explored several possibilities for update-rc.d syntax to edit links: general idea is that you have one correct current state, but also some previous valid states which should be considered as package-generated rather than user-configured

{{{
update-rc.d service start 80 S . was start 99 2 3 4 5 .

if dpkg --compare-versions "$2" lt blah; then
    PREV='was start 99 2 3 4 5 .'
fi
update-rc.d start 80 S . $PREV

update-rc.d service start 30 2 3 4 5 .
if dpkg --compare-versions "$2" lt blah; then
    update-rc.d service replace start 20 2 3 4 5 . 30 2 3 4 5 .
fi
}}}

 * Difficult case is when you have multiple logically-distinct changes; e.g. pcmciautils wants to remove 0 and 6 links (teardown), and, independently, move rcS.d/S40 to rcS.d/S13 (Ubuntu boot ordering)
 * Petter suggests a `replace` command which can express a change rather than a previous state
 * Useful to have dh_installinit deal with version check generation, so that no maintainer script code needs to be written by hand

==== Actions Required by service Backend ====
 * enable (service should run automatically from now on)
 * disable (service should not run automatically from now on)
 * query (output representation of current state of service)
 * start (start service immediately, regardless of policy)
 * stop (stop service immediately, regardless of policy)
 * status (enquire whether service is currently running, as in `/etc/init.d/service status`)
 * list-services (list all service names)
 - `/usr/lib/service/backend` as interface name <<BR>>
 - Petter wants to avoid races between multiple diversions (possible solution: symlink, though this means that everything ends up in update-rc.d which would encourage people to use it; may be partially soluble with good documentation)<<BR>>

=== Debian sysvinit ToDo List ===
 * revert mtab -> /proc/mounts symlink patch => requires further discussion. It seems to break things currently. (Unstable fixed 2009-06-23)
 * fsck should run even if on_ac_power #526398 (Unstable fixed 2009-06-23)
 * devpts in mountvirtfs.sh -> non-udev case? need to check
 * move startpar to sysvinit-utils (Unstable fixed 2009-06-23)
 * contact openSuSE boot people to find out if they have plans to move away from sysvinit[?]
 * cleanup debian/rules, debian/patches/* anyone?
   * move from dpatch -> quilt, conform with new package format standards (eg. do not patch ./debian/* !)
   * use a bit of debhelper in debian/rules

=== Bootchart Package ===
 * Scott has written a new bootchart which is more featureful, we should consider adopting it
 * currently packaged bootchart is dead upstream
 * currently packaged bootchart does not collect information from kernel/initramfs phase
 * split source packages ? ubuntu have bootchart (the collector), bootchart-java (the java chart 'renderer' that is currently in Debian)
 * contact current bootchart Debian maintainer and let him know about Scott's new work [kel]
 * need to reliably test and record boot performance on Debian [kel]
  * Canonical provided Kel a Dell Mini 9 for this work :)

=== Dash as /bin/sh ===
 * communicate to users of Debian why using dash as /bin/sh is a good thing. Ubuntu stuff => https://wiki.ubuntu.com/DashAsBinSh
 * raphael has done much work in Debian to make it possible for squeeze, contact him about his current opinion in regards to making it a default

=== insserv in Ubuntu to Validate LSB-header-declared Dependencies? ===

{{{
<cjwatson@sarantium ~>$ /usr/share/insserv/check-initd-order
error: Unable to read /etc/rc2.d/S81update-motd at /usr/share/insserv/check-initd-order line 373.
LSB header missing in /etc/rcS.d/S07linux-restricted-modules-common
Incorrect order checkroot@20 > /etc/rcS.d/S15module-init-tools15
LSB header missing in /etc/rc2.d/S10powernowd.early
Incorrect order avahi@50 > /etc/rc2.d/S28libvirt-bin28
LSB header missing in /etc/rc2.d/S30gdm
error: Unable to read /etc/rc2.d/S81update-motd at /usr/share/insserv/check-initd-order line 373.
LSB header missing in /etc/rc2.d/S81update-motd
LSB header missing in /etc/rc2.d/S99acpi-support
<cjwatson@sarantium ~>$ /usr/share/insserv/check-initd-order -k
LSB header missing in /etc/rc6.d/K01gdm
}}}

 * checkroot/module-init-tools: looks like a bug in module-init-tools saying Should-Start: checkroot
 * avahi/libvirt-bin: libvirt-bin needs avahi, started at wrong point?

Dependency graph: {{{/usr/share/insserv/check-initd-order -g | dot -Tpdf > init.pdf}}}

LSB headers but no dependencies: kvm ([[https://bugs.launchpad.net/ubuntu/+source/kvm/+bug/391121|Ubuntu #391121]]), apparmor

=== Communication Plan ===
 * Send a summary out to ubuntu-devel[robbie] and debian-devel about this meeting and the outcomes
 * Provide the reasons WHY we care about boot performance [scott]
 * Highlight the reasons (not just bootspeed) why switching to upstart is a *good* thing (e.g. reliability, coping with an async kernel)

What

Debian/Ubuntu Boot Performance Sprint

Where

Canonical's Millbank Office, London, UK

When

  • Monday & Tuesday, June 22/23, 2009

  • 9am - 6pm

Why

Investigate creating a joint Ubuntu-Debian team to look into how both distributions can work together to improve boot performance.

Who

Topics of Discussion

  • Current boot speed of Ubuntu and Debian
    • Comparison of bootchart data
    • Analyze differences
  • Future plans for Ubuntu and Debian
    • sysvinit
    • upstart
  • Ways Debian and Ubuntu can leverage each others progress
  • Next Steps?
    • DebConf

    • How to continue communication, i.e. mailing list, wiki page, etc?

Notes

Considerations for Transitioning Debian to Use upstart

  • Preconditions for /sbin/init as upstart:
    • /etc/inittab backwards-compatibility support
      • should reuse the existing inittab conversion script to spit out jobs to a tmp dir that upstart reads from
      • inotify watch /etc/inittab, generate event when it changes and hook up an upstart job to run the conversion script
    • sysv-rc support for upstart jobs (/lib/init/upstart-job)
    • dh_installupstart
    • update-rc.d, invoke-rc.d implementation that can DTRT with upstart jobs
  • a soft migration in Debian will be more easily accepted
  • could have upstart read /etc/init.d/* as a directory of conf files in a different "format" and parse the LSB headers
    • LSB expressed interest in this approach
  • could have a "translator" app, e.g. run-upstart-server, to allow sysvinit to execute /etc/init/*.conf files
  • What we do with the non-Linux port?
    • Get upstart working with BSD implement upstart job compat with sysvinit
    • upstart/sysvinit bi-directional dependency handling

Transition from sysvinit to upstart

sysvinit-upstart relationship drawing

  • /lib/init/upstart-job is either:
    • (sysvinit installed) a helper utility built from upstart source that provides a wrapper for running the named upstart service as if it were an init script
    • (upstart installed) a helper utility that will warn the user about using /etc/init.d/$JOB and run 'service $JOB start' instead
  • upstart-job needs an option to spit out the LSB headers to feed them to things like insserv
  • insserv needs to check, if /etc/init.d/foo is a symlink to /lib/init/upstart-job and in that case call the init script with the right option to get LSB header and not directly parse the file (proposed option name: '/lib/init/upstart-job <service basename> lsb-header')

  • dh_installupstart to autogenerate an init script symlink shipped in the package
    • Add dependency on upstart-job to misc:Depends
    • Generate symlink /etc/init.d/foo -> /lib/init/upstart-job

    • need to run the dh_installupstart design past joeyh early
  • upstart-job is provided by a package that provides virtual package (prob. upstart-job), this can be upstart or sysv-compat-upstart depending which version is required
  • upstart-job must be buildable on all architectures and should be part of the upstart source package. For architectures where upstart currently fails to builds (like kfreebsd/hurd), it should be possible to disable compilation.
  • /lib/init/upstart-job should have no dependencies on anything in /usr, should be possible to be implemented in shell, but preferably implemented in C for speed reasons.
  • packages shipping upstart job files must depend on this virtual package (handled by the debhelper script)

/etc/inittab Support

  • runs between rcS and rc2
  • based on existing migration script
  • copies from /etc/event.d (... /etc/init?) to /lib/init/rw/event.d and rewrites
  • adds new files to /lib/init/rw/event.d
  • upstart reads the latter directory via inotify
  • need signal that instructs upstart to re-run that script (init q)

Reviewed of Debian Unstable Bootchart

  • [NEED LINK TO BOOTCHART]
    • hwclock & hwclock.sh....why?

    • why is modprobe slow in the initramfs?
    • x-session starting about 4 secs after Xorg (gdm bug)
    • need to install a newer version of readahead

      • current readahead has problems which cause boot failure under certain circumstances
      • using sreadahead would provide an improvement on SSDs
    • loadcpufreq possibly not needed with some kernel tuning

service Command

  • initial implementation available in Ubuntu, implements the traditional start/stop/status commands
  • the service script should be a common implementation in sysvinit-utils, the common Essential: yes package
  • one backend implementation for each rc system (sysv-rc, file-rc, insserv, and upstart), via update-rc.d
    • spec out the interface first, then migrate functionality into the rc system packages
    • documentation for update-rc.d (policy, manpages) should be explicit that these interfaces are internal to service, and are not meant for use by maintainer scripts (... nor users)

  • http://lists.debian.org/debian-devel/2009/04/msg00017.html

  • enable|disable feature - if provided at update-rc.d layer we need to ensure sysvinit-utils depend on versions of packages which provide update-rc.d with enable|disable feature (Provides?)
  • uncertainty and doubt whether update-rc.d is correct layer to contain the disable|enable implementations
    • can reuse existing code within update-rc.d
    • update-rc.d should not become more appealing to users - it is not intended for them to use. Adding this functionality does just that however ...
    • need to define new interfaces in policy?

service Backend / update-rc.d Extensions Requirements

  1. Enable/disable service (user-facing)

    • [2345]/Sxx <-> [2345]/K(100-xx)

  2. Remove link (usually 0/6, but not always) (maintainer script)

    • R/[SK]xx -> null

  3. Add link, e.g. due to bugs such as copying RH runlevel setup (maintainer script)

    • null -> R/[SK]xx

  4. Move link in sequence (maintainer script)

    • R/[SK]xx -> R/[SK]yy (atomic)

  5. Move link between runlevels (maintainer script)

    • X/Sxx -> Y/Syy (atomic)

update-rc.d Syntax

Explored several possibilities for update-rc.d syntax to edit links: general idea is that you have one correct current state, but also some previous valid states which should be considered as package-generated rather than user-configured

update-rc.d service start 80 S . was start 99 2 3 4 5 .

if dpkg --compare-versions "$2" lt blah; then
    PREV='was start 99 2 3 4 5 .'
fi
update-rc.d start 80 S . $PREV

update-rc.d service start 30 2 3 4 5 .
if dpkg --compare-versions "$2" lt blah; then
    update-rc.d service replace start 20 2 3 4 5 . 30 2 3 4 5 .
fi
  • Difficult case is when you have multiple logically-distinct changes; e.g. pcmciautils wants to remove 0 and 6 links (teardown), and, independently, move rcS.d/S40 to rcS.d/S13 (Ubuntu boot ordering)
  • Petter suggests a replace command which can express a change rather than a previous state

  • Useful to have dh_installinit deal with version check generation, so that no maintainer script code needs to be written by hand

Actions Required by service Backend

  • enable (service should run automatically from now on)
  • disable (service should not run automatically from now on)
  • query (output representation of current state of service)
  • start (start service immediately, regardless of policy)
  • stop (stop service immediately, regardless of policy)
  • status (enquire whether service is currently running, as in /etc/init.d/service status)

  • list-services (list all service names)

    - /usr/lib/service/backend as interface name
    - Petter wants to avoid races between multiple diversions (possible solution: symlink, though this means that everything ends up in update-rc.d which would encourage people to use it; may be partially soluble with good documentation)

Debian sysvinit ToDo List

  • revert mtab -> /proc/mounts symlink patch => requires further discussion. It seems to break things currently. (Unstable fixed 2009-06-23)

  • fsck should run even if on_ac_power #526398 (Unstable fixed 2009-06-23)
  • devpts in mountvirtfs.sh -> non-udev case? need to check

  • move startpar to sysvinit-utils (Unstable fixed 2009-06-23)
  • contact openSuSE boot people to find out if they have plans to move away from sysvinit[?]
  • cleanup debian/rules, debian/patches/* anyone?
    • move from dpatch -> quilt, conform with new package format standards (eg. do not patch ./debian/* !)

    • use a bit of debhelper in debian/rules

Bootchart Package

  • Scott has written a new bootchart which is more featureful, we should consider adopting it
  • currently packaged bootchart is dead upstream
  • currently packaged bootchart does not collect information from kernel/initramfs phase
  • split source packages ? ubuntu have bootchart (the collector), bootchart-java (the java chart 'renderer' that is currently in Debian)
  • contact current bootchart Debian maintainer and let him know about Scott's new work [kel]
  • need to reliably test and record boot performance on Debian [kel]
    • Canonical provided Kel a Dell Mini 9 for this work Smile :)

Dash as /bin/sh

  • communicate to users of Debian why using dash as /bin/sh is a good thing. Ubuntu stuff => https://wiki.ubuntu.com/DashAsBinSh

  • raphael has done much work in Debian to make it possible for squeeze, contact him about his current opinion in regards to making it a default

insserv in Ubuntu to Validate LSB-header-declared Dependencies?

<cjwatson@sarantium ~>$ /usr/share/insserv/check-initd-order
error: Unable to read /etc/rc2.d/S81update-motd at /usr/share/insserv/check-initd-order line 373.
LSB header missing in /etc/rcS.d/S07linux-restricted-modules-common
Incorrect order checkroot@20 > /etc/rcS.d/S15module-init-tools15
LSB header missing in /etc/rc2.d/S10powernowd.early
Incorrect order avahi@50 > /etc/rc2.d/S28libvirt-bin28
LSB header missing in /etc/rc2.d/S30gdm
error: Unable to read /etc/rc2.d/S81update-motd at /usr/share/insserv/check-initd-order line 373.
LSB header missing in /etc/rc2.d/S81update-motd
LSB header missing in /etc/rc2.d/S99acpi-support
<cjwatson@sarantium ~>$ /usr/share/insserv/check-initd-order -k
LSB header missing in /etc/rc6.d/K01gdm
  • checkroot/module-init-tools: looks like a bug in module-init-tools saying Should-Start: checkroot
  • avahi/libvirt-bin: libvirt-bin needs avahi, started at wrong point?

Dependency graph: /usr/share/insserv/check-initd-order -g | dot -Tpdf > init.pdf

LSB headers but no dependencies: kvm (Ubuntu #391121), apparmor

Communication Plan

  • Send a summary out to ubuntu-devel[robbie] and debian-devel about this meeting and the outcomes
  • Provide the reasons WHY we care about boot performance [scott]
  • Highlight the reasons (not just bootspeed) why switching to upstart is a *good* thing (e.g. reliability, coping with an async kernel)

FoundationsTeam/BootPerformance/DebianUbuntuSprint (last edited 2009-07-08 15:30:01 by mbiebl)