# T2 SDE

T2 SDE (für englisch System Development Environment, System-Entwicklungsumgebung) ist eine flexible quelloffene Linux-Distribution, die es erlaubt, automatisch angepasste Betriebssysteme mit neuen Technologien und Komponenten zu erstellen. Es wird oft auch als Distributionsbaukasten bezeichnet, weil es durch die eigenen Automatismen zum Erstellen angepasster Systeme hervorsticht. Zudem arbeitet das T2-SDE-Projekt über Linux hinaus an der Integration von Hurd-, Minix- und BSD-Kerneln.

## Geschichtliches

T2 SDE begann als eine Abspaltung von ROCK Linux um eine dezentralere Entwicklung und professionelle Basis für industrielle Anwendungen zu bieten. T2 war dabei der interne Projektname für „try two“ (second try), zu Deutsch also „zweiter Versuch“ – und „technology two“, auf Deutsch etwa „zweite Technologie [-Generation]“.

## Projektaufbau

T2 ist weniger eine weitere Linux-Distribution, sondern mehr eine Softwaresystem-Entwicklungsumgebung, mit Hilfe derer sich angepasste linuxbasierte Computer-Systeme erstellen lassen. Die Bandbreite reicht von eingebetteten Systemen mit kleinem Speicherverbrauch über hochsichere, spezialisierte Servern bis hin zu kompletten Desktop-Systemen.
Durch die offene unter der GNU General Public License stehende Softwareumgebung können sich sowohl Privatanwender als auch Firmen gleichermaßen einbringen. Die von der Gemeinschaft getragene Entwicklung sorgt für eine schnelle Weiterentwicklung des Systems – dabei werden stetig neue Erweiterungen und Pakete zu T2 beigesteuert. Auch industrielle Projekte profitieren von der ständig wachsenden Nutzerzahl, indem sie Zugriff auf die dort gebündelten Ressourcen und Verbesserungen erhalten.

### Ausrichtung an Standards

T2 SDE verfolgt die Philosophie möglichst nur originalbelassene Programmpakete zu verwenden, distributionsspezifische Modifikationen zu vermeiden und möglichst standardkompatibel zu sein. Es folgt daher dem Filesystem Hierarchy Standard und der Linux Standard Base. Die Konfigurationen sind mit Schwerpunkt auf Sicherheit angelegt. Indem möglichst wenig Annahmen über althergebrachte Unixeigenschaften gemacht werden sollen hinderliche Anachronismen vermieden werden.

### Das Build-System

T2 SDE besitzt ein automatisiertes Build-System, das den gesamten Prozess der Übersetzung durchführt. Zuerst wird eine Toolchain erstellt, um alle Pakete in einer Sandbox zu bauen, in der wiederum der Inhalt der zu installierenden Pakete geprüft und die zum Bauen notwendigen Vorbedingungen ermittelt werden. Erzeugte Dateien und Abhängigkeiten werden protokolliert. Cross-Builds zwischen verschiedenen Rechnerarchitekturen sind ebenfalls möglich. Zusätzlich werden regelmäßig automatische Regressionstests mit Cross-Builds zu den unterstützten Rechnerarchitekturen durchgeführt und somit der Status der einzelnen Pakete ermittelt.
Das T2-Framework ermöglicht es dabei individuelle Zielsysteme zu definieren, unter anderem durch Auswahl von Paketen und der C-Bibliothek, Anpassung von Konfigurationen und vielem mehr. Das Buildsystem kombiniert all diese Definitionen und kontrolliert den Übersetzungsprozess. Abhängigkeiten können dabei komfortabel aufgelöst werden. Der Entwickler erhält mittels generischer Mechanismen zur Transformation von Compiler-Optionen, Bestimmung von Dateinamen und Eingriffsmöglichkeiten in den Programmablauf des Buildsystems die volle Kontrolle über das erstellte System. Wahlweise lassen sich installierbare CD-Abbilder und ROM-Speicherabbilder erstellen oder übersetzte Pakete via Netzwerk weiterverteilen.
Aufgrund der ungepatchten Quellpakete und des automatisierten Build-Systems ist T2 sehr portabel. Zu den bereits unterstützten Architekturen gehören ARM, Alpha, AVR32, Blackfin, HPPA, Itanium (IA-64), MIPS, MIPS64, PowerPC, PowerPC64, SPARC, UltraSPARC, SuperH, x86-32 und x86-64 (beides IA-32). Das SDE lässt sich vom Anwender einfach um andere Zielarchitekturen erweitern.
T2 SDE will daher aufgrund der breiten Prozessorunterstützung und seinem flexiblen Buildsystem auch eine interessante Entwicklungsumgebung für eingebettete Systeme darstellen. Bei der Produktentwicklung entstehen dadurch Vorteile gegenüber der häufig üblichen Methode, von Grund auf anzufangen: Ein bereits definiertes Zielprodukt kann sofort reproduziert werden und es ist einfach, Modifikationen durchzuführen und dann den Übersetzungsprozess neu zu starten, ohne die gesamte Arbeit von Hand erneut zu erledigen. Beim Aktualisieren von Binärpaketen existiert ein Sicherungsmodus für bereits veränderte Konfigurationsdateien. Die Unterstützung verschiedener Compiler in Kombination mit Optionen wie die Verwendung der diet libc und uClibc ermöglichen es das System an den knappen Speicher eingebetteter Systeme anzupassen.

### Paket-System

Anders als bei konkurrierenden Paket-Systemen wie RPM oder DEB muss der Entwickler bei T2 keinen Quelltext schreiben, um Pakete zu erstellen. Stattdessen wird ein einfaches ASCII-Format verwendet, mit dem sich die Spezifikationen und Einstellungen eines Paketes festlegen lassen anhand dessen das System das Paket erstellt.
T2 bietet über 4000 aktuelle Pakete als Basis für Eigenentwicklungen. Darin sind bereits das X Window System X.Org, bekannte Desktop-Umgebungen wie KDE und Gnome sowie viele Server- und Sicherheitsanwendungen enthalten.

### Konfiguration und Wartung

Die T2-Hardware-Erkennung wurde um den Linux-Hotplug-Mechanismus herum entwickelt. Auf diese Weise soll das gleiche Systemverhalten garantiert werden, egal ob Geräte schon beim Hochfahren vorhanden sind oder erst zur Laufzeit vom Nutzer angeschlossen werden.
Netzwerke lassen sich mit einem bereitgestellten modularen Framework konfigurieren. Dieses unterstützt Netzwerkprofile, elementare IP-Konfiguration, mehrere Interfaces, Routing, stateful Firewalls, W-LAN, PPP einschließlich analoger Modems, PPPoE (Kabel und DSL) sowie CSD und GPRS für die Nutzung von Mobiltelefonen.
T2 enthält die Möglichkeit eine Installations-CD mit vollständigem Installationsprogramm zu erstellen. Dieses erlaubt es Festplatten zu partitionieren, Dateisysteme zu erstellen, Mountpunkte zu definieren, Pakete auszuwählen und vieles mehr. Das Konfigurationsprogramm STONE ermöglicht es Administratoren Systemdienste, Netzwerke und Systemverhalten zu konfigurieren. Durch Verwendung systemeigener Konfigurationsdateien sind manuelle Änderungen im Normalfall ohne Konflikte möglich.

## Einsatzgebiete

Da bei der Entwicklung großer Wert auf Stabilität gelegt wird und regelmäßig neue Versionen herausgegeben werden, wird T2 gerne als Basis für externe Entwicklungen genommen. Beispiele hierfür sind unter anderem die kompakte Linux-Distribution Puppy Linux sowie Archivista, eine kommerzielle Lösung für Dokumentenmanagement und Archivierung der gleichnamigen Schweizer Firma und der Berliner „Platform Provider“ ExactCODE GmbH.

## Andere Distributionsbaukästen

* OpenEmbedded
* Gentoo Linux
* Linux From Scratch
* Morphix