Bootstrapping? Wie Bootstrapping? Ich will Mageia ISOs!

Wir haben unsere erste Alpha ISO für Ende Januar angekündigt … aber noch gibt es sie nicht. Verdammt! Was ist denn da los? Lassen Sie es mich erklären.

Es war einmal das Bootstrapping …

Wie bereits im letzten Blog-Eintrag beschrieben, lief unser Build-System in den letzten Wochen auf Hochtouren und mehr als 4.000 Pakete wurden bereits erstellt. Diese Sammlung an Paketen nennen wir Bootstrap.

Wie Sie auf Wikipedia sehen können, ist ein Bootstrap ein kleiner Bootloader, welcher genutzt wird ein größeres System zu starten. Im Falle von Mageia ist mit Bootstrap der aktuelle Schritt gemeint, in dem das Basissystem und die meisten Abhängigkeiten erstellt werden, so dass alle weiteren Anwendungen mit Mageias eigenen Werkzeugen erstellt werden können. Jede Linux Distribution nutzt eigene Pakete, um alle Pakete in ihren Repositories zu erzeugen.

Danach kommt der komplizierte Teil der Geschichte. Eine Art Henne-Ei-Problem. Einige systemnahe Pakete, auch Toolchain genannt, benötigen sich selbst zum kompilieren: gcc, glibc, … Diese Pakete existieren bereits bei vielen Distributionen, so dass das Bootstrapping einfach bei einer dieser Distributionen beginnen kann.

Bei Mageia haben wir uns entschieden Mandriva Pakete zu nutzen, da die erste Veröffentlichung auf Cooker basieren wird. Um diese nutzen zu können, mussten wir sie jedoch zunächst bereinigen:

  • entfernen von Mandriva spezifischen Bits und Teilen (RPM Makros, urheberrechtlich geschützte Elemente wie Bilder, Symbole, veraltetes Material, …)
  • Entfernen nicht benötigter Bedingungen in den Definitionen für die Anforderungen zum Paketbau
  • senden von Patches an die eigentlichen Projekte, so dass wir uns nicht um diese kümmern müssen und alle davon profitieren können, wenn sie akzeptiert werden
  • temporäres entfernen höherer Abhängigkeiten, sofern sie derzeit noch nicht erzeugt wurden und nicht für Mageia vorhanden sind (Java, Mono).

Wenn all das geschehen ist, kann jedes Paket für Mageia im Mageia Build-System erzeugt werden. Anschließend wird der jeweils verantwortliche Paketbauer das Paket prüfen und gegebenenfalls weitere Abhängigkeiten ergänzen, sobald diese verfügbar sind.

Schauen wir uns ein Beispiel an

Der gcc ist ein C-Compiler. Er ist ein wichtiger Bestandteil des Basissystems, weil er von vielen Programmen benötigt wird, die aus den Quelltexten erstellt werden müssen.

Mageia braucht sein eigenes gcc-Paket, um für sich alle Programme erstellen zu können, welche die Programmiersprache C benutzen (sog. dogfooding“ = hier: Verwendung eines eigens selbsterstellten Programms, um weitere zur eigenen Nutzung zu erstellen). Für Mageia ist dies ein entscheidender Arbeitsschritt, denn, wenn man es richtig macht, kann so sichergestellt werden, dass alles glatt läuft, während gleichzeitig
mögliche Probleme aufgelistet und korrigiert werden können. Dann werden wir den gcc für Mageia erstellt haben.

Wenn die Toolchain erstellt wurde, können wir den Mageia-Kernel, die X-Treiber, den X-Server, etc. neu bauen – und schließlich auch anwenderorientierte Programme. Ein mittels Bootstrapping erstelltes Betriebssystem bietet Paketbauern nicht mehr als einige Libraries und einen Compiler. Bevor das Team der Paketbauer wirklich ernsthaft mit der Arbeit beginnen kann, müssen erst einmal noch zusätzliche Kernsystempakete hinzugefügt werden. Für ihre Erstellung sind bei vielen Paketen einige abhängige Pakete notwendig, die wiederum einige andere abhängige Pakete erfordern.

Letztendlich werden Tausende von Paketen benötigt, um die wichtigsten Systembestandteile zu erzeugen welche zur Erstellung von anwenderorientierten Programmen benötigt werden.

Natürlich ist das nur ein grober Umriss, ohne all die spannenden Dinge, die so während des Rebuild-Prozesses passieren können. Aber so geht das im Großen und Ganzen.

Warum ist Bootstrapping so wichtig?

Wie bereits gesagt handelt es sich beim Bootstrappingprozess um einen Arbeitsschritt bei dem Paketbauer und Spezialisten für das Basissystem sich die Zeit nehmen können, die Konsistenz der Distribution auf der untersten systemnahen Ebene zu überprüfen, Abhängigkeiten zu bereinigen und das Basissystem in Einklang mit den Statuten der Distribution zu bringen. Also ist Bootstrapping nicht ausschließlich etwas für Leute, die sich für Forks interessieren :)

Übrigens werden sich das Verbessern des Bootstrappings sowie das Schreiben einer ordentlichen Dokumentation dazu als äußerst nützlich erweisen, wenn neue Prozessorarchitekturen hinzugefügt und unterstützt werden. Dann braucht man eine anständige Toolchain, ein Basissystem… Das selbe Lied.

ISOs!

Doch zurück zur Ausgangsfrage: Wann können wir mit einem ersten Test-ISO rechnen? Der Bootstrappingprozess wurde vor einem Monat begonnen und sollte morgen beendet sein. Ungefähr 1.500 Stunden waren notwendig, um die vorhandenen Pakete zu erstellen. Darin eingerechnet sind erfolgreich erstellte Pakete, aber auch Fehlschläge, Rebuilds, technische Fragen, die entschieden werden mussten, überraschend aufgetretene Probleme, Diskussionen…

Nun sind wir soweit :). Das Repository ist fertig für erste Test des Paketbaus, unser Rechner zur ISO-Erstellung wurde ordentlich konfiguriert und die Alpha1 wird für den 15. Februar erwartet; bleiben Sie am Ball, bald gibt es mehr Neuigkeiten zur künftigen Roadmap!

(Original gepostet am 03.02.2010 von ennael)

Dieser Beitrag wurde unter Allgemein abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Die Kommentarfunktion ist geschlossen.