Seit einiger Zeit suche ich nach einer Möglichkeit, auf meinem VDR eine Live-CD zu booten, die mir per remote zugriff auf das installierte System und der Hardware gestattet. Also einfach von CD booten, Netzwerk einrichten mit einer von mir festgelegten IP und gleichzeitig ssh für den Fernzugriff startet. Nachdem ich nichts passendes gefunden hatte, befasste ich mich mit dem Remastern einer Knoppix Live CD.
Im Folgenden stelle ich ein Kochrezept für das Remastern von Knoppix 3.4 vor, mit dem jeder seine eigene Knoppix-variante für seine Bedürfnisse erstellen kann. Bitte beachtet, dass Knoppix ab der Version 3.4 einen anderen Bootloader (isolinux) verwendet. Deshalb können nicht alle Schritte auf ältere Versionen übertragen werden.
Dieses Howto stellt keinen Anspruch auf Vollständigkeit. Es gibt sicher noch andere Wege, bestimmt auch bequemere. Ich keine keinen weiteren davon, nur diesen. Es bleibt genug Raum für eure eigenen Ideen.
Das Ziel
Eine bootfähige Live-CD, die ohne manuelles Zutun in die shell lädt, das Netzwerk mit individuellen Parametern hochfährt (statische IP) sowie einen ssh-server startet, der den Zugriff per Login zulässt. Das Verschlanken des Systems bzw. die Optimierung der Bootzeit ist in diesem HOWTO absolut nebensächlich. An entsprechender Stelle gebe ich aber Hinweise zu diesem Thema.
Voraussetzungen
Das Remastern ist mit viel Festplattenspeicher verbunden; mit 10 GByte freiem Festplattenplatz auf einer separaten Partion ist man auf der sicheren Seite. Alle Partitonsdaten müsst ihr gegebenenfalls auf euer eigenes System umstellen. Solltet ihr andere Verzeichnisnamen wählen oder ein anderes Dateisystem verwenden, müsst ihr das an den entsprechenden Stellen ändern.
Nehmt euch Zeit für das Durcharbeiten dieses HOWTOs. Rechnet ca. 90 bis 120 Minuten ein beim ersten Mal.
Teil 1 - Vorbereitungen
Als Remaster-System verwende ich Knoppix 3.4 als Live-CD. Hierin sind alle benötigten Pakete enthalten, um eine eigenes Remaster herstellen zu können. Da es von CD läuft, wird dadurch allerdings auch die Arbeitsgeschwindigkeit beeinträchtigt. Für unsere Zwecke ist das aber nicht so wichtig.
Root-shell
Nach dem Bootvorgang muss eine Shell geöffnet werden; wir brauchen nun die Rootprivilegien und geben deshalb in der shell ein:
sudo su
Arbeitspartition mounten
Nun muss eine Partition gemountet werden, auf dem gearbeitet werden kann und genug Platz vorhanden ist. Allerdings darf die Partition nicht auf dem Standardweg gemountet werden; es muss auch der Partitionstyp angegeben werden:
mount -t ext3 /dev/hde1 /mnt/hde1
Wie vorher schon angemerkt, tragt ihr bitte eure eigenen Laufwerke und das Dateisystem an dieser Stelle ein.
Arbeitsverzeichnisse anlegen
Wir brauchen zwei Verzeichnisse; eines in dem wir das CD-Knoppix entpacken (knxsource) und eines, aus dem später ein ISO-Image generiert werden kann (knxmaster):
mkdir /mnt/hde1/knxsource
Knoppix entpacken
Das Knoppix mit seiner Verzeichnisstruktur wird nun auf die Festplatte unter knxsource entpackt:
cp -Rp /KNOPPIX/* /mnt/hde1/knxsource/KNOPPIX
Knoppix CD-Struktur kopieren
Für das spätere ISO-Image braucht es noch ein Grundgerüst, das in knxmaster kopiert wird. Alles von der CD muss in knxmaster kopiert werden, außer der großen KNOPPIX-Datei (ca. 700mb). Spart besser im Verzeichnis /boot auch memtest aus. Dies verursachte bei mir einen Fehler während des kopierens.
Swapfile anlegen
Zusätzlich legen wir ein swapfile in einen Verzeichnis names tmp an. Wie schon bemerkt braucht der spätere Kompilierungsvorgang sehr viel Speicher; wer freien Hauptspeicher von 1 GByte oder mehr hat, kann aber darauf verzichten. Alle anderen (so wie ich) fahren so fort:
mkdir /mnt/hde1/tmp
Jetzt legen wir ein 1,8 GByte großes swapfile an (18000MByte*1024=1800000). Sicher geht auch eine kleiner Größe. Habe ich aber nicht getestet:In der shell eingeben:
dd if=/dev/zero of=swapfile bs=1024 count=1800000
swapon /mnt/hde1/tmp/swapfile
Teil 2 - Anpassen des zukünftigen Boot-Systems
Ab jetzt geht es ans Eingemachte. Das Verhalten und die Eigenschaften unseres remasterten Knoppix stellen wir nun ein. Wir Arbeiten aber nicht an dem bloßen Verzeichnissen des entpackten Knoppix'. Über den Befehl chroot wechseln wir von unserem gebootet Knoppix-Root-Verzeichnis zu dem entpackten auf unserer Partition:
chroot /mnt/hde1/knxsource/KNOPPIX
Aufgepasst! Alle Änderungen werden nun auf dem kopierten Knoppix ausgeführt!
Netzwerk einstellen
Öffnet in /etc/network die Datei "interfaces" und tragt dort eure Daten ein.
So sollte es dann aussehen (bei xxx setzt ihr eure Daten ein):
### etherconf DEBCONF AREA. DO NOT EDIT THIS AREA OR INSERT TEXT BEFORE IT.
auto lo eth0
iface lo inet loopback
iface eth0 inet static
hostname vdr
### END OF DEBCONF AREA. PLACE YOUR EDITS BELOW; THEY WILL BE PRESERVED.
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
network xxx.xxx.xxx0
gateway hier.IP.eures.Routers
Damit die Namensauflösung funktioniert, tragt ihr euren Nameserver in /etc/resolv.conf ein.
#############OPTIONAL###############
apt-get und Internet Um Zugriff aus das Internet zu erhalten und Pakete zu aktualisieren, muss das /proc-Verzeichnis gemountet werden:
mount -t proc /proc proc
An dieser Stelle können Experimentierfreudige versuchen, den Systemumfang zu verringern. Recht gefahrlos kann openoffice entfernt werden:
apt-get remove openoffice*
KDE oder anderes herauszuoperieren ist aber nicht so trivial! Spart euch diesen Versuch auf, bis euer erstes remastertes Knoppix überhaupt läuft. Womöglich wird mehr entfernt, als euch lieb ist. Das Ergebnis ist dann z.B. ein kernel panic beim Booten.
#############OPTIONAL###############
ssh starten
Ob dieser Schritt wirklich nötig ist, weiß ich nicht sicher. Allerdings sind dann beim nächsten Start (von CD) alle erforderlichen Schlüssel bereits angelegt.
/etc/init.d/ssh start
Passwort für knoppix einrichten
Bei Knoppix sind per default alle Passwörter gesperrt. Um später per ssh einloggen zu können, legen wir für den bereits eingerichteten Benutzer knoppix ein Passwort ein:
passwd knoppix
Gebt euer beliebiges Passwort ein.
Netzwerk und ssh-server beim Booten hochfahren
Damit unser Netzwerk und der ssh-Server auch automatisch beim Booten gestartet werden, müssen wir dies dem System auch mitteilen:
update-rc.d networking defaults
update-rc.d ssh defaults
Anpassungen beenden
Nachdem das System auf seine eigenen Belange angepasst wurde, muss noch ein wenig aufgeräumt werden. Wer zuvor /proc gemountet hat, muss es nun wieder unmounten:
umount /proc
Jetzt kehren wir wieder auf das Root-Verzeichnis der Knoppix Live-CD zurück
STRG+D (Tastenkombination)
Temporäre Dateien entfernen
Falls per apt-get zusätzliche Pakete installiert oder erneuert wurden, sollten deren temporären Dateien (.deb z.b.) entfernt werden. Schaut dazu nach im Verzeichnis /var/cache/apt/.
Bootloader anpassen
Jetzt ist das System angepasst und aufgeräumt. Aber bevor wir das ISO-Image generieren, sollte der Bootloader in seinem Verhalten angepasst werden. Knoppix 3.4 benutzt als Bootloader isolinux. Ihr findet die zugehörigen Dateien unter /knxmaster/boot/isolinux. Das Bootverhalten kann beeinflusst werden, indem die Konfigurationsdatei isolinux.cfg bearbeitet wird. Die Datei kann nahezu beliebig abgeändert werden. Überflüssige Einträge können z.B. entfernt werden.
Zunächst kann der Timeout angepasst werden. Er steht auf 300, das entspricht 30 Sekunden. Für ein System, das selbstständig hochbooten soll, ein wenig zu viel. Macht z.B. 50 daraus, also 5 Sekunden.
Des Weiteren muss die erste append-Zeile um den Eintrag "nodhcp" erweitert werden. Sonst überschreibt das DHCP-Broadcasting unsere Netzwerkeinstellung. Unschön, aber pragmatisch. Alternativ kann auch das DHCP aus Knoppix entfernt werden. Das habe ich aus Zeitgründen aber nicht testen können.
Bei diesem System ist es unnötig, dass ein Desktop geladen wird. Die shell reicht. Dadurch wird auch die Bootzeit verkürzt. Dazu fügen wir in der append-Zeile die Option "2" ein. Das System wird dann im Runlevel 2 gestartet.
Teil 3 - ISO-Filesystem und ISO-Image anlegen
Als nächstes generieren wir das ISO-Filesystem und das ISO-Image selbst. Je nach System dauert das ca. 30 Minuten.
ISO-Filesystem anlegen
mkisofs -R -l -V "Ein beliebieger Name" -hide-rr-moved -v /mnt/hde1/knxsource/KNOPPIX | create_compressed_fs - 65536 > /mnt/hde1/knxmaster/KNOPPIX/KNOPPIX
Nach erfolgreichem Abschluss ist eine große Datei mit Namen KNOPPIX im Verzeichnis /knxmaster/KNOPPIX gelandet. Als Abschluss erzeugen wir nun das eigentliche ISO-Image. Dieser Vorgang dauert nur wenige Minuten.
ISO-Image anlegen
In der shell folgende Zeile eingeben:
mkisofs -pad -l -r -J -v -V "VDR-Rescue" -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o /mnt/hde1/knoppix.iso /mnt/hde1/knxmaster
Nachdem dieser Prozess abgeschlossen ist, liegt im angegebenen Pfad endlich das ISO-Image. Brennt es auf einen RW-Rohling und versucht mal, davon zu booten.
Falls ihr eurer Knoppix-Variante die gleiche feste IP zugewiesen habt, die auch euer VDR hat, dann lasst nicht beide Rechner damit ins Netz. Wie zu erwarten, wird dann bei Knoppix nicht das Netzwerk und damit auch nicht ssh funktionieren.