DebianUbuntuSprint

Differences between revisions 16 and 17
Revision 16 as of 2009-06-24 09:26:35
Size: 9842
Editor: yttrium
Comment:
Revision 17 as of 2009-06-24 09:30:47
Size: 20128
Editor: yttrium
Comment: Added raw notes from sprint
Deletions are marked like this. Additions are marked like this.
Line 122: Line 122:
 * sysvinit-upstart relationship drawing: [[attachment:whiteboard01.pdf]] === Notes to consider when 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 FreeBSD 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: [[attachment:whiteboard01.pdf]]
 * /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: #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
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.
 * fsck should run even if on_ac_power #526398
 * devpts in mountvirtfs.sh -> non-udev case? need to check
 * move startpar to sysvinit-utils
 * 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 ===
 * 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]
  * kel will need hardware for this work [robbie]

=== 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

Getting to the Building

27th Floor, Millbank Tower
21-24 Millbank
London
SW1P 4QP
Tel: +44 (0)20 7630 2400

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.

Meeting room

Atacama meeting room has been booked from 9am-6pm, Mon & Tue

  • Access to meeting room- from 8:30am onwards
  • Lunch - 12.30-13.30
  • Meeting to close @ 6pm

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

Name

Arrival Date/Time

Arrival Airline/Train#

Departure Date/Time

Departure Airline/Train#

ColinWatson

06/22 9am-ish

train from Cambridge

06/23 7pm-ish

train to Cambridge

KelModderman

nil

Jubilee/Victoria Tube from NW2

nil

nil

LukClaes

06/21 12:26

Eurostar

06/24 12:57

Eurostar

MichaelBiebl

21Jun 12:45pm

BA 919

24Jun 20:05pm

BA 922

PetterReinholdtsen

RobbieWilliamson

06/21 9:30am

Virgin Atlantic 10

06/26 9:30am

Virgin Atlantic 3

ScottRemnant

21Jun 18:36pm

train from Birmingham

25Jun 10:23am

train to Birmingham

SteveLangasek

21Jun 10:15am

CO110

24Jun 12:05

CO111

Accommodation

Park Plaza Riverbank

Directions to Park Plaza Riverbank

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.

    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
    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.

    According to the driver available 24 hours a day. 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.

Meals

  • Breakfast is included at the hotel
  • Lunch in the Office (unless specified differently)
  • Dinner - free to make your own plans. The per diem for dinner is £18.

Places to eat

Name

Address

Type of Cuisine

Price

Hours

Distance (walking)

Pizza Express

Millbank Center
Tel. 020 7976 6214

Italian

Average £15

Mon-Sun 12pm-11pm

2 min

The Morpeth Arms

58 Millbank,
Westminster, London SW1P 4RW
Tel. 20 78346442
www.youngs.co.uk

Pub Food

Average Price: £10

Daily 10:30-23:00
Food 11:00 - 22:00

10 min

The English Maid

Albert Embankment London, SE1
Docked in front ofPark Plaza Riverbank.
Tel: 020 75821066
Has free WiFi 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)
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
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
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
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
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
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
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
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
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
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
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
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
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
Tel: 020 7820 1117

Portuguese

Average £5

Mon-Sun 6am-9pm

16 min

Hot Stuff

19 Wilcox Rd, London, SW8 2XA
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

46 Churton St, London, SW1V 2LP
Tel: 0871 0757044. Quality varies

Vietnamese

£15-£20

??

??

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

Notes to consider when 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 FreeBSD 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: whiteboard01.pdf

  • /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: #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)

    • [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.

  • fsck should run even if on_ac_power #526398
  • devpts in mountvirtfs.sh -> non-udev case? need to check

  • move startpar to sysvinit-utils
  • 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

  • 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]
    • kel will need hardware for this work [robbie]

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 e180076113)