##(see the SpecSpec for an explanation) * '''Launchpad Entry''': UbuntuSpec:foundations-o-live-build * '''Created''': 2011-05-23 * '''Contributors''': ColinWatson * '''Packages affected''': `livecd-rootfs`, `live-build` == Summary == Ubuntu live CD builds have always been based on an in-house tool called `livecd-rootfs`. Since we started Ubuntu, Debian has also been working on live CDs, and has a tool called `live-build` which is capable of building Ubuntu images as well. There is little sense in maintaining two separate tools, so since `live-build` is more flexible we should switch to it. == Release Note == Live CD images are now built using `live-build`, making it easier for users to build customised images. == Rationale == Aside from general flexibility, `live-build` is also used by Canonical's OEM Services team, so switching to it provides internal benefits as well. == Implementation == The main work involved in switching to `live-build` is to analyse the differences between a filesystem image created by `livecd-rootfs` and one created by `live-build` in detail, and reconcile all of them either by adjusting `live-build` configuration, by changing `live-build` itself, or by signing off on the difference as one we don't need to care about. Following this, we need to invent a way to pass `live-build` configuration across from the `cdimage` builder (because the ISO9660 wrapping will still be done on a single central machine, while live filesystems need to be built on machines of the appropriate architecture), and to run the appropriate build commands. For the time being, the `BuildLiveCD` script in `livecd-rootfs` will live on as a wrapper script for this, calling `lb config` and `lb build` to do the actual work. This may change in the future. The required arguments to `lb config` will reside in `cdimage` code, since updating BuildLiveCD requires a sysadmin RT ticket and it will be useful to have an immediate way to make configuration changes. === Outstanding differences === (i386, live-build 3.0~a21-1ubuntu1) Present in livecd-rootfs and not in live-build: * /usr/lib/firefox-4.0.1/dictionaries/DicOOo.sxw * /usr/lib/firefox-4.0.1/dictionaries/en-GB.aff * /usr/lib/firefox-4.0.1/dictionaries/en-GB.dic * /usr/lib/firefox-4.0.1/dictionaries/en-US.aff * /usr/lib/firefox-4.0.1/dictionaries/en-US.dic Other changes: * /etc/kernel-img.conf shorter in live-build * nvidia-common/obsolete-driver not set to false in live-build (why was it?) * gettext-base Auto-Installed: 0 in live-build * iso-codes Auto-Installed: 0 in live-build * libfreetype6 Auto-Installed: 0 in live-build * libfuse2 Auto-Installed: 0 in live-build * linux-headers-2.6.38-8 Auto-Installed: 1 in livecd-rootfs * linux-headers-2.6.38-8-generic Auto-Installed: 1 in livecd-rootfs * uuid-runtime Auto-Installed: 0 in live-build === Signed-off differences === (i386, live-build 3.0~a21-1ubuntu1) Present in live-build and not in livecd-rootfs: * /etc/adjtime * /etc/resolv.conf (empty, so harmless) Present in livecd-rootfs and not in live-build: * /etc/apt/trusted.gpg~ * /etc/group- * /etc/gshadow- * /etc/hosts * /etc/shadow- * /etc/udev/rules.d/70-persistent-net.rules * /var/lib/dpkg/available-old * /var/lib/dpkg/diversions-old * /var/lib/dpkg/statoverride-old * /var/lib/dpkg/status-old * /var/log/apt/term.log Other changes: * /etc/apt/sources.list rather shorter in live-build * /etc/hostname is localhost.localdomain in live-build * different set of updates applied * debconf/frontend not marked seen in live-build * dictionaries-common/default-wordlist marked seen in live-build (don't care?) * lots of English locales added to /var/lib/belocs/hashfile in live-build * zh_CN.utf8, zh_SG.utf8 added to /var/lib/belocs/list in live-build * linux-image-2.6.38-8-generic, linux-base removed from /var/run/reboot-required.pkgs in live-build ---- CategorySpec