Introducing "MetaLinux" ( long )

corey at corey at
Sun Jul 1 02:49:17 PDT 2001

( note to alfs-discuss: this will be the only post used to in any
  way "promote" MetaLinux - I do not wish to misuse the list )


[ Project name "MetaLinux" may be subject to change ]

Conceptual Overview:

MetaLinux is a project aimed to provide a highly flexible framework for
defining a completely customized linux environment, as well as the tools
and programs necessary to automate the installation and configuration
process of that environment.

With MetaLinux, you will have total control over the architecture of a
completely functional linux system -- from the ground up. It will be
possible to dictate every aspect, from the filesystem structure and the
init style, all the way on up to each of the various programs installed
and even their associated configurations.

However, it will also be entirely possible to merely pick and choose
what aspects will be customized, leaving the rest of the details to
defaults, short-circuits, and/or leveraging the existing work of others
through the use of external references - thereby simplifying the effort
required in the creation of your MetaLinux Descriptor Profile. This
Descriptor Profile is nothing more than an XML document conforming to
the MetaLinux Schema specification, and will be your most important
tool in the creation of your system - the rest of the details can be
safely ignored.

High Level Implementation Overview:

MetaLinux will be specifically designed around an extensible, component
based model, utilizing a highly modular OOP approach to its definition
and construction methodologies used for generating any desired custom
linux environment. The backend application layer will be written in
Perl, with the primary method of control being defined through an XML
Schema specification. It is intended that the XML front-end and the Perl
based backend shall be tightly coupled - in order to deliver a final
product which is as coherent, stable, and feature rich as possible.

The current main top-level components of MetaLinux shall consist of the

* Descriptor

  The primary motivation of the Descriptor component lies in the
  specification of the XML Schema that shall provide the main
  interface into controlling the behavior of the backend
  application layer. By conforming to the Descriptor Schema, a
  valid Descriptor XML Profile can be produced - this Profile
  represents, basically, a detailed configuration file for the
  construction of your customized linux.

* Tool-Set

  The Tool-Set will consist of the complete backend application
  layer, and can be broken down into two further pieces, the API
  and the Parsers.

  - API

    The API will provide the low level interface required to
    actually generate, configure and install a linux environment,
    as defined by any individual Descriptor Profile.  It will
    furnish an object oriented class-heirarchy, supplying the
    full collection of objects and their methods necessary for
    achieving each particular task in creating a functional linux

  - Parsers

    The Parsers are responsible for doing the grunt work behind
    reading and understanding the directives specified within a
    Profile. These Parsers will be very closely tied with the API.
    In fact it is anticipated that much of the methods provided
    through the API's interface will often be called directly from
    the various Parser modules throughout the execution of any
    given MetaLinux instance.

* Constructor

  The Constructor is the controlling "terminal" by which the
  interface provided by the Tool-Set API is accessed and thereby
  executed. It is nothing more than a standalone script that
  invokes each new MetaLinux instance, calling the necessary
  methods as applicable to the desired result. As such, the
  Constructor is simply a small perl script, and so can be edited
  or replaced with moderate ease for those developers and users
  who really wish to take the reigns of the automated backend
  process(es). Though under almost all circumstances such extreme
  control will not be necessary - it is there for those who may
  desire the more direct flexibility. The Constructor can even
  really be identified as the user interface - whether accessed
  via the commandline, or tied in with some GUI library, or even
  through a web-based front-end.

* Run-Time Environment

  In order to generate a custom linux system using MetaLinux, it
  is first necessary to have the complete Run-Time Environment
  ( RTE ) installed on the target platform which will be running
  the installation. The RTE actually has two components that
  comprise it - the static, base foundation, and a looser portion
  specific to any given Profile:

  - Foundation

    The MetaLinux Foundation consists of the following components:

      _ Tool-Set
      _ Descriptor and Profile
      _ Constructor
      _ Perl with XML::Parser and XML::Parser::Checker
      _ Expat

  - Instance PreReq

    An Instance PreReq defines ( but does not necessarily provide )
    all the prerequisites of an individual Descriptor XML Profile.
    These prerequisites can be highly easy to attain, in the case
    of a Profile using widely available packages and commands - or
    can be very difficult to attain, in the case of niche or very
    specialized Profiles that depend on uncommon or proprietary
    commands and packages. The Instance PreReq is the rudimentary
    intended mechanism in facilitating for trans-system installation
    of Profiles - there being three possible venues for Profile
    "portability", supplying the method by which Instance PreReqs
    are provided:

      _ user self-installed

      _ bundled with Profile

      _ distributed bootable cd environment

    The above options can be simplified through various "helper
    apps" ( described below in the Assistants component ).  For
    instance, using the 'profiler' Assistant to help identify the
    Instance PreReq's for a Profile, while the 'replicator' will
    automate the process of cd distribution.

* Assistants

  MetaLinux Assistants will be a variety of stand-alone utilities
  whos functions are aimed specifically towards providing,
  automating or simplifying miscellaneous helpfull tasks involved
  in the general MetaLinux process. Some of these may utilize the
  Tool-Set and others may not. As these are mostly all considered
  convenience mechanisms, and not crucial to the greater MetaLinux
  requirments, they are fairly low in develpment priority.

  As an example of the jobs that an Assistant might be written for,
  below are brief summaries of some expected Assistants that may
  be of higher import to many users. It is certain others will
  follow as the project matures.

    packager - Automate generation of package profile XML content,
               via a more simplified markup than used by the

    profiler - Audit an existing XML Profile for a variety of data
               gathering purposes - for one example, a listing of
               commands used within a profile and perhaps their
               arguments as well.

    installer - Automate installation of the complete MetaLinux
                Foundation RTE.

    replicator - Eases the creation of a bootable cd environment
                 or image off a prestinely installed MetaLinux


It is hoped that MetaLinux may be as widely usefull to as wide an
audience as possible. It is with this primary goal that the project
shall be designed - from ground zero through to completion. While there
are certainly easier ways to accomplish similar results that MetaLinux
is attempting, I believe such complexity as presented in this paper will
result in the most optimal architecture for providing the highest amount
of flexibility and control.

The intention is to put full power into the hands of those who have
their own preference, requirements or fancies of a complete - or even
not so complete - linux system. The best way to meet that intention is
by supplying a coherent framework for defining the structure of the
environment along with a rich and stable, component based API to offer
the interface necessary to affect and create the final desired result.

Whether a hobbyist home user wishing to maintain a personal linux flavor,
or a university that would like to create specific linux environments
for specialized tasks, or a public research group desiring to distribute
a highly niche operating platform for their community - whatever the
demand, it is hoped that MetaLinux will prove capable of the task.

Of course this will all be released under the GPL for your general
freedom and, more importantly - *enjoyment* !


Corey Saltiel

Unsubscribe: send email to alfs-discuss-request at
and put unsubscribe in the subject header of the message

More information about the alfs-discuss mailing list