[HowTo] Debian Installation mit Installer über SSH

Dieses Thema im Forum "Installation & Basiskonfiguration" wurde erstellt von xelra, 09.08.2009.

  1. #1 xelra, 09.08.2009
    Zuletzt bearbeitet: 09.08.2009
    xelra

    xelra Jungspund

    Dabei seit:
    09.08.2009
    Beiträge:
    12
    Zustimmungen:
    0
    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:
    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. :D

    Schöne Grüße

    Xel'Ra
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. defcon

    defcon Kaiser
    Moderator

    Dabei seit:
    22.08.2005
    Beiträge:
    1.486
    Zustimmungen:
    1
    Ort:
    Bruchsal
  4. #3 xelra, 10.08.2009
    Zuletzt bearbeitet: 10.08.2009
    xelra

    xelra Jungspund

    Dabei seit:
    09.08.2009
    Beiträge:
    12
    Zustimmungen:
    0
    Mehr Robustheit

    Ja, aber vorher soll dieses HowTo noch Robustheit bekommen.

    Ich würde mich sehr freuen, wenn jemand mithilft, wie man das anstellen könnte.

    Es geht um Folgendes: Zur Zeit ist der Reboot ziemlich kritisch, denn wenn man GRUB falsch konfiguriert hat oder der Installer eine Fehlermeldung oder Abfrage startet BEVOR die Netzwerkkonfiguration initialisiert ist, dann "hängt" das System und muss manuell rebootet werden.

    Dazu habe ich mir folgendes gedacht: Man könnte den Netboot-Installer an 2ter Stelle (also nicht default) in GRUB eintragen und dann mithilfe von GRUB-Reboot, welches man in seinem vorigen System installiert, einmalig den Netboot-Installer starten.
    Bei einem weiteren Reboot wäre dann wieder das Ursprungssystem das zu bootende System.

    Um das funktionieren zu lassen müsste man 2 Dinge machen, die ich nicht weiß wie man Sie lösen kann:

    1. Falls Grub mit einem Fehler abbricht und überhaupt nichts bootet, dann wartet GRUB auf das drücken einer Taste und rebootet dann erst. Das müsste man GRUB "abgewöhnen", so dass in diesem Falle ein automatischer Reboot kommt.

    2. Man müsste in den Netboot-Loader mit einbauen, dass er irgendwie auch rebootet. Das könnte man z.B. bewerkstelligen indem man den Netboot-Loader so verändert, dass er nach z.B. 1 Std. Uptime automatisch rebootet. Somit würde das System nach einer Stunde wieder ansprechbar sein.

    Falls jemand für das 2te eine bessere Lösung hat, soll er es bitte vorschlagen.

    Ich wrüde sagen, wenn man diese beiden Dinge noch realisieren kann, dann ist diese Installationsmethode eine ziemlich sichere und wohl die komfortabelste und einfachste Methode um einen Remote-Install zu machen.

    Ich freue mich auf eure Vorschläge.

    Mit freundlichen Grüßen

    Xel'Ra
     
  5. #4 HeadCrash, 11.08.2009
    Zuletzt bearbeitet: 11.08.2009
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Morgen,

    evtl kann man hier mit der failback arbeiten.

    http://www.gnu.org/software/grub/manual/html_node/Booting-fallback-systems.html

    Ich werde es jedenfalls die Tage mal ausprobieren.

    mfg
    HeadCrash


    Also Fallback im Grub hat mir zumindest meine Testmaschine gerettet und das normale System gestartet.
    Code:
    #
    # Rettungsleine
    #
    default saved
    fallback 1
    
    title    Netboot-Installer
    ###
    ### TYPO
    ###
    root    (hd0,0=)
    ###
    ### /TYPO
    ###
    kernel  /boot/installer/linux
    initrd   /boot/installer/initrd.gz locale=en_US console-keymaps-at/keymap=de
    
    
    title           Debian GNU/Linux, kernel 2.6.26-2-686
    root            (hd0,0)
    kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro quiet
    initrd          /boot/initrd.img-2.6.26-2-686
    
     
  6. xelra

    xelra Jungspund

    Dabei seit:
    09.08.2009
    Beiträge:
    12
    Zustimmungen:
    0
    Fallback

    Ja, ich glaube Fallback ist eine schönere Lösung als GRUB-Reboot. Allein schon weil es direkt mit eingebaut ist.

    Das löst das Problem mit Kernel-Panics und allem anderen, was den Boot-Prozess angeht.

    Bleibt aber immer noch die Frage: Wie bekommt man den Netboot-Installer dazu das System zu restarten, wenn er erfolgreich geladen wurde, aber es nicht bis zu dem Punkt schafft, an dem man sich per SSH anmelden kann. Sei es weil man so schusselig war und die Netzerkkonfiguration falsch gemacht hat oder weil der Installer bei einer Frage bezüglich der Sprache hängen bleibt (das mit der Sprache sollte eigentlich nicht passieren. BÖSE BÖSE! Da hat wohl einer seinen Installer nicht in einer virtuellen Maschine getestet! xD).

    Wenn das noch gelöst ist, dann ist das hier eine super Methode auch für Unerfahrene seinen Server neu zu installieren.

    Grüße

    Xel'Ra
     
  7. #6 HeadCrash, 12.08.2009
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Hmm der Installer startet ja ne BusyBox hier evtl in die /etc/inittab einen Eintrag "reboot -d 3600 -f" vornehmen.
    Nur sollte man vor dem reboot dafür sorgen das als nächstes nicht wieder der Installer geladen wird.

    Also eher ein Konstrukt
    Code:
    sleep 3600 && mount /dev/sda1 /mnt && cp /mnt/boot/grub/menu.lst_backup /mnt/boot/grub/menu.lst && reboot -f
    
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

[HowTo] Debian Installation mit Installer über SSH

Die Seite wird geladen...

[HowTo] Debian Installation mit Installer über SSH - Ähnliche Themen

  1. [HowTo] NVidia und 3D unter SuSE/openSUSE

    [HowTo] NVidia und 3D unter SuSE/openSUSE: NVidia und 3D unter SuSE/openSUSE Da dieses Thema immer wieder ein Problem zu sein scheint, hier mal ein kleines HowTo, das auch für Noobs...
  2. [HowTo] WLAN-Router mit WPA/WPA2 unter Linux

    [HowTo] WLAN-Router mit WPA/WPA2 unter Linux: Dieses HowTo soll erklären, wie man unter Linux per WLAN-Karte eine Verbindung zu einem Router aufbaut, welcher mit WPA/WPA2-Verschlüsselung...
  3. [HOWTO] Cherry CyMotion Master Linux ohne Keym@n nutzen

    [HOWTO] Cherry CyMotion Master Linux ohne Keym@n nutzen: Ich seit wenigen Stunden die Linux-Tastatur von Cherry. Leider liess sich die Software KeyM@n nicht installieren unter Debian Etch so dass ich...
  4. FreeBSD - SVN - Ports [HowTo]

    FreeBSD - SVN - Ports [HowTo]: Wie einige im IRC mitbekommen haben habe ich SVN (Subversion) am anfang falsch verstanden. Es soll in Zukunft ja CVSUP ersetzen und dient dazu die...
  5. [HowTo] Routing ¿?¿

    [HowTo] Routing ¿?¿: ey waere super kewl wenn einer mal en routing howto onine stellen koennte (mit technischen hintergrundinfos and stuff :D ) incl. ip...