Baukasten-Lösung

Systementwicklung mit T2

01.01.2008 Die System-Entwicklungsumgebung T2 ist ein flexibler Baukasten, mit dem Sie angepasste Linux-Derivate für jeden Zweck erstellen.

Das T2 System Development Environment (kurz: T2 SDE, [1]) macht es jedem möglich, sich ein persönliches Linux-System zu bauen – ohne Overhead durch Brandings oder sonstigen Schnickschnack, der zu Einbußen bei Flexibilität, Übersichtlichkeit oder Geschwindigkeit führen würde. Dabei fokussiert T2 hauptsächlich auf Benutzer mit Unix-Grundkenntnissen, die Wert auf ein transparentes, gut durchdachtes und leicht anpassbares Linux-System legen. Die Verwendung beschränkt sich aber nicht auf erfahrene Benutzer, denn die resultierenden Systeme lassen sich ohne Probleme von normalen Endanwendern einsetzen..

Das T2-Framework besteht aus einem automatisierten Build-System und enthält zahlreiche Architektur- und Target-Definitionen sowie etwa 3000 Paketbeschreibungen, von denen derzeit knapp die Hälfte cross-kompilierfähig sind. Es erlaubt, automatisiert Linux-Systeme zu erstellen – vom kompletten Desktop mit einer reichen Auswahl an Applikationen über hochsichere spezialisierte Server bis hin zu eingebetteten Systemen mit minimalem Ressourcenverbrauch (siehe Kasten "Umfangreiche Möglichkeiten"). Um T2 zu übersetzen, benötigen Sie keine T2-Installation: T2 lässt sich auf jedem gängigen Linux-System kompilieren.

Umfangreiche Möglichkeiten

Durch kontinuierliche Arbeit hat sich in den vergangenen Jahren bei T2 sehr viel im Hinblick auf Hardware-Unterstützung, Cross-Kompilation, Targets und Pakete getan. So unterstützt das Framework mittlerweile viele unterschiedlichen CPU-Architekturen, darunter Alpha AXP, ARM, AVR32, Blackfin, Etrax Cris, HPPA, Motorola 68k, Mips, Mips64, Power-PC, Power-PC64, Sparc, UltraSparc, SuperH, IA-32 und IA-64/AMD64. Die Ausgabeformate glänzen durch verbesserte Mechanismen für Live- und Installer-Medien sowie ROM und Netzwerk-Boot-Images. Zahlreiche neue Pakete kamen hinzu, sodass die persönlichen Lieblings-Tools nur selten fehlen.

Durch die Möglichkeit der Cross-Kompilation lässt sich T2 noch flexibler einsetzen und beschleunigt den Entwicklungsprozess besonders für leistungsärmere, eingebettete Prozessoren deutlich. Auch die Implementierung der Cross-Kompilation haben die Entwickler gründlich überarbeitet, sodass sich jetzt noch mehr Pakete für Embedded-CPUs auf normalen PC-Workstations übersetzen lassen. Arbeitet man andererseits nativ auf dem Zielsystem, kann man den gesamten T2-Paketpool ausnutzen.

Bei T2 ist man stets bemüht, das Build-System so modular und transparent wie möglich zu halten. Aus diesem Grund modifiziert das Projekt die Pakete in T2 auch nur in Ausnahmefällen – etwa um die problemfreie Übersetzung zu ermöglichen, Fehler zu beheben oder Sicherheitslöcher zu beseitigen. Dadurch erhält der Benutzer die Pakete in der Form, wie die ursprünglichen Autoren es beabsichtigten, und kann die Programme mithilfe der originalen Konfigurationsdateien individuell einrichten, ohne dass distributionsspezifische Konfigurationsprogramme dazwischenfunken.

Architektur

T2 SDE wurde mit dem Ziel entwickelt, damit möglichst schnell flexible, modulare und stabile Systeme automatisiert zu erstellen. Dank des automatisierten T2-Build-Systems konfiguriert man komfortabel und unkompliziert individuell angepasste Systeme und baut sie anschließend für das gewünschte Zielformat als Installations-CD, Live-CD, USB-Medium oder auch nur als Binärpakete.

Eine der Hauptkomponenten in der T2-SDE-Architektur stellt das in Form von Shellskripten realisierte Build-System dar, auf das wiederum Subkomponenten wie CPU-Architektur-, Target- und Paketbeschreibungen aufsetzen. Dabei analysiert T2 die Paket-Meta-Informationen und Konfigurationsdateien für den Build-Prozess, erzeugt eine Sandbox-Umgebung und konfiguriert die Programm-Wrapper konfiguriert. Der Benutzer kann den gesamte Ablauf mit weiteren Optionen steuern.

Die im Verzeichnis target/ lagernden Zielbeschreibungen erlauben es, sämtliche T2-Konfigurationen wie etwa die CPU-Architektur des Ziels und die Paketauswahl vorzugeben. Ein T2-Target kann in jeder beliebigen Stelle im Build Prozess eingreifen und auch Pakete patchen. Auf diese Weise erstellt man bequem eigene, bei Bedarf entsprechend gebrandete Linux-Versionen. Dabei muss man nicht zwangsläufig ein gesamtes System von Grund auf neu übersetzen: Wer mag, setzt alternativ auf einer offiziellen, vorkompilierten Minimal- oder Desktop-CD auf.

Installations-CD übersetzen

Um ein T2-Linux-Komplettsystem zu erzeugen, benötigen Sie lediglich das T2-SDE-Build-System, das Sie auf einer beliebigen Linux-Spielart – etwa Suse, Debian oder Fedora – aufsetzen. Der Kasten "T2-SDE-Versionen" erläutert die verschiedenen zur Auswahl stehenden Versionen und deren Bezugsquellen. Für den Bau eines aktuellen Linux-Systems für einen PC empfiehlt sich der Einsatz von T2 SDE 7.0, das Sie als Tarball von der Projekt-Website beziehen und in ein beliebiges Verzeichnis entpacken.

T2-SDE-Versionen

Release-Tarballs von T2-SDE finden Sie unter http://dl.exactcode.de/t2/, wobei drei Varianten mit verschiedenen Toolchains zur Auswahl stehen:

  • die aktuellste Release 7.0 (2007) verwendet GCC 4.2 und Glibc 2.6,
  • die 2006 freigegebene Version 6.0 nutzt GCC 4.1 und GLibc 2.4 (2.3.90),
  • die Version 2.1 aus dem Jahr 2005 schließlich setzt auf GCC 3.4 und Glibc 2.3.

Diese stabilen Serien stellt das T2-Projekt alternativ auch als Subversion-Zweig zur Verfügung, den Sie über folgenden Befehl abrufen:

$ svn co http://svn.exactcode.de/t2/branches/7.0 t2-7.0

Experimentierfreudige Entwickler und Anwender, die die allerneusten Pakete und T2-Funktionen ausnutzen möchten, können stattdessen auch den Entwicklungs-Trunk verwenden:

svn co http://svn.exactcode.de/t2/trunk t2-trunk

Dabei ist jedoch Vorsicht geboten: Bei größeren Versionssprüngen oder durch neue Funktionen kann es vorkommen, das sich ein gewisser Prozentsatz der Pakete im Entwicklerzweig nicht fehlerfrei übersetzen lässt.

Dann wechseln Sie in das T2-Verzeichnis und rufen über ./scripts/Config das T2-Konfigurationsmenü auf. Dort nehmen Sie komfortabel die gewünschten Einstellungen vor (Abbildung 1). Hier haben Sie verschiedene vordefinierte Zielbeschreibungen, Image-Formate und Architekturen zur Auswahl, um sich ein persönliches T2-Linux-System zu konfigurieren.

Abbildung 1: Über das Konfigurationsmenü von T2 SDE nehmen Sie komfortabel alle Einstellungen für das gewünschte Build-Target vor.

Nachdem Sie die Einstellungen am Konfigurationsmenü abgeschlossen haben, bauen Sie mittels des Aufrufs ./scripts/Build-Target Ihr neues T2-System. Dabei lädt T2 während des Build-Prozesses alle benötigten Pakete herunter und kompiliert daraus das Zielsystem vollautomatisch. Dieser Vorgang dauert dann je nach Paketauswahl und Rechenleistung einige Stunden oder sogar Tage und sollte in stabilen T2-Versionen tendenziell fehlerfrei durchlaufen. Steht für den Build-Prozess keine permanente Internetanbindung zur Verfügung, laden Sie alternativ bereits vorab alle benötigten Pakete mit dem Befehl ./scripts/Download -required herunter.

Um zu guter Letzt noch für eine Installations- oder Live-CD/DVD das ISO-Image zu erstellten, rufen Sie ./scripts/Create-ISO Mein_T2 auf. Anschließend finden Sie das ISO unter dem Namen Mein_T2 _cd1.iso im Unterverzeichnis iso/.

Möchten Sie verschiedene Varianten von T2 übersetzen, dann übergeben Sie allen zuvor genannten Skripten dazu mit der Option -cfg unterschiedliche Konfigurationsnamen.

T2 erstellt das neue System im Verzeichnis build/, in das man auch direkt mit chroot build/... hineinwechseln oder es auf eine neue Partition kopieren und booten kann. Das sollten jedoch nur erfahrenen Linux-Anwender anpacken – am besten installieren Sie das resultierende System ganz normal.

Installation

In den meisten Fällen installieren Sie ein T2-Linux von einer bootfähigen CD – sei es eine selbst erstellte T2-Disk oder ein ISO von der T2-Webseite. Nach dem Starten des Datenträgers befördert der Bootloader ein Mini-System in den Arbeitsspeicher. Für den seltenen Fall, dass es dabei zu Fehlern kommt, finden Sie in der T2-Dokumentation [2] Hilfe.

Schon das Mini-System können Sie direkt für kleine Aufgaben und auch zur Rettung von Systemen verwenden. Zum Starten der Installation führen Sie stone aus, das als modularen Installer und Konfigurationstool dient und weitgehend selbsterklärend ausfällt. Als Paketformat verwendet T2 wie Slackware normale Tar-Archive, die sich auf jedem System inspizieren und entpacken lassen.

Nach der Installation des T2-Targets nehmen Sie via stone noch einige Einstellungen vor: So setzen Sie etwa ein Root-Passwort, passen Keyboard-Layout und Lokalisierung an, konfigurieren die Netzwerk-Settings und last not least den Bootloader.

TIPP

Ein T2-Linux lässt sich auch über das Netzwerk installieren. Wie das genau funktioniert, lesen Sie bei Bedarf im T2-Handbuch [2] nach.

Weiter aus den Quellen

Hat man sein frisch gebautes T2 System installiert, dann möchte man meistens auch neue Pakete installieren und früher oder später vorhandene aktualisieren. Dazu bedient man sich des Skripts Emerge-Pkg, das als Parameter einen Paketnamen erwartet:

$ ./scripts/Emerge-Pkg Paketname

Bei Angabe eines Paketnamen prüft Emerge-Pkg automatisch auch die von T2 gepufferten Abhängigkeiten. Nehmen diese überhand, geben Sie mit der Option -deps=none explizit einzeln an, welche Pakete übersetzt werden sollen. Das Argument -system dient dem Update des Gesamtsystems und prüft alle installierten sowie in der aktuellen Konfiguration enthaltenen Pakete auf Aktualität (Abbildung 2).

Abbildung 2: Mit dem Skript Emerge-Pkg aktualisieren Sie einzelne Pakete samt Abhängigkeiten und bei Bedarf auch das gesamte System.

Neue Pakete anlegen

Damit das T2-Build-System ein Paket einbinden kann, benötigt es einige Meta-Informationen wie Download-Ort, Checksumme, Autor, T2-Maintainer sowie eine Paketbeschreibung. Zur besseren Wartbarkeit haben die Entwickler hierfür ein Tag-basierendes Plaintext-Format gewählt (Listing 1).

Listing 1
[COPY] — T2-COPYRIGHT-NOTE-BEGIN —
[COPY] T2 SDE: package/…/exact-image/exact-image.desc
[COPY] Copyright (C) 2004 - 2007 The T2 SDE Project
[COPY] — T2-COPYRIGHT-NOTE-END —
[I] A fast imaging library including command line frontend
[T] ExactImage is a fast imaging library including a command line frontend.
[U] http://www.exactcode.de/oss/exact-image/
[A] Rene Rebe <rene@exactcode.de>
[M] Rene Rebe <rene@exactcode.de>
[C] extra/multimedia
[F] CROSS
[L] GPL
[S] Beta
[V] 0.4.1
[P] X —--5—9 500.000
[D] 3315365482 exact-image-0.4.1.tar.bz2 http://dl.exactcode.de/oss/exact-image/

Das Paketmanagement teilt die Pakete in verschiedene Rubriken auf, wobei sich die Paketbeschreibungen in einem weiteren Unterverzeichnis befinden. Der Verzeichnisname entspricht dabei stets dem offiziellen Paketnamen und wird komplett klein geschrieben.

Um ein neues Paket anzulegen, kopieren Sie am besten die Beschreibungsdatei eines ähnlichen, bestehenden Pakets in das neue Unterverzeichnis und passen sie dann für das neuen Paket an. Eine detaillierte Beschreibung der wichtigsten Tags finden Sie in der Tabelle "T2-.desc-Tags".

T2-.desc-Tags

Tag

Funktion

[COPY] beschreibt das T2-SDE-Copyright und eventuell weitere Copyright-Informationen hinsichtlich der speziellen Paketquellen. Das T2-Build-System erzeugt ihn automatisch, Sie können ihn aber auch manuell mithilfe von ./scripts/Create-CopyPatch anlegen
[I] kurze Paketbeschreibung, kann nur einmal verwendet werden
[T] detaillierte Paketbeschreibung, kann mehrfach verwendet werden.
[U] verweist auf die Homepage des Pakets, kann mehrfach verwendet werden
[A] Originalautor des Pakets (Name, E-Mail-Adresse, Funktion). Normalerweise findet sich hier nur der Hauptautor, optional jedoch bis zu vier Ersteller. Es sollte zumindest eine E-Mail-Adresse angegeben sein, um möglichst einfach Patches veröffentlichen zu können.
[M] aktuelle Informationen zum T2-Maintainer des Pakets
[C] Sortierung des Pakets; eine Liste aller möglichen Kategorien liefert die Datei misc/share/PKG-CATEGORIES
[F] optional, signalisiert Besonderheiten eines Pakets; eine Auswahlliste aller Flags liefert die Datei misc/share/PKG-FLAGS
[L] gibt Auskunft über Lizenzbestimmungen des Pakets; alle möglichen Lizenzabkürzungen liefert die Datei misc/share/REGISTER
[S] aktueller Entwicklungsstatus der Paketversion
[V] aktuelle Paketversion, optional eine Revisionsnummer
[P] Priorität im T2-Build-System. Das erste Feld signalisiert, ob das Paket übersetzt werden soll oder nicht ((in Listing 1: X=on, übersetzen). Das zweite und dritte Feld bestimmen, in welcher Stage und in welchem Build-Auftrag das Build-System das Paket übersetzen soll.
[D] Angaben zum Download des Pakets. Besteht es aus mehreren Dateien, stehen die entsprechenden Verweise mit jeweils voranstehenden [D]-Tag untereinander. Die führende Prüfsumme muss beim Anlegen des Pakets auf 0 gesetzt werden.

Nach dem Anlegen der Beschreibungsdatei starten Sie als nächstes das T2-Build-System, um die neuen Paket Informationen einzulesen. Das erledigt der Befehl

$ ./scripts/Config -old-config

Anschließend können Sie das neue Paket das erste Mal übersetzen. Dazu dient der Aufruf:

$ ./scripts/Emerge-Pkg Paketname

Während der Kompilierung erzeugt das Build-System im Verzeichnis /var/adm/cache die passende Cache-Datei mit den Informationen zu den Abhängigkeiten des Pakets. Diese Datei kopieren Sie nach der erfolgreichen Übersetzung ins neue Paket-Verzeichnis:

$ cp /var/adm/cache/Paketname
 package/graphic/Paketname/Paketname
.cache

Anschließend erzeugen Sie noch die passende Checksumme für das Paket mit dem Aufruf

$ ./scripts/Create-CkSumPatch Paketname | patch -p1

Damit haben Sie auch schon alle Arbeiten zum Einbinden der neuen Software abgeschlossen: So schnell kann man mit T2 Pakete anlegen.

Praktische Helfer

Aufruf

Funktion

./scripts/Find-Pkg Paketname oder Stichwörter sucht nach passenden Paketen
./scripts/Download Paketname lädt nur den Quelltext des genannten Pakets
./scripts/Update-Pkg Paketname_mit_neuer_Versionsnummer aktualisiert die Beschreibungsdatei

Optimierung

Viele Pakete versuchen in ihrem configure-Skript oder Makefile, das System und den Prozessor zu erkennen und würden bei der Übersetzung beispielsweise auf einem Athlon Optimierungen für die i686-Architektur verwenden, obwohl der Benutzer tatsächlich Binaries für den i486-Prozessor eines Routers erstellen möchte. Damit alle Programme mit den vom Benutzer ausgewählten Optimierungen übersetzt werden, gibt es in T2 Wrapper-Programme, welche die Kommandozeilenargumente des Compilers und die Linker-Aufrufe verändern. Sie ersetzen alle für die Optimierung relevanten Optionen durch die in der T2-Build-Umgebung ausgewählten.

T2 bietet auch Unterstützung für einige alternative C-Bibliotheken, mit denen sich Systeme mit sehr schlankem Footprint erzeugen lassen — typischerweise für eingebettete Systeme. Als Init-Systeme kennt T2 neben dem klassischen Sysvinit auch noch Minit, Runit, Upstart und einige weitere. Diese bietet durch paralleles Starten der Dienste und andere Funktionen teilweise schnellere Bootzeiten.

Fazit

Mit der aktuellen Release 7.0 haben die Entwickler T2 SDE weiter ausgebaut und unterstützen viele neue Funktionen und Prozessorarchitekturen. Für die Zukunft plant das Projekt auch den Support für weitere Betriebssystemkerne, wie beispielsweise Minix oder BSD. Zudem wird sich das Build-System auch auf geschlosseneren Systemen wie Mac OS X oder Cygwin für Windows verwenden lassen.

Schon jetzt bietet T2 eine umfangreiche Palette an Paketen, die sich mit einem Befehl neu kompilieren lassen. Ob Desktop oder Server, Embedded oder Real-Time: Es existieren praktisch keine Grenzen für den Einsatz. Das beim Umgang mit T2 erlernte Wissen lässt sich dabei auch direkt auf andere Linux-Distributionen übertragen, etwa wenn man einen Remote-Server einrichten muss oder unter der grafischen Oberfläche Probleme sucht.

Fragen rund um T2 können Sie nach Anmeldung jederzeit auf der Mailingliste t2@t2-project.org stellen. Wer es eiliger hat, nutzt den IRC-Channel #t2 im Freenode-IRC Netzwerk. Hier haben Sie Gelegenheit, andere Benutzer kennenzulernen und bei Schwierigkeiten um Rat zu fragen.

Infos

[1] T2-SDE-Homepage: http://www.t2-project.org/

[2] T2-Handbuch: http://www.t2-project.org/documentation/

[3] T2-Quellen und CD-Download:http://www.t2-project.org/download/

[4] T2-Bugtracker und Wiki: http://bugs.t2-project.org/

Einem Freund empfehlen    Druckansicht beenden Bookmark and Share
Kommentare