Building customised Linux distributions

The development of PDK was undertaken by Progeny as part of the Debian Common Core (DCC) project, to provide a tool to share "components" between the various distributions which were part of the now discontinued DCC Alliance, the idea of which was to provide a common code base for GNU/Linux distributions based on the Debian code. Although the DCC project was the subject of some heavy criticism, from the likes of Mark Shuttleworth, and is now discontinued, the PDK technology has survived.

The idea was to develop high-level building blocks that consisted of more than bare DEB/RPM packages. These blocks, or "components" in the PDK terminology, were sets of packages providing specific macro-functionalities - like an installer, a bootable system, or a desktop environment. They allowed third parties to quickly develop their distributions by assembling high-level components, and ensured that they complied to the standards supported by the DCC project - for example, the Linux Standard Base.

Encouraging diversity

Since the demise of Progeny and the Debian Common Core, the maintenance of PDK has been taken over by 64 Studio. This small UK-based company produces bespoke GNU/Linux distributions which are compatible with official Debian and Ubuntu releases. It specialises in multimedia and digital content creation platforms which are developed for OEM partners.

The business model relies on providing customised versions of Linux, and offering support, documentation and consultancy to its clients. 64 Studio has utilised and developed PDK to provide its own bespoke versions of Linux to fit customer requirements, and has released new versions of the PDK code for download from the 64 Studio website.

According to Free Ekanayaka, 64 Studio's chief technology officer (CTO) and a Debian developer, the company began working on PDK in 1996. "We saw it could be used to develop and maintain our 64 Studio Debian remix in a much more effective way than before. We see PDK as a powerful tool for developing customised versions of mainstream distributions like Ubuntu and Debian, while retaining full compatibility with them."

The focus of the company is on "tailoring existing distributions for customers rather than on spawning brand new projects," a process he believes can be used by system administrators, Linux companies, and internal departments of large organisations to maintain the tidy administration of the different versions of Linux that may fit the diverse sets of requirements that are typical within any large organisation.

As Daniel James, the founder of 64 Studio, points out, "the fact that there are so many specialised distributions available proves that one size doesn't fit all - and yet there's a lot of work involved in maintaining a distribution."

"Doing the job manually just isn't practical for relatively small groups of users, which is why most distros are still quite monolithic. The tools we've developed automate the distro creation, backporting and maintenance process, so an OEM or system administrator can manage as many diverse distros as they need."

Building consistency

PDK is used to build consistent APT repositories and associated installable ISO images, which are subsets of the packages available to a mainstream distribution, which in the case of Debian, can include up to 20,000 packages.

The subsets are not limited to the official packages of any particular mainstream distribution, but can be fine-tuned to include non-official packages, or customised versions of official packages, which enables bug and security fixes to be rolled out to end users before the parent distribution has provided an official update. PDK offers version control functionalities to track the changes of subsets of packages over time.

A PDK configuration consists of descriptor files where the user defines "channels", in a similar way to those described in APT sources files for the Debian packaging system, and can be used to pull packages from code and binary repositories. Selection of packages is performed with 'pdk abstract' and 'pdk resolve' commands, which create XML files describing the selected packages.