Jump to content

Suse Linux als Boot-Server für die DBox


Empfohlene Beiträge

Hallo,

 

Ich hab mich entschlossen eine Möglichkeit aufzuzeigen, wie man einen Linux Rechner

anstelle Windows und Bootmanager nutzt. Als erstes mal die Installation um ein

YADD ans Rennen zu bekommen und wenn ichs selbst geschafft hab, wie man

Images unter Linux flasht.

Die Anleitung ist etwas oberflächlich gehalten, zum einen weil ich denke,

daß es so leichter verständlich ist und zum anderen, weil mir selbst oft noch das

nötige Hintergrundwissen fehlt.

 

Ich hab mich dazu entschlossen, da diese Anleitung :

http://www.dietmar-h.net/linux.html

leider nicht mehr ganz up-to date ist wie ich finde und andererseits kaum Hintergrundwissen drin

steckt und man im Falle des Nichtfunktionierens recht hilflos da steht. Also werd ich auch versuchen

das Ganze etwas mit meinem schmalen Wissen zu ergänzen.

Wenn ich da nicht ganz richtig liege, wäre ich für Korrekturen sehr dankbar!

 

Als erstes mal bisl was zum Verständnis des ganzen Ablaufs (von der Box aus gesehen):

 

1. IP beim Server erfragen.

2. Bootprogramm beim Server abfragen.

3. Bootprogramm holt Kernel vom Server.

4. Kernel startet und holt restliche Daten vom Server.

 

 

1. IP erfragen

--------------------

 

Direkt nach dem Booten kennt die Box (bzw. deren Netzwerkkarte) nur Ihre Hardware Adresse (MAC-Adresse).

Mit dieser kann sie in der Regel aber erst mal im Netzwerk nichts anfangen.

Das heißt er muss irgendwo ne IP herbekommen. Hier kommt dann der Rechner ins Spiel, bzw. der dort laufende

RARP / BOOTP / DHCP Server. Dieser kennt die MAC Addy der Box und weiß welchen IP die bekommen soll.

Wohlgemerkt für dieses Stadium machen alle drei das gleiche, somit ist nur einer der drei von nöten. Viele Köche

verderben den Brei! Hab ich leidlich feststellen müssen.

Die Box sendet also ne Anfrage im RARP (Reverse Adress Resolution Protokoll) ins Netz.

Dort wartet der Server auf ne Anfrage und schaut in seiner Tabelle nach ob die MAC drinsteht,

wenn der dann ne IP zugeordnet ist, dann schickt der Rechner diese an die Box und

der erste Schritt ist getan, die Box kennt ihre IP.

 

 

2. Bootprogramm beim Server abfragen

--------------------------------------------------

 

Die Box kennt mit ihrem Bootloader ist im Endeffekt nix andres als ein Bios aufm Rechner.

Ohne Betriebssystem kann er so gut wie nix. Er kann aber den Bootvorgang einleiten.

Bezogen auf den Rechner kann man sich das so vorstellen, daß beim Booten erst mal nachgeschaut wird,

ob ne Diskette im Laufwerk steckt, wenn ja, dann wird von der gestartet, wenn nein,

dann wird von der Platte gebootet.

Bei der Box ist es so, daß sie zuerst mal ins Netz schaut ob sie da ein System zum Booten findet, wenn nein dann

wird vom Flash gebootet. Als erstes wird mal ne Art Mini-System geladen, das ppcboot oder u-boot.

Übers Netz geschieht das mittels auf dem Rechner laufenden TFTP (trivial FTP) Server. Das ist ne recht

einfache Art von FTP.

 

 

3. Bootprogramm holt Kernel vom Server.

----------------------------------------------------

 

PPCBOOT oder U-BOOT ermöglicht dann das Laden und Starten des eigentlichen Kernels. Auch dieser wird noch

mittels TFTP vom Rechner geladen und dann gestartet.

 

 

4. Kernel startet und holt restliche Daten vom Server.

-----------------------------------------------------------------

 

Ist der Kernel mal auf der Box und gestartet, wird ein NFS-Client auf der Box gestartet. Ab nun erfolgt

die Datenübertragung im NFS Format (Network File System). Im Endeffekt wird

auf dem Rechner ne NFS Freigabe durch nen NFS Server im Netz zur Verfügung gestellt (exportiert).

Die Freigabe beinhaltet das komplette Abbild eines Betriebssystems. Also

alles was man auf nem normalen Image im / (root) Verzeichnis auch hat. Dies wird vom Kernel

direkt an / (Verzeichnis-Wurzel) eingeblendet. Wenn man so will wird der Box ein Image im Flash

vorgegaukelt. Nur daß halt die Programme nicht im Flash liegen, sondern vom Server geladen werden.

 

 

 

 

Soviel zu den Grundlagen, nun ins eingemachte :lol:

Ich baue meine Anleitung auf Suse Linux 9.2 auf, was aber nicht abschrecken sollte,

da in der Hauptsache Server verwendet werden die bei den meisten Distries drin sein sollten.

 

Wir brauchen also

1. nen Server der die RARP Anfrage der Box beantwortet (der MAC-Addy ne IP zuordnen)

2. nen TFTP Server der das Minisystem (BOOTP oder U-BOOT) und den Kernel überträgt und

3. nen NFS Server der das ROOT Verzeichnis im Netz zur Verfügung stellt (exportiert)

 

Nun mal nicht gleich wild drauf los installieren, das geht (wie bei mir :rolleyes: ) wahrscheinlich in die Hose.

Man starte YAST als Benutzer root (geht eh net anders :D ) und suche in Software:

Software installieren oder löschen.

Für nicht SUSIANER, YAST ist die Systemverwaltung von Suse, wie das bei eurer Distribution aussieht

müsst ihr leider bei dem Herausgeber von ihr erfragen, denn ich weiß es nicht.

 

zu 1.

------

Bei mir hats als erstes mit dem bootpd (BOOTP-Dämon) geklappt, deswegen dieser.

Mit DHCP und rarpd bin ich nicht zurande gekommen.

 

zu 2.

------

in.tftpd (TFTP-Dämon)

 

zu 3.

------

nfs Server

 

 

Geht also bei Filter auf suche und gebt ein:

 

bootp

dort erscheint bei Suse z.B. der bootpd-DD2, den hakt Ihr an.

 

tftp

dort tftp anhaken (yast2-tftp-server ist nur ein graphisches Konfig Proggy, brauchen wir net, da wir über

die Config Files die Einträge machen, ist aber zur Veranschaulichung und zum

Neustart von in.tftpd dem Dämon net schlecht. Erreicht man später in YAST bei

Netzwerkdienste).

 

 

nfs

hier gibt´s 2 Möglichkeiten, den nfs-server, das ist ein Dämon der "standalone" läuft,

nfs-utils, das aktiviert den Kernel-internen nfs Dienst.

Ich hab mich mal für nfs-server entschieden. Was vorteilhafter ist, muss ich erst mal

selbst testen. Für yast2-nfs-server gilt auch, nicht nötig, aber hilfreich.

 

xinetd

das ist "Extendet Internet Dämon (ehemals inetd)" auch Superserver :P genannt.

Der sollte ansich schon installiert sein, wenn nicht, anhaken.

 

Dann die Abhängigkeiten prüfen (unten) und übernehmen. Jetzt sollte installiert werden.

 

 

Die Einstellungen:

---------------------

 

Vorab die Konfiguration die ich meiner Box:

HOSTNAME=dbox

IP-ADDY=192.168.1.100

MAC-ADDY=00:50:9c:11:22:33

RECHNER-IP=192.168.1.5

 

Desweiteren liegen die beiden Verzeichnisse

/tftpboot

/yaddroot

direkt im root Verzeichnis ( / )

Im Verzeichnis /yaddroot sind die Dateien

logol-lcd

logo-fb

eingebaut und sie Ucodes sowie die zapit dateien wurden an etsprechender

Stelle im yaddroot Verzeichnis abgelegt.

 

Zuerst muss man wissen, daß Linux in den Einstellungen nicht mit IP Adressen, sondern mit Host-Namen

arbeitet. Das ist ähnlich wie im Internet, www.google.de ist auch nur ein Alias Name für ne IP-Adresse (216.239.39.104).

Im Netz übernimmt die Namensauflösung (Name - IP zuordnung) der Namesserver.

Da im Homenetz ein solcher Server fehlt muß diese Zuordnung in ner Config Datei gemacht werden:

 

/etc/hosts

 

Das sieht dann so aus:

192.168.1.100 dbox

Das hängt Ihr einfach unten an die Datei an.

 

 

Nun der bootpd. Der greift auf ne Config-Datei Namens

/etc/bootptab

zu, welche bei mir aber noch nicht existiert hat. Somit eine Datei dieses Namens erzeugen und da reinschreiben:

 

dbox:hd=/:bf=u-boot:ha="00:50:9c:11:22:33":ip=192.168.1.100:sa=192.168.1.5:sm=255.255.255.0

 

hd: Directory des Bootfiles, das ist auch abhängig von den Einstellungen des tftp Servers, erklär ich noch!

bf: Das Bootfile, ppcboot oder u-boot

ha: MAC-Adresse der Dbox

ip: Die gewünschte IP-Adresse für die Box

sa: Server-Adresse (Rechner IP)

sm: Subnet-Maske

 

 

Nun der TFTP Server:

 

/etc/xinetd.d/tftp

Da kommt rein:

 

service tftp

{

              disable = no

              socket_type = dgram

              wait = yes

              user = root

              server = /usr/sbin/in.tftpd

              server_args =-c -s /tftpboot/

}

 

bisl erklärung:

server_args =-c -s /tftpboot/

 

das -c erlaubt das Erstellen von Dateien

 

das -s /tftpboot/ setzt das root-Verzeichnis von / nach /tftpboot/

Das war es was ich meinte bei der Datei /etc/bootptab mit erklär ich noch.

würde das hier nicht stehen, so würde die Einstellung hd=/ in der bootptab nicht in

/tftpboot/ nach u-boot suchen sondern in /

 

 

Nun fehlt nur noch der NFS Server.

 

Wie schon mal beschrieben, werden Verzeichnisse durcch den Server ins Netz exportiert.

Die Config Datei für den NFS Server ist die

/etc/exports

 

Da wir das Verzeichnis /yaddroot exportieren wollen lauttet die Zeile darin so:

/yaddroot        192.168.1.100 (rw,no_root_squash,async)

 

 

rw = read/write

no_root_squash = (hab ich noch net wirklich kapiert, aber hat was mit den Zugriffsrechten zu tun)

async weil´s schneller ist als sync und Suse (warum auch immer) sync als default hat.

 

Zum übernehmen der Datei in der Konsole eingeben:

exportfs -a

 

das sollte es gewesen sein. :P

 

 

 

Als nächstes hab ich nun noch das Problem, daß mein Netzwerk auf 100MBit läuft.

Und beim normalen starten (wie sollte es auch anders sein) kommen die Daten nicht

rechtzeitig bei der Box an.

Somit startet sie aus dem Flash. Ja, da war doch was mit Pfeil nach oben gedrückt

halten bei Start und dann im Bootmanager "boot net".....

Mist, welcher Bootmanager :lol:

Im Moment mach ichs also von nem anderen Windows Rechner und dem Bootmanager, solange ich noch kein gescheites Terminal für

Serielle Schnittstelle gefunden hab.

Aber da gibts bestimmt auch noch was. :D

 

 

 

So, nun Happy Testing :lol:

 

 

Gruß!

 

 

Am Schluss noch, da das hier ein FAQ Bereich sein sollte mach ich hier mal zu.

Fragen oder Anregungen könnt Ihr ja zum Beispiel hier:

http://www.keywelt-board.com/index.php?showtopic=48978

oder auch sonst im Board stellen.

Grund: eigentlich will ich das hier noch bisl erweitern :P

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 months later...

So, nun bin ich dank rübe einen Schritt weiter :ph34r:

 

um das COM-Terminal unter Linux zu nutzen, kann man Kermit nutzen.

Unter Suse war das nicht von vornherein installiert. Somit unter Yast -> Software installieren -> suchen

nach kermit suchen lassen und dann z.B.ckermit installieren.

 

nun die Anleitung von rübe

 

Hm, hat mir keine Ruhe gelassen, musste es gleich probieren...

 

Ergebnis: funktioniert einwandfrei!

 

und zwar so: ich hab mir ein Script erstellt, das heisst dbox2.tty (keine Phantasie mehr um diese Uhrzeit, sorry...):

#!/usr/bin/kermit
set modem type none
set carrier-watch off
set line /dev/ttyS0
set speed 9600
set line /dev/ttyS0
set speed 9600
set terminal bytesize 8
set parity none
set stop-bits 1
set flow none
connect
quit

 

diese script ausfuehrbar machen:

chmod +x dbox2.tty

 

und als root ausfuehren:

./dbox2.tty

 

nochmal ENTER gedrueckt, und schon sieht man den prompt der guten alten dbox2  :D

 

So weit so gut, aber wie kommt man da wieder RAUS???

 

1.) Druecke GLEICHZEITIG: Strg und AltGr und \

2.) Tasten wieder loslassen

3.) Druecke c (klein Caesar)

 

 

und schon ist man wieder zurueck auf der commandline...

 

Tip am Rande:

will man den bootlog mitlesen, evtl. am dbox-rompt etwas eingeben und das alles GLEICHZEITIG noch in eine Datei am PC mitloggen, dann geht das einfach und komfortabel so:

./dbox2.tty | tee boot.log

 

schoenen Abend noch,

 

rübe  :)

 

klappt eindandfrei :D. Wernn man nicht als root angemeldet ist, dann muss man

sich mittels SU als SuperUser anmelden mit dem root Passwort.

Geht aber auch automatisiert beschreibung in diesem Thread:

http://www.keywelt-board.com/index.php?sho...=0entry396390

 

danke nochmals an rübe :wub:

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Wer ist Online   0 Benutzer

    • Keine registrierten Benutzer online.
×
×
  • Neu erstellen...