Sometime this month, debootstrap turns six years old. I was thinking about this last night as I tweaked a new xen instance that the hosting provider had installed Debian on using debootstrap, while in the other window using a debootstraped system to investigate a weird apt premissions problem. All very standard, and between this kind of thing, installing Debian with d-i, and building packages with pbuilder, a lot of us would be lost without debootstrap now.

The story of exactly how it came about is interesting, though it's blurred by time in my memory. Maybe AJ will correct me, but I think it went something like this:

  • Aeons ago, every Debian system was bootstrapped using a root filesystem tarball, which was built using the basedisks.sh script in the boot-floppies source. That ugly thing hardcoded a bootstrap sequence that managed to work most of the time, and had a lot of code to work around issues in various packages in bae. IIRC it needed a local mirror, and lots of babysitting to keep it working.

  • When I suggested that boot-floppies be rewritten, and modularised, I'm fairly sure that I pointed to basedisks.sh as one thing that would make a useful standlone module, but I can't find proof of that.

  • In late 2000, AJ posted to a thread about one of the first d-i demo systems with something he was calling "base-deb", that is a recognisable prototype of debootstrap. It downloaded debs from a mirror and built a chroot on the fly.

  • After some back and forth over the next couple weeks regarding how it would work with d-i, AJ released the first version of debootstrap on January 30th.

  • It's sorta hard to believe now, but there was a lot of push-back on the idea of bootstrapping Debian on the fly, rather than using the old tarball. Much of it was inertia; some of it was legitimate concerns about whether it would work robustly. IIRC these concerns kept coming up right through the release of woody in 2002, the first version of Debian to install using debootstrap. In fact, woody still included a basedebs.tar, although it was built using debootstrap.

  • While various rough edges were filed off over the years, there were no really big changes after that to debootstrap until 2005 then debootstrap finally got smart enough to resolve dependencies, rather than using the hardcoded lists of what packages to install in what order, that it had inherited from the boot-floppies.

Debootstrap is one of my favorite examples of a tool that ends up being much more general purpose than was first envisioned (at least by me; AJ may have known all along). The collection of stuff that has grown up around it and the way it's changed how both Debian developers and users work is pretty impressive.