X
xelra
Jungspund
Hallo liebes Forum,
heute schreibe ich ein kleines HowTo für euch. Eigentlich schreibe ich es für mich selbst, damit ich es mir speichern kann und wenn ich es wieder brauche hier nachschlagen kann. Aber bevor ich es als Textdokument auf meiner Platte verrotten lasse, dachte ich mir, dass ich euch alle teilhaben lasse.
Also ich stand vor volgendem Problem. Mein Rootserver hat kein Notfallsystem und es sollte aber eine frische Installation von Debian (Etch, weil Lenny wird noch nicht von allen Diensten die ich laufen habe unterstützt) drauf. Nach etwas Recherche dachte ich es ginge nur mit debootstrap. Das erinnerte mich etwas nostalgisch an Gentoo Zeiten, denen ich gerade wegen des hohen Potenzials für menschliche Fehler den Rücken gekehrt hatte.
Dann bin ich darauf gestoßen, dass man doch einfach seinen eigenen Netboot Installer für Debian kompilieren könnte und da SSH aktiviert. Dann bootet man den Installer wie eine CD, aber von Festplatte und SSH und GO!
Und genau das beschreibe ich nun für euch hier kurz und knapp.
ICH MUSS AUSDRÜCKLICH DARAUF HINWEISEN, DASS IHR EURE, MIT DIESEM HOWTO ERSTELLTEN, BOOT IMAGES AUF JEDEN FALL ERST IN EINER VMWARE TESTEN SOLLTET UND SIE DANN ERST AUF EUREM ROOTSERVER ZUR NEUINSTALLATION VERWENDEN SOLLTET! WENN EUER INSTALLER MIT EINER FEHLERMELDUNG FAILED, DANN MUSS EINER VON HAND DEN SERVER REBOOTEN!
Als erstes installieren wir benötigte Pakete:
Verzeichnis wechseln und Sourcen holen:
Verzeichniswechsel:
Abhängigkeiten afulösen:
Verzeichniswechsel und überprüfen der Abhängigkeiten (nach diesem Befehl sollte NICHTS kommen!):
Nun werden wir den Config-Dateien für die verschiedenen Architekturen allen (eigentlich bräuchte es nur die eine, die ihr dann auch verwendet) in der ersten Zeile ein "network-console" einfügen. Das ist sozusagen der kleine Hack, der es uns erlaubt den Installer über SSH anzusprechen:
Kommen wir zum Herzstück der ganzen Geschichte. Der Preseed-Datei. Mit ihr kann man so ziemlich alles machen. Auch voll automatische Installationen. Wir wollen aber nur eine sehr einfach Preseed-Datei, die auch jeder fortgeschrittene Rootserver-Administrator verseht und modifizieren kann, ohne Schnickschnack. Schließlich wolen wir ja nur einen Server Installieren und nicht eine voll automatische Installation an eine 500 PCs umfassende Infrastrukur deployen.
Als erstes lassen wir die Config-Datei auf unsere Preseed-Datei, die wir gleich erstellen werden, zeigen. Sie soll in /tmp liegen:
Hier ändern wir die Zeile "PRESEED=" zu:
Wir erstellen nun die Preseed-Datei, aber nicht in /tmp, weil da ist sie ja nach einem Reboot gleich verschwunden:
Und das hier kommt rein in die minimalistische Preseed-Datei (natürlich an euer System angepasst):
Wenn ihr euch eine größere Preseed-Datei auotmatisch generieren lassen wollt, dann empfehle ich euch auf Instalinux mal vorbei zu schaun.
Die Preseed-Datei noch nach /tmp kopieren und unseren Netboot-Installer kompilieren:
Jetzt sollten sich unsere Images in /root/debian-installer-*/build/dest/netboot/debian-installer/<arch> zu finden sein.
Diese Images sollten entsprechend den nächsten Schritten jetzt erstmal in einer virtuellen Maschine getestet werden um zu sehen, ob Sie einwandfrei funktionieren, oder beim booten ein Fehler angezeigt wird. Einfach um das ganze so realistisch wie möglich zu gestalten per SSH auf die virtuelle Maschine zugreifen und alles per "remote" machen.
Also die Images kommen jetzt auf die /boot-Partition:
Und in GRUB werden
folgende Einträge geschrieben (an erster Stelle, denn es soll ja unseren Installer automatisch nach dem Reboot starten):
Bei mir ist übrigens alles Englisch, mit deutscher Tastatur. Es ist mir auch absolut schleierhaft, wieso sich ein Sys-Admin für eine andere Sprache als Englisch entscheiden sollte. Allein schon wegen Debugging und Fehlersuche.
So sollte des GRUB-Setup funktionieren, wenn ihr /boot auf /dev/sda1 habt. Solltet ihr noch ein anderes Partitionsschema haben, dann solltet ihr euch eigentlich soweit mit GRUB auskennen um es entsprechend anzupassen. Solltet ihr das GRUB-Setup verkacken, tja, dann heißt es wohl Support anrufen. Eine zweite Chance gibt es nicht.
Wenn wir jetzt rebooten:
Dann sollten wir nach 1-2 Minuten per SSH auf unsere Maschine, mit der in der preseed.cfg angegebenen IP und dem darin angegebenen Passwort für "network-console", zugreifen können. Der Benutzer nachdem uns der Netboot-Installer frägt ist "installer".
Ab hier sollte alles eine ganz simple Debian Installation sein, so wie wir sie alle kennen, wenn wir von CD installieren. Ich hoffe ich konnte ein paar Rootserverbesitzern da draußen helfen.
Übrigens sollte euch aufgefallen sein, dass euer Installer genau die Architektur hat, welche das System hat auf dem ihr Ihn erstellt habt. Wenn jemand weiß, wie man den Installer auch für eine andere Architektur kompilieren kann, der soll sich gerne melden, dann werde ich es diesem HowTo hinzufügen.
Bei Fragen stehen ich gerne NICHT! zur Verfügung.
Schöne Grüße
Xel'Ra
heute schreibe ich ein kleines HowTo für euch. Eigentlich schreibe ich es für mich selbst, damit ich es mir speichern kann und wenn ich es wieder brauche hier nachschlagen kann. Aber bevor ich es als Textdokument auf meiner Platte verrotten lasse, dachte ich mir, dass ich euch alle teilhaben lasse.
Also ich stand vor volgendem Problem. Mein Rootserver hat kein Notfallsystem und es sollte aber eine frische Installation von Debian (Etch, weil Lenny wird noch nicht von allen Diensten die ich laufen habe unterstützt) drauf. Nach etwas Recherche dachte ich es ginge nur mit debootstrap. Das erinnerte mich etwas nostalgisch an Gentoo Zeiten, denen ich gerade wegen des hohen Potenzials für menschliche Fehler den Rücken gekehrt hatte.
Dann bin ich darauf gestoßen, dass man doch einfach seinen eigenen Netboot Installer für Debian kompilieren könnte und da SSH aktiviert. Dann bootet man den Installer wie eine CD, aber von Festplatte und SSH und GO!
Und genau das beschreibe ich nun für euch hier kurz und knapp.
ICH MUSS AUSDRÜCKLICH DARAUF HINWEISEN, DASS IHR EURE, MIT DIESEM HOWTO ERSTELLTEN, BOOT IMAGES AUF JEDEN FALL ERST IN EINER VMWARE TESTEN SOLLTET UND SIE DANN ERST AUF EUREM ROOTSERVER ZUR NEUINSTALLATION VERWENDEN SOLLTET! WENN EUER INSTALLER MIT EINER FEHLERMELDUNG FAILED, DANN MUSS EINER VON HAND DEN SERVER REBOOTEN!
Als erstes installieren wir benötigte Pakete:
Code:
apt-get install vim dpkg-dev fakeroot
Verzeichnis wechseln und Sourcen holen:
Code:
cd /root
apt-get source debian-installer
Verzeichniswechsel:
Code:
cd /root/debian-installer-*/build
Abhängigkeiten afulösen:
Code:
apt-get build-dep debian-installer
Verzeichniswechsel und überprüfen der Abhängigkeiten (nach diesem Befehl sollte NICHTS kommen!):
Code:
cd /root/debian-installer-*/
dpkg-checkbuilddeps
Nun werden wir den Config-Dateien für die verschiedenen Architekturen allen (eigentlich bräuchte es nur die eine, die ihr dann auch verwendet) in der ersten Zeile ein "network-console" einfügen. Das ist sozusagen der kleine Hack, der es uns erlaubt den Installer über SSH anzusprechen:
Code:
cd /root/debian-installer-*/build/pkg-lists/netboot
sed -i '1s/.*$/network-console\n&/g' *.cfg
Kommen wir zum Herzstück der ganzen Geschichte. Der Preseed-Datei. Mit ihr kann man so ziemlich alles machen. Auch voll automatische Installationen. Wir wollen aber nur eine sehr einfach Preseed-Datei, die auch jeder fortgeschrittene Rootserver-Administrator verseht und modifizieren kann, ohne Schnickschnack. Schließlich wolen wir ja nur einen Server Installieren und nicht eine voll automatische Installation an eine 500 PCs umfassende Infrastrukur deployen.
Als erstes lassen wir die Config-Datei auf unsere Preseed-Datei, die wir gleich erstellen werden, zeigen. Sie soll in /tmp liegen:
Code:
vi /root/debian-installer-*/build/config/common
Hier ändern wir die Zeile "PRESEED=" zu:
Code:
PRESEED = /tmp/preseed.cfg
Wir erstellen nun die Preseed-Datei, aber nicht in /tmp, weil da ist sie ja nach einem Reboot gleich verschwunden:
Code:
cd /root/debian-installer-*/build
vim preseed.cfg
Und das hier kommt rein in die minimalistische Preseed-Datei (natürlich an euer System angepasst):
Code:
d-i debconf/priority select critical
d-i auto-install/enabled boolean true
d-i debian-installer/locale string en_US
d-i console-keymaps-at/keymap select de
d-i languagechooser/language-name-fb select English
d-i debian-installer/locale select en_US.UTF-8
d-i netcfg/choose_interface select eth0
d-i netcfg/disable_dhcp boolean true
d-i netcfg/get_nameservers string 208.67.222.222
d-i netcfg/get_ipaddress string <xxx.xxx.xxx.xxx>
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string <xxx.xxx.xxx.xxx>
d-i netcfg/confirm_static boolean true
d-i netcfg/get_hostname string <hostname>
d-i netcfg/get_domain string localdomain
d-i network-console/password password <password>
d-i network-console/password-again password <password>
Wenn ihr euch eine größere Preseed-Datei auotmatisch generieren lassen wollt, dann empfehle ich euch auf Instalinux mal vorbei zu schaun.
Die Preseed-Datei noch nach /tmp kopieren und unseren Netboot-Installer kompilieren:
Code:
cp /root/debian-installer-*/build/preseed.cfg /tmp
cd /root/debian-installer-*/build/
fakeroot make rebuild_netboot
Jetzt sollten sich unsere Images in /root/debian-installer-*/build/dest/netboot/debian-installer/<arch> zu finden sein.
Diese Images sollten entsprechend den nächsten Schritten jetzt erstmal in einer virtuellen Maschine getestet werden um zu sehen, ob Sie einwandfrei funktionieren, oder beim booten ein Fehler angezeigt wird. Einfach um das ganze so realistisch wie möglich zu gestalten per SSH auf die virtuelle Maschine zugreifen und alles per "remote" machen.
Also die Images kommen jetzt auf die /boot-Partition:
Code:
mkdir /boot/installer
cp /root/debian-installer-*/build/dest/netboot/debian-installer/<arch>/linux /boot/installer/
cp /root/debian-installer-*/build/dest/netboot/debian-installer/<arch>/initrd.gz /boot/installer/
Und in GRUB werden
Code:
vi /boot/grub/menu.lst
folgende Einträge geschrieben (an erster Stelle, denn es soll ja unseren Installer automatisch nach dem Reboot starten):
Code:
title Netboot-Installer
root (hd0,0)
kernel /installer/linux
initrd /installer/initrd.gz locale=en_US console-keymaps-at/keymap=de
Bei mir ist übrigens alles Englisch, mit deutscher Tastatur. Es ist mir auch absolut schleierhaft, wieso sich ein Sys-Admin für eine andere Sprache als Englisch entscheiden sollte. Allein schon wegen Debugging und Fehlersuche.
So sollte des GRUB-Setup funktionieren, wenn ihr /boot auf /dev/sda1 habt. Solltet ihr noch ein anderes Partitionsschema haben, dann solltet ihr euch eigentlich soweit mit GRUB auskennen um es entsprechend anzupassen. Solltet ihr das GRUB-Setup verkacken, tja, dann heißt es wohl Support anrufen. Eine zweite Chance gibt es nicht.
Wenn wir jetzt rebooten:
Code:
reboot
Dann sollten wir nach 1-2 Minuten per SSH auf unsere Maschine, mit der in der preseed.cfg angegebenen IP und dem darin angegebenen Passwort für "network-console", zugreifen können. Der Benutzer nachdem uns der Netboot-Installer frägt ist "installer".
Ab hier sollte alles eine ganz simple Debian Installation sein, so wie wir sie alle kennen, wenn wir von CD installieren. Ich hoffe ich konnte ein paar Rootserverbesitzern da draußen helfen.
Übrigens sollte euch aufgefallen sein, dass euer Installer genau die Architektur hat, welche das System hat auf dem ihr Ihn erstellt habt. Wenn jemand weiß, wie man den Installer auch für eine andere Architektur kompilieren kann, der soll sich gerne melden, dann werde ich es diesem HowTo hinzufügen.
Bei Fragen stehen ich gerne NICHT! zur Verfügung.
Schöne Grüße
Xel'Ra
Zuletzt bearbeitet: