wiki:CdUeberblick

Version 3 (modified by ps, 11 years ago) (diff)

--

Überblick, wie eine Installations-CD entsteht

Die eigentlich Arbeit erledigen eine ganze Reihe von Skripten, ein paar Schritte sind aber auch von Hand zu erledigen. Grundsätzlich besteht eine "moderne Debian-Installations-CD" aus dem eigentlichen Debian-Installer und einem Repository (Pool-Struktur) mit den wesentlichen Paketen. Der Debian-Installer selbst ist modular aufgebaut. Seine Grundkomponenten stecken in einer Init-RAM-Disk, die mit dem Kernel von der CD gelesen wird. Nachdem eine erste Hardware-Erkennung gelaufen ist, lädt der Installer weitere Komponenten von der CD (oder aus dem Internet oder von einem USB-Stick) nach. Diese Komponenten sind in speziellen Debian-Paketen, udeb-Dateien, enthalten (steht für Mikro-deb). Diese udeb-Dateien sind spezieller Bestandteil des Repository auf der CD (oder anderswo). Die Init-RAM-Disk enthält letztlich ebenfalls nur udeb-Pakete, die dort allerdings schon entpackt sind.

Um eine eigene CD zu bauen, kann man also im ersten Schritt einen Debian-Installer von einer bestehenden CD ernten: Man klaubt dort zunächst alle udeb-Dateien zusammen und streicht die Ordner isolinux und install ein. Im zweiten Schritt sammelt man alle Pakete ein, die für die Installation des Systems nötig sind. Im dritten Schritt schüttet man isolinux- und install-Ordner zusammen mit den Paketen und udeb-Dateien. Fertig ist der CD-Inhalt. Die Kunst besteht darin, das alles richtig zu verpacken und dafür zu sorgen, dass auch alle abhängigen Pakete erfasst und integriert werden. Wer es gern komplizierter mag, der baut den Debian-Installer und seine udebs aus den Quellen selbst. Das ist aber ein langwieriger Prozess, weil dabei nicht nur der eigentliche Installer in udeb-Dateien verpackt werden muss, sondern auch der für die Installation zu verwendende Kernel und die zugehörigen Modul-Pakete (einzelne udebs) sowie die Init-RAM-Disk zu bauen ist -- nichts für Einsteiger.

Apropos Kernel: Durch das Ernten von Init-RAM-Disk und udeb-Dateien auf einer bestehenden CD legt man sich auch auf einen Kernel fest -- nämlich den, der in der jeweiligen CD enthalten war. Beim Installieren des Basis-Systems bezieht sich der Debian-Installer nicht explizit auf den Kernel, unter dem er selbst läuft, sondern sucht auf der CD nach einem geeigneten Kandidaten (die Strategie dabei variiert je nach Installer-Version). Indem man von Hand ein Meta-Paket baut, das unter dem typischen vom Installer nachgefragten Namen firmiert, kann man ihm nahezu beliebige Alternativ-Kernel unterschieben. Aber hier gilt, nicht übertreiben: Unter einem 2.6.9er-Kernel einen 2.6.18er zu installieren ist spätestens dann sinnlos, wenn es um Controller geht, die nur in der 18er-Variante unterstützt werden.

Das Einsammeln der Pakete, die für eine vollständige Installation notwendig sind, lässt sich dank der Debian-Paketverwaltung weitgehend automatisieren. Es empfiehlt sich dringend, derlei Dinge hinter einem apt-Proxy zu treiben, damit die Debian-Server nicht unnötig belastet werden. Man stößt einfach in einer chroot-Umgebung die Installation der Pakete an, lässt sie aber nicht ausführen (apt-get mit --download-only). apt-get lädt die Pakete inklusive der Abhängigkeiten herunter. Wichtig ist in diesem Schritt das alle nötigen Pakete über die Repositories in der /etc/apt/sources.list auch erreichbar sind. Die Skripte, die die Pakete "einsammeln" wenden noch einige Tricks an, um die Dateien aus bestimmten Quellen separat abzulegen, sodass sie nicht auf einer CD landen, und spucken dazu noch Hinweise für ctvdrcfg aus, damit es davon abhängige Pakete nur bei Erreichbarkeit überhaupt zur Installation anbietet.