Launchpad Entry: foundations-o-live-build
Packages affected: livecd-rootfs, live-build
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.
Live CD images are now built using live-build, making it easier for users to build customised images.
Aside from general flexibility, live-build is also used by Canonical's OEM Services team, so switching to it provides internal benefits as well.
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.
Current differences on i386 (live-build 3.0~a17-1):
Present in live-build and not in livecd-rootfs:
- /etc/adjtime (OK)
Present in livecd-rootfs and not in live-build:
- /etc/apt/trusted.gpg~ (OK)
- /etc/group- (OK)
- /etc/gshadow- (OK)
- /etc/hosts (OK)
- /etc/shadow- (OK)
- /etc/udev/rules.d/70-persistent-net.rules (OK)
- apt-xapian-index (maybe that package needs adjusting?)
- /var/lib/dpkg/available-old (OK)
- /var/lib/dpkg/diversions-old (OK)
- /var/lib/dpkg/statoverride-old (OK)
- /var/lib/dpkg/status-old (OK)
- /var/log/apt/term.log (OK)
- /etc/apt/sources.list rather shorter in live-build
- /etc/hostname is localhost.localdomain in live-build (OK)
- /etc/kernel-img.conf shorter in live-build
- different set of updates applied (OK)
- debconf/frontend not marked seen in live-build (OK)
- dictionaries-common/default-wordlist marked seen in live-build (don't care?)
- 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
- lots of English locales added to /var/lib/belocs/hashfile in live-build (OK)
- zh_CN.utf8, zh_SG.utf8 added to /var/lib/belocs/list in live-build (OK)
- linux-image-2.6.38-8-generic, linux-base removed from /var/run/reboot-required.pkgs in live-build (don't care)
compress initramfs with lzma (http://bugs.debian.org/627677)
More configuration required:
- --linux-packages (especially on non-i386)