Conceptronic CH3SNAS

Nutzung des NAS als Remote Installation System (RIS) mittels TFTP

Dieser Artikel wurde von Andreas als Gastartikel eingereicht! Danke!

Hallo,

Ich möchte hier meine Projekte mit meinen „Würfeln“ vorstellen, welche ich nun seit mehr als einem Jahr am Laufen habe.

Da ich nebenberuflich Kunden mit Ihren IT-Problemen betreue und es dort ab und an vorkommt, dass ich komplette Systeme neu aufsetzen bzw. installieren muss, kommt man sehr oft in die Bedrängnis, mit CDs und DVD’s zu jonglieren.

Ich habe meist mit folgende Betriebssystemen Kontakt: XP (Home, Pro), SUSE als Server, ab und an ne alte Windows 2K ….

Nun haben Datenträger die Eigenart Beine zu bekommen oder sie verstecken sich sehr gerne (Falsch eingelegt in den Ordner, oder manchmal auch gar nicht ….. ohne Worte)

Nun hatte ich in meiner hauptberuflichen Laufbahn mal nebenbei (wie bei Administratoren immer so vorausgesetzt) mit einem Projekt zu tun, bei welchem ich mal eben schnell knapp 40 Rechner installieren sollte und oben drauf noch einen Windows weiß nicht was für einen Server.
Das imponierende an diesem Server war, ich hatte innerhalb kürzester Zeit (glaube knapp ne Woche oder so) einen Windows-Server am Laufen und auch heraus bekommen, dass man wohl angeblich damit in der Lage sein soll zig PCs parallel zu installieren. Auch dieses hatte ich innerhalb von wenigen Stunden zum laufen bekommen (INET sei Dank, für all die vielen und schönen Informationen)

Jetzt kommt der Teil, der mir die Schuhe aus zog. Die oben erwähnten 40 Rechner hatte ich innerhalb von einem Tag samt benötigter MS-Software (also Office und Co.) mal so eben schnell installiert und war quasi dem Zeitplan um tagen Voraus. Ich habe nicht einmal für all diese PC’s, nach dem Vorbereiten des Servers, eine CD in die PCs stecken müssen. Diese Funktion im Windows Server nannte sich RIS ( Remote Installation System). Da ich danach nie wieder mit einem Windows-Server zu tun hatte, war ich irgendwie traurig, bei jedem Mal, wenn ich eine CD oder DVD zur Installation benutzen musste.

Werbung


Nun habe ich Berufsbedingt (Netzwerkadministrator von ca. 600 schicken CISCO Geräten und zig Linux-Firewalls, Mail- und andere Server) weiterhin nicht viel mit Windows am Hut und bin eher aus der Linux Ecke.

Ich habe immer mal versucht über Boot-Images etc. eine Art RIS zurecht zu biegen, es aber nie in der Art und Weise geschafft, wie ich es damals auf dem Windows-Server sah. Es war damals schon egal, welche Hardware drin steckte, welche Netzwerkkarten benötigt wurden, einfach die Treiber hinterher kopieren, den neuen Rechner Booten, XP installieren das war’s. Wie auch immer, es verging ne Menge Zeit. Seit ich nun VDSL habe, habe ich auch einen PC-Basierenden Router am Laufen.

Das hat verschiedene Gründe:

  1. brauche ich unbedingt VPN
  2. VPN auf fertigen Routern welche auch noch VDSL beherrschen (also VLAN-Taging von PPPoE-Paketen) kosten schon fast ein Vermögen.
  3. hatte ich noch ein P4-Board von Asrock, ein 19″-Schrank (Jepp, ich habe in meinem Haus eine strukturierte CAT7/CAT5 Verkabelung) und darin leer stehend ein PC-Gehäuse (6HE)

Nun schnell den PC zusammen gebastelt, IPCOP drauf und schon hatte ich alles was ich brauchte. In diesem Schrank stehen auch 3 Conceptronic CH3SNAS „gepimpt“ mit einem dicken Kondensator am Einschalter, damit die (von mir lieblich Würfel genannt) NAS, wenn sie über die Zeitschaltuhr eingeschaltet werden automatisch starten. Normalerweise müsste man beim Einschalten der Stromzufuhr jeden Würfel einzeln einschalten … Daher der Kondensator und die Zeitschaltuhren. Ein „Würfel“ dient als Media-Streamer für meine Tochter, die anderen beiden sind einfach nur Backup-Server für ein entferntes Backup vom Kunden.

Da dieses Backup sehr von den Würfeln abhängt, hier eine kurze Beschreibung:

Die Funktion sieht aus wie folgt: Da Bänderschreiben zu lange dauert und ab einer bestimmten Größe auch sehr teuer ist, habe ich mit meinen Kunden folgendes Konzept vorgeschlagen:

  • Backup 1. Stufe: Ein NAS steht vor Ort, auf welchem entweder automatisiert (wenn ein Linux-File-Server vorhanden) eine DaSi erfolgt oder manuell auf einer Windows-Kiste angestossen.
  • Backup 2. Stufe: per VPN-Tunnel durchs Internet hindurch wird ein RSYNC angestoßen, welches nur die veränderten Dateien auf einem bei mir im Serverschrank stehenden „Würfel“ schreibt.

Wenn kein Linux-Server vor Ort steht, kommt ein Programm zur Ausführen welches ich mit AutoIt geschrieben habe. Ich habe dort sehr einfach die Möglichkeit Abläufe zu programmieren. Abhängig von den Ergebnissen, lasse ich mir Emails mit entsprechender Wichtigkeitsstufe schicken. Das Ganze eingepackt in einer schönen und informativen Oberfläche freut den Kunden über die Einsparung von Zeit und Geld und erhöhter Sicherheit. Wenn , als kleines Plus, sich der Server/PC auch noch selber ausschaltet ist die Freude beim Kunden sehr groß.

Unter Linux ist das Ganze weniger optisch aufbereitet am Arbeiten und für den Kunden unsichtbar sowie komplett automatisch. Aber auch hier erhalte ich meine wichtigen Mails mit entweder dem blauen Ausrufezeichen (alles OK) oder dem roten Ausrufezeichen (da ist was schief gelaufen).

Es gibt, in Perl geschrieben, ein Programm, dass nennt sich „mime-construct“ hier. Vorausgesetzt, auf dem ausführenden Server (egal ob Liunx, unser schöner Würfel oder IPCOP/IPFIRE) ist der MTA (Mail Transfer Agent) meist Postfix, sendmail o.ä. schon soweit konfiguriert, dass Mails verschickt werden können, ist dieses Perl-Programm eine kleine Erleichterung, wenn es darum geht HTML-Mails per Script zu generieren und zu versenden. Zu installieren ganz einfach mit dem kleinen Perl-Helfer cpan ….

Nun hatte ich aus den oben genannten Gründen einige „Würfel“ am Laufen. Alle, wie schon oben beschrieben, mit einem Kondensator gepimpt, zur automatischen Einschaltung zusammen mit dem Einschalten der Stromversorgung per 3,- € Schaltuhr, zum Stromsparen.

Zu meinem Router:

Zu erst hatte ich eine Zeitlang IPCop installiert jetzt fahre ich IPFire, da letztere Distri mehr Funktionen zu bieten hatte, ist dies meine aktuelle Distri, welche ich gern benutze, da auch super stabil. IPFire & IPCop haben beide eine sehr komfortable grafische Oberfläche welche per Browser sehr gut zu bedienen ist. Eine Funktion die mir von Anfang an ins Auge stach ist der DHCP-Teil. Im DHCP Server von beiden Systemen hat man nicht nur die Möglichkeit statische IP-Adressen zu vergeben und zu verwalten. Als kleines Plus so zu sagen, kann man hier noch TFTP-Funktionen konfigurieren. (Ich hatte ähnliches mal selber hingebogen mit einem Projekt was sich DIXIE nannte, an welchem ich auch eine Zeitlang aktiv mit programmiert hatte)

Was bedeutet:

Bootet ein PC mit aktivierter Bootfunktion der Netzwerkkarte über das Netzwerk, kann DHCP nicht nur eine IP-Adresse, Netzwerkmaske, Router-Adresse etc. übermitteln, sondern auch noch einen TFTP-Server mit angeben, welchen das bootende Gerät dann nach einer Bootbaren aber per DHCP vorgegebenen Datei befragt.

Wichtig ist, die Geräte müssen in der Lage sein und PXE (Pre-Boot Execution Environment) verstehen. Die neueren Rechner mit LAN-On-Board sowie einzelne Netzwerkkarten von den üblichen Herstellern können dieses in der Regel. Meist ist es nur eine kleine Einstellung im Bios, welches diese Funktion aktiviert (Achtung bei Aktivierung auch an die Boot-Reihenfolge der aktiven eingebauten Geräte im PC denken)

Im Falle von extra eingebauten Netzwerkkarten, bekommt man in der Regel für kurze Zeit während des Bootens eine Nachricht zu sehen, worin steht, wie man die Boot-Einstellungen der Netzwerkkarte erreichen kann. Meist wie beim BIOS-Setup irgend eine abenteuerliche Tasten-Kombination die simultan gedrückt werden muss. Ist die Lan-Boot Funktion per PXE aktiviert, steht einer Remote-Installation per RIS schon fast nichts mehr im Wege.

Nun wird es interessant! Durch Zufall bin ich auf folgende Adresse gestoßen: http://oss.netfarm.it/guides/

Dort steht beschrieben, wie man unter Linux einen von mir sehr lang ersehnten RIS-Server zum Laufen bringt. Auf allen Würfeln habe ich selbstverständlich das fun_plug nach der Anleitung von Uli am Laufen. Da ich nie im Voraus weiß, was ich später einmal brauchen könnte, installiere ich meist alles, was ich so finden kann, so auch geschehen mit dem fun_plug!

Nun habe ich alles, was ich so brauchen könnte um die RIS-Tools zu kompilieren und zu installieren. Nach dem ich alles laut den Anleitungen kompiliert, installiert und eingerichtet hatte, kann ich nun per grafischer Oberfläche mittels GFX-PXE-Boot mir quasi aussuchen, was ich auf dem nächsten PC installieren möchte. Ich habe zur Auswahl XP Pro, XP Home, W2K-Pro, Linux diverse Versionen. Wie schon beschrieben, DHCP + grafischer Oberfläche wird mir vom IPCOP / IPFIRE zur Verfügung gestellt.

Folgende Einträge sind dort sehr wichtig:

  1. MAC-Adresse vom PC
  2. IP-Adresse vom PC
  3. Ein Häkchen in „Aktiviert“ setzen
  4. Eventuell das Feld Anmerkung ausfüllen bei IPCOP hat man noch ein Feld für den PC-Namen, das wurde bei IPFIRE weggelassen und durch fortlaufende Standardeinträge ersetzt.
  5. next-Server: hier kommt die IP-Adresse vom Würfel eingetragen
  6. Filename: entweder „pxelinux.0“ oder „gpxelinux.0“ je nach belieben, welche Oberfläche einem besser gefällt.
  7. root path: in meinem Falle: /mnt/HD_a2/REMINST

Damit wäre der erste Schritt getan. Jetzt muss nur noch der Würfel entsprechend vorbereitet werden. IPCOP und IPFIRE, muss nicht unbedingt als Router eingesetzt werden, wenn man eine kleine stromsparende Intel kompatible Büchse hat, einfach Boot-CD herunter laden und halt nur die grüne Karte aktivieren und als rot irgend was auswählen. Wer sich selber herantraut, kann das Ganze auch auf dem Würfel zum Laufen bringen, nur warne ich davor, so eine passende dhcpd.conf Datei hat es in sich, nachträgliche Änderungen per Editor und ein Schreibfehler…. man sucht manchmal einige Zeit nach dem kleinen Fehler.

Meinen TFTP-Boot-Kram habe ich das Verzeichnis /mnt/HD_a2/REMINST auf dem Würfel angelegt. Für PXE-Infos und Tar-Balls, Wiki etc besucht mal diese Seite. Unter dem Verzeichnis /mnt/HD_a2/REMINST sind folgende Dateien:

  • pxelinux.0 (PXE-Bootdatei, ASCII-Menu-Oberfläche)
  • gpxelinux.0 (PXE-Bootdatei, teils grafische Menu-Oberfläche)

Dazu das Verzeichnis pxelinux.conf mit der Datei default

Der Inhalt könnte wie folgt aussehen (im Falle von gpxelinux.0):

DEFAULT vesamenu.c32
PROMPT 0
# Menu Configuration
MENU WIDTH 80
MENU MARGIN 10
MENU PASSWORDMARGIN 3
MENU ROWS 12
MENU TABMSGROW 18
MENU CMDLINEROW 18
MENU ENDROW 24
MENU PASSWORDROW 11
MENU TIMEOUTROW 20
MENU TITLE -=*[ Mein Remote Boot Menu per PXE ]*=-
TIMEOUT 1000
 
LABEL bootlocal
        MENU DEFAULT
        MENU LABEL von eigener Festplatte booten
        LOCALBOOT 0
LABEL rescue
        MENU LABEL Rescuedisc
        KERNEL kernel32
        APPEND vga=normal initrd=rootfs.cgz root=/dev/ram0 rw
LABEL win2k
        MENU LABEL Windows 2000
        KERNEL w2k.0
LABEL winxp
        MENU LABEL Windows XP Professional
        KERNEL winxp.0
LABEL winhp
        MENU LABEL Windows XP Home
        KERNEL winxh.0
LABEL win2k3
        MENU LABEL Windows 2003
        KERNEL w2k3.0
LABEL suse-11.3-32bit
        MENU LABEL Open SuSE 11.3 32Bit
        KERNEL suse-11.3-linux
        APPEND VGA=ask initrd=suse-11.3-initrd install=ftp://192.168.9.99

Nun unter /mnt/HD_a2/REMINST den RIS-Kram von hier kompilieren und nach /mnt/HD_a2/REMINST/binlsrv installieren. Achtung, es wird auch der Python-Interpreter aus dem fun_plug benötigt!

Unter /mnt/HD_a2/REMINST liegen meine Verzeichnisse wie folgt:

  • inf: hier kommen alle benötigten .inf Dateien von den Netzwerkkarten hinein
  • sys-files: hier kommen von den Treibern alle .sys, .cat, .com, .dll etc. Dateien rein

Nun das Programm infparser.py aus dem binlsrv-Verzeichniss den Cache nach Anleitung vom Programm aufbauen lassen.

Ich lasse per /ffp/start/tftp den TFTP-Server als auch den binlsrv (die kompilierte binäre Version) auf dem Würfel laufen und habe das Start-Script wie folgt angepasst:

#!/ffp/bin/sh
 
# PROVIDE: in.tftpd
 
. /ffp/etc/ffp.subr
 
name="in.tftpd"
command="/ffp/sbin/in.tftpd"
tftpd_flags="-l -s /mnt/HD_a2/REMINST"
in_tftpd_flags="-l -s /mnt/HD_a2/REMINST"
 
tftpd_flags="-l -s /nfsroot"
in_tftpd_flags="-l -s /nfsroot"
 
cd /mnt/HD_a2/REMINST/binlsrv
./binlsrv &
 
run_rc_command "$1"

Gestripped ist der Server nur knappe 12Kb groß und frist nicht zuviel RAM und Ressourcen, daher hatte ich mich entschieden, die binäre Variante laufen zu lassen an Stelle der Python basierenden Variante. Na klar hätte ich ein eigenes Script schreiben können, aber die Nervosität, ob so etwas denn wirklich funktionieren könnte, hat mich zu einer noch heute anhaltenden „quick and dirty“ Lösung hinreißen lassen. Wie heißt es so schön: Ein Provisorium hat meist länger Bestand als …….

Dann der Test …. es funktioniert. Ich kann nun selbst PCs ohne irgendwelche Wechselträger Laufwerke wie CD’s oder DVD’s mit der Installation von XP oder W2K, Linux beglücken. Beim Kunden vor Ort, erspart man sich sehr viel Zeit mit so einer RIS-Umgebung! Zusätzlich kann man .sif Dateien nach seinen Bedürfnissen anpassen.

Um nicht jedes Mal die Windows-Update Dateien aus dem Internet wo möglich noch mit einer „Klecker-Leitung“ herunter zu laden, gibt es die Möglichkeit von der Zeitschrift CT das Programm ctupdate zu installieren. Das Programm kann für alle Windows-Versionen, alle Office-Versionen in jeder Sprache und für jede Plattform (32bit, 64bit) alle benötigten Patche herunterladen und in einem Verzeichnis zur Verfügung stellen. Früher von ‚CT und dem Autor zusammen entwickelt, jetzt vom Autor Torsten Wittrock in Eigenregie weiter entwickelt kann man sich das Paket hier herunterladen und installieren. Im ausgepackten Archiv unter sh findet man die entsprechenden Scripts für die nächtlichen Downloads.

Etwas ist hier zu beachten: Office 6 wird von der aktuellen Version nicht mehr unterstützt. Man kann sich aber noch die ältere Version (6.2) vom CT bzw. Heise Server besorgen in ein eigenes Verzeichnis installieren und nur den älteren kram einmal herunter laden und dann aufheben, z.B.: für Installationsarbeiten an älteren Office-Versionen.
Da hier keine weiteren Sicherheitsupdates von Microsoft zur Verfügung gestellt werden.

Die aktuelle Version von ctupdate bzw. heute wsusoffline schließt auch aktuelle Windows Versionen mit ein. Bisheriger Nachteil: leider lässt das Programm keine Installationen von einem Netzlaufwerk zu. Sprich man muss sich aus dem Archiv und den herunter geladenen Patches das komplette Verzeichnis „client“ auf den PC Kopieren. Mit einem Giga-Netzwerk dauert es nur einpaar Minuten. Das Programm UpdateInstaller.exe bietet eine grafische Oberfläche wo man automatische Reboots und einiges mehr einstellen kann. Ansonsten stellt das Programm selber fest, welche Patches schon installiert wurde und installiert nur die Benötigten nach.

Es ist schon sehr zeitsparend, als jedes Mal auf den Autoinstaller von Windows zu warten, oder per Web-Interface sich den kram mühsam herunter zu laden. Zu den Patches zählen übrigens auch die Service-Packs ….. Und das für Windows als auch Office! Einige Programme und so weit ich mich erinnere auch ctupdate bzw. wsusoffline brauchen kleinere Module welche nachinstalliert werden müssen. Diese Module werden meist im Zusammenhang mit den Interpretern Perl oder php benötigt und lassen sich per cpan für perl bzw. pear für php sehr einfach nach installieren. Auch erkennen diese „Modul-Verwalter“ für php oder perl fehlende Abhängigkeiten und teilen einem dies entweder mit oder fragen gleich danach ob diese auch gleich installiert werden sollen.

Die Wiki Seiten der von mir benutzten Programme und Projekte sind alle sehr gut beschrieben. Zwar in Englisch, aber trotz dem sehr gut. Die meisten Projekte bieten für weitere Fragen oder Probleme auch Foren oder Mailinglisten an. Wie schon eingangs beschrieben, habe ich von dem fun_plug alle Pakete installiert und daher nur wenig zu tun gehabt mit Nachinstallationen für alle oben genannten Programme und Projekte.

Alles in Allem, kann man sagen, dass so ein keiner Würfel, einem „Kleinkrauter“ das Leben doch sehr vereinfachen und im IT-Alltag sehr behilflich sein kann.

Unter dem schwarzen Deckel steckt weit aus mehr als „nur“ ein Datei- und Streaming-Server !

Er, der kleine Schwarze Würfel, kann zu Hause oder auch in einer kleinen Firma die Anschaffung von teurem Equipment ersparen. Ich habe den Kauf bis heute nicht bereut und möchte an dieser Stelle allen Projektteilnehmern, Programmierern und ganz speziell Uli meinen Dank aussprechen ohne Derer es solch tolle Möglichkeiten nie geben würde!

Veröffentlicht von

Uli

IT-Nerd und Admin

4 Gedanken zu „Nutzung des NAS als Remote Installation System (RIS) mittels TFTP“

  1. Danke für den TIP, wusste ich nicht, dass der dnsmasq mittlererweile auch in der Lage ist, einen DHCP-Server zur Verfügung zu stellen !

    Interessant: der dnsmasq DHCP-Daemon hat wohl noch einpaar Extras mehr als der vom ISC, z.B.: Zuweisung einer IP für z.B. 2 MACs, im Falle von Notebooks, welche ja meist eine Kabelgebundene und eine Wireless Verbindung erlauben. In den wenigsten Fällen werden beide gleichzeitig benutzt. So spart man sich in seinem „Hausnetzwerk“ eine IP in einem Class C Netzwerk pro Lappi …. (Diese Funktion ist aber erst seit 2.46 implementiert) veringert dne Verwaltungsaufwand.

    Der Grund warum ich den ISC-DHCP benutze:

    Er ist in einer standard IPCop/IPFire Installation schon vorhanden und kann über dies auch noch bequem per WEB-Interface bedient werden.

    Interessant für Benutzer des DNSMASQ, die FAQ es sind dort einige wissenswerte Spielregeln aufgelistet in Bezug auf entferntes Logging (Was ich sehr rege Nutze) sowie einpaar kleinere Fallen mit VISTA und seiner Firewall !

    Vielen Dank, auf jeden Fall für die Info, wenn ich mal eine schnelle kleine Lösung brauche, werde ich es mir auf jeden Fall einmal ansehen.

  2. Pingback: Die Netzwerkkarte - Wir erklären, wofür sie gut ist

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.