Sie sind nicht angemeldet.

Anzeigen

**Wir werden in den kommenden Tagen einen Umzug auf einen neuen Server durchführen. Im Rahmen dieser Maßnahme wird das Forum ca. 1 Stunde nicht erreichbar sein.** nslu2-info.de ist ein privates Projekt von mir, welches jeden Monat aus eigener Tasche finanziert wird. Mit einer freiwilligen Spende wird der Erhalt und der weitere Ausbau dieses Forums unterstützt. Um mich beim Erhalt des Forums zu unterstützen, kannst Du entweder via Flattr oder Paypal spenden. Ich bedanke mich schon jetzt bei allen Unterstützern.

Lieber Besucher, herzlich willkommen bei: Die NSLU2 Community****wenns ums speichern und streamen geht****. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

oldghost

Anfänger

  • »oldghost« ist der Autor dieses Themas

Beiträge: 10

Firmwareversion / your current Firmware: originale Firmware 2.3r24

  • Nachricht senden

1

Mittwoch, 25. Januar 2006, 13:31

DBOX2 von NSLU2 booten

Hallo Leuz,

ist es möglch die NSLU2 so zu konfigurieren das eine DBOX2 Linux davon booten kann?

Danke schonmal.

Anzeigen

caplink811

Forensupporter

Beiträge: 2 200

Verwendetes NAS-Device: 64X2/8GB/Ubuntu10.04LTS

Firmwareversion / your current Firmware: anderes

Wohnort: Berlin

Beruf: TK/IT Consulting and Engineering

  • Nachricht senden

2

Mittwoch, 25. Januar 2006, 14:52

Tach,

Gegenfrage, wie kann denn eine DBox Ihr OS ziehen, Bootp, Tftp ?

bye
JrB
"Supporting joe users worldwide" <- that's our motto


Anzeigen

oldghost

Anfänger

  • »oldghost« ist der Autor dieses Themas

Beiträge: 10

Firmwareversion / your current Firmware: originale Firmware 2.3r24

  • Nachricht senden

3

Mittwoch, 25. Januar 2006, 15:17

So funktioniert es

Zunächst läuft der Bmon los, initialisiert die nötige Hardware (CPU, LCD etc.). Danach folgt die Kommunikation, hier der Übersicht halber mit Angabe der Richtung wie folgt.


Bmon

Bmon: gesamtes Netzwerk<-DBox2

Der Bmon sendet einen BOOTP-Request ins Netz


Bmon: DHCP->DBox2

Der DHCP-Server anwortet mit der IP-Adresse der DBox2, der IP-Adresse des Servers und dem Namen der Bootdatei (z.Bsp: "dbox2/tftpboot/u-boot"). Die Bootdatei ist der 2.Phase-Bootloader (der Bmon ist der erste, genaueres hier). Damit weiß der Bmon nun alle nötigen Daten.


Bmon: TFTP<-DBox2

Der Bmon erfragt per ARP die zur TFTP-Server-IP zugehörige MAC (Standardvorgang, Ethernet-Pakete werden an eine MAC-Adresse adressiert, nicht an eine IP). Anschließend fordert er mit einem TFTP-Read Request die Bootdatei an.


Bmon: TFTP->DBox2

Die Bootdatei wird nun an die DBox2 übertragen. Der Bmon legt diese Datei im Speicher ab. Ist die Bootdatei komplett übertragen berechnet er die Signatur. Wenn der Bmon nun nicht im Debug-Mode ist, dann verweigert er an dieser Stelle die weitere Zusammenarbeit falls die Signatur nicht gültig ist und bootet neu. Mit aktiviertem Debug-Mode gibt er zwar eine Fehlermeldung aus, startet aber anschließend die Bootdatei, in unserem Fall also den u-boot.

Der U-boot ist wesentlich intelligenter als der Bmon, er weiß aber nichts von den Dingen, die bis zu diesem Punkt passiert sind. Für ihn hat die DBox2 zunächst wieder keine IP.

Eine Sache ist noch wichtig zu wissen. Der U-boot führt nacheinander die Kommandos aus, die man ihm beim Kompilieren eingebaut hat. Daher ist die nachfolgende Beschreibung nur für die CDK-Konfiguration gültig.

Theoretisch kann man den Autostart des U-boots auch abbrechen und alle Befehle von Hand eingeben. Wer es individuell haben möchte, sollte sich das Verzeichnis u-boot-config im CDK ansehen. Dort sind die einzelnen Konfigurationen abgelegt.

Welche dieser Konfigurationen beim Kompilieren verwendet wird legt der Symlink u-boot.config in diesem Verzeichnis fest, welcher nur bei Nicht-Existenz automatisch auf die CDK-Config angelegt wird. Dadurch kann jeder ohne großen Aufwand seine persönliche Konfiguration erstellen.


U-Boot

U-boot: DHCP<-DBox2:

Der U-boot kennt zwar auch das Bootp-Protokoll, das DHCP-Protokoll erlaubt aber noch einige Dinge mehr, so dass dieses verwendet wird. Zunächst fragt der U-boot per DHCP Discover nach seiner IP.


U-boot: DHCP->DBox2:

Der DHCP bietet dem U-boot eine IP an und weil der U-boot nicht wählerisch ist, akzeptiert er diese.

Da wir einen Bootstrap machen sagt der DHCP dem U-boot auch noch seine Bootdatei. Also genauso wie bei der IP-Vergabe für den Bmon. Das Problem ist natürlich, dass wir nicht nochmal den U-boot laden wollen. Damit der DHCP-Server nun weiß, welche Bootdatei wir möchten, sendet der U-boot ein optionales Feld mit, den sogenannten "Vendor Class Identifier".

Dieser Identifier wird beim DHCP-Server in die DHCP-Konfiguration eingetragen und somit ist es möglich, den Bmon vom U-boot zu unterscheiden.

Der Windows-Bootmanager kennt diese Option nicht, daher wird er immer wieder den U-boot senden. Deswegen braucht man für den Bootmanager auch einen speziell angepassten U-boot.

Als nächstes versucht der U-boot nun die Datei "logo-lcd" und "logo-fb" über das TFTP-Protokoll zu laden. Dies hat keine Bewandnis für den eigentlichen Bootvorgang, sondern dient nur der Bootlogo-Anzeige.


U-boot: TFTP<-DBox2:

Als vorletzter Schritt wird nun die Bootdatei angefordert, es handelt sich um den Linux-Kernel.


U-boot: TFTP->DBox2:

Der Linux-Kernel wird in den Hauptspeicher der DBox2 geladen. Da der Kernel im Prinzip wie ein ausführbares Programm ist kann man ihm auch Parameter übergeben. In der U-boot-Konfiguration werden diese in der Umgebungsvariable "bootargs" gespeichert.

Die CDK-Bootargumente sehen so aus:
root=/dev/nfs rw nfsroot=$(serverip):$(rootpath) ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off console=$(console);
Über diese Parameter erfährt der Kernel auch alle für ihn wichtigen Dinge.
Die Variablen serverip,rootpath,ipaddr,gatewayip,netmask und hostname werden per DHCP erfragt.

Als letztes führt der U-boot das Kommando "bootm" aus. Dieses startet den Linux-Kernel und übergibt ihm die in bootargs gespeicherten Optionen.

Der Linux-Kernel weiß durch den Parameter "root", dass er über NFS booten soll. Den genauen Pfad entnimmt er dem nfsroot und dieser Pfad wird dann noch während des Bootvorgangs als root-Verzeichnis ("/") gemountet. Anschließend wird das Programm "init" gestartet womit der eigentliche Kernel-Boot abgeschlossen ist. Danach folgt der normale Startvorgang für die Anwendungsumgebung.

Das Booten aus dem Flash funktioniert ähnlich, natürlich wird hier der Root nicht als NFS sondern als das entsprechende MTD-Device angegeben.

caplink811

Forensupporter

Beiträge: 2 200

Verwendetes NAS-Device: 64X2/8GB/Ubuntu10.04LTS

Firmwareversion / your current Firmware: anderes

Wohnort: Berlin

Beruf: TK/IT Consulting and Engineering

  • Nachricht senden

4

Mittwoch, 25. Januar 2006, 21:05

N'Abend,

hübsche Erklärung... Also brauchst Du eine TFtp Server, und einen Dhcp-Server, ipkg list|grep dhcp und ipkg list|grep tftp sollten ein Auswahl an verfügbaren Paketen präsentieren.

Viel Spaß beim basteln,

bye
JrB
"Supporting joe users worldwide" <- that's our motto


oldghost

Anfänger

  • »oldghost« ist der Autor dieses Themas

Beiträge: 10

Firmwareversion / your current Firmware: originale Firmware 2.3r24

  • Nachricht senden

5

Donnerstag, 26. Januar 2006, 10:19

Prima, dann mach ich mich mal ´dran.
Vielen Dank!

Gruss
Thomas

6

Mittwoch, 19. April 2006, 08:23

Ist was daraus geworden?

7

Dienstag, 20. Juni 2006, 11:06

Hi,
bin gerade über etwas gestolpert, vielleicht hilft das ja weiter(Dbox CVS README.u-boot-via-net)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
A small example dhcpd.conf for using u-boot to boot via network:
The data used:
dbox is in net 192.168.0.0
dbox has ip 192.168.0.2
dbox-mac is xx:xx:xx:xx:xx:xx
server has ip 192.168.0.1
Hostpath for the cdkroot is /dbox2/cdkroot, which is exported via nfs
(/etc/exports).
Tftprootpath is exported via tftp (/etc/inetd.conf).

In debian, you need the "dhcp3-server" package.

---------- dhcpd.conf --------------
subnet 192.168.0.0 netmask 255.255.255.0
{
}

host dbox {
        fixed-address 192.168.0.2;
        hardware ethernet xx:xx:xx:xx:xx:xx;
        allow bootp;
        server-name "192.168.0.1";
        option root-path "/dbox2/cdkroot";
        if exists vendor-class-identifier {
                filename "kernel-cdk";
        } else {
                filename "u-boot";
        }
}
------------------------


Gruss,
EvilDevil

8

Dienstag, 20. Juni 2006, 23:00

und die u-boot.nfs kannst du von mir haben wenn du sie noch benötigst ;)

lg tpol

9

Freitag, 14. Juli 2006, 12:27

Bald ist die Linkliste voll. Fehlt dann nur noch jemand, der ein NSLU2 HowTo schreibt ;) http://www.dietmar-h.net/linux.html Gruss, EvilDevil

oldghost

Anfänger

  • »oldghost« ist der Autor dieses Themas

Beiträge: 10

Firmwareversion / your current Firmware: originale Firmware 2.3r24

  • Nachricht senden

10

Sonntag, 29. April 2007, 20:54

Hallo Leute,
hatte die letzten Monate keine Zeit (Umzug ins Ausland, neue Sprache usw.).
Hat eigentlich prima geklapt, nur hab ich mitlerweile keine DBox mehr.
Hab aber noch was interessantes gefunden:
http://www.lug-kr.de/wiki/DBoxLinux

Viele Grüße
Thomas

Social Bookmarks