chiark / gitweb /
Single-stage installer
authorcjwatson <>
Tue, 3 Jan 2006 15:32:27 +0000 (15:32 +0000)
committercjwatson <>
Tue, 3 Jan 2006 15:32:27 +0000 (15:32 +0000)
ubuntu/2006-01-03-single-stage-installer.txt [new file with mode: 0644]

diff --git a/ubuntu/2006-01-03-single-stage-installer.txt b/ubuntu/2006-01-03-single-stage-installer.txt
new file mode 100644 (file)
index 0000000..89ab213
--- /dev/null
@@ -0,0 +1,88 @@
+Single-stage installer
+
+<p>Hot on the heels of
+<a href="http://kitenet.net/~joey/blog/entry/all_this_for_a_progress_bar-2005-12-27-20-32.html">
+Joey's tale of getting rid of base-config</a> (the second stage of the
+installer) in Debian, we've now pretty much got rid of it in Ubuntu Dapper
+too. The upshot of this is that rather than asking a bunch of questions,
+installing the base system, and rebooting to install everything else, we now
+just install everything in one go and reboot into a completed system.</p>
+
+<p>This does mean that, if your system doesn't boot, you don't get to find
+out about it for a bit longer. However, it has lots of advantages in terms
+of speed (the much-maligned archive-copier mostly goes away), reducing code
+duplication (base-config had a bunch of infrastructure of its own which was
+done better in the core installer anyway), comprehensibility, and killing
+off some annoying bugs like
+<a href="https://bugzilla.ubuntu.com/show_bug.cgi?id=13561">#13561
+(duplicate mirror questions in netboot installs)</a>,
+<a href="https://bugzilla.ubuntu.com/show_bug.cgi?id=15213">#15213 (second
+stage hangs if you skip archive-copier in the first stage)</a>, and
+<a href="https://bugzilla.ubuntu.com/show_bug.cgi?id=19571">#19571 (kernel
+messages scribble over base-config's UI)</a>.</p>
+
+<p>To go with Joey's Debian timeline, the Ubuntu history looks a bit like
+this:</p>
+
+<ul>
+  <li>2004 (Jul): First base-config modifications for Ubuntu; we need to
+  install the default desktop rather than dropping into tasksel.</li>
+
+  <li>2004 (Aug): Mark phones me up and asks if I can make the installer not
+  need the CD in the second stage by copying all the packages across
+  beforehand. Although it's a bit awkward, I can see the UI advantages in
+  that, so I write archive-copier at the Canonical conference in
+  Oxford.</li>
+
+  <li>2004 (Sep): Mark asks me if we can ask the timezone, user/password,
+  and apt configuration questions before the first reboot. With less than a
+  month to go until our first release, I have a
+  <a href="http://lists.ubuntu.com/archives/ubuntu-devel/2004-September/000103.html">
+  heart-attack</a> at how much needs to be done, and it eventually gets
+  deferred to <a href="https://wiki.ubuntu.com/HoaryGoals">Hoary</a>.</li>
+
+  <li>2005 (Jan): Matt fixes up debconf's passthrough frontend for use on
+  the live CD, and we realise that this is an obvious way to run bits of
+  base-config before the first reboot. It's rather messy and takes until
+  March or so before it really works right, but we get there in the
+  end.</li>
+
+  <li>2005 (Apr): I get "put a progress bar in front of the dpkg output in
+  the second stage" as a
+  <a href="https://wiki.ubuntu.com/UbuntuDownUnder/BOFs/InstallerStage2Progress">goal</a>
+  for Breezy. Na&iuml;vely, I think it's a simple matter of programming,
+  since I'd already done something similar for debootstrap and
+  base-installer the previous year.</li>
+
+  <li>2005 (May): I hack progress bar support into debconf. Nothing actually
+  uses it for anything yet, except as a convenient passthrough stub.</li>
+
+  <li>2005 (Jul/Aug): I actually try to implement the second-stage progress
+  bar and realise that it's about an order of magnitude harder than I
+  thought, requiring a whole load of extra infrastructure in apt.
+  Fortunately Michael Vogt saves the day here by writing lots of working
+  code, and the progress bar works by early August.</li>
+
+  <li>2005 (Sep-Dec): Upstream d-i development ramps back up again, with
+  tzsetup, clock-setup, apt-setup, and user-setup all being cranked out in
+  short order and the corresponding pieces removed from base-config. I merge
+  these as they mature, and manage to get
+  <a href="http://lists.debian.org/debian-boot/2005/10/msg01407.html">
+  agreement</a> on including the Ubuntu debconf template changes in upstream
+  apt-setup, which helps the diff size a lot.</li>
+
+  <li>2005 (Nov/Dec): Joey and I
+  <a href="http://lists.debian.org/debian-boot/2005/11/msg01381.html">chat</a>
+  one evening about the Ubuntu second-stage progress bar work, and we end up
+  designing and writing debconf-apt-progress based on its ideas, after which
+  Joey knocks up pkgsel in no time flat.</li>
+
+  <li>2006 (Jan): The rest of the pieces land in Ubuntu, and we drop
+  base-config out of the installer. To my surprise, nearly everything still
+  just works.</li>
+</ul>
+
+<p>Although it caused some friction, I'm glad that we did the first cuts of
+many of these things outside Debian and got to try things out before landing
+version-2-quality code in Debian. The end result is much nicer than the
+intermediate ones ever were.</p>