Yadd mit NFS v3 booten

Diskussionen um Bootloader, Kernel, Busybox
fran
Interessierter
Interessierter
Beiträge: 64
Registriert: Mittwoch 26. April 2006, 08:44

Yadd mit NFS v3 booten

Beitrag von fran »

Gibt's ne Möglichkeit beim Booten über Yadd das Root-Verzeichnis via NFS v3 zu booten (wegen rsize, wsiz-Erhöhung)? Derzeit liefert mir der Mount nur v2. In welcher Datei müßte ich vor dem Kompilieren was abändern (ich mach das über newmake)? Hab schon in uboot-config/dbox2-yadd.conf (oder so ähnlich) reingeschaut, aber da nichts gefunden?

Sorry, wenn ich beim Suchen einen passenden, alten Thread übersehen habe.

franz
fran
Interessierter
Interessierter
Beiträge: 64
Registriert: Mittwoch 26. April 2006, 08:44

Beitrag von fran »

um genau zu sein: ich hatte in boot/u-boot-config/u-boot.cdk.dbox2.h geschaut.
racker
Einsteiger
Einsteiger
Beiträge: 369
Registriert: Samstag 29. Mai 2004, 00:50

Beitrag von racker »

fran hat geschrieben:um genau zu sein: ich hatte in boot/u-boot-config/u-boot.cdk.dbox2.h geschaut.
In dieser Datei gibst du die Parameter für "nfsroot" an.
Die Syntax und Parameter findest du in linux/Documentation/nfsroot.txt
fran
Interessierter
Interessierter
Beiträge: 64
Registriert: Mittwoch 26. April 2006, 08:44

Beitrag von fran »

Doch so einfach, müßte also über eine Erweiterung der root-path option im DHCP getan sein.

DANKE
sagemol
Einsteiger
Einsteiger
Beiträge: 193
Registriert: Donnerstag 11. Mai 2006, 08:26

Beitrag von sagemol »

Muss mal den Thread hier hochholen, ich krieg das nicht gebacken.
Irgendwas stimmt da nicht mit der u-boot.
Ich hab mir ne frische Yadd geholt mit der u-boot 1.20.
Aber egal was ich am dhcp-Server als rootpath einstelle,
die u-boot liefert beim printenv IMMER

Code: Alles auswählen

rootpath=u-boot
Ausser ich benenne die u-boot um nach z.B. u-boot-yadd,
sage dem dhcp-Server, dass das tftp-bootfile jetzt u-boot-yadd heisst,
und siehe da, der printenv liefert:

Code: Alles auswählen

rootpath=u-boot-yadd
Anscheinend wird die $rootpath irgendwie mit der falschen dhcp-option befüllt ???

Greez !
new.life
Erleuchteter
Erleuchteter
Beiträge: 797
Registriert: Sonntag 19. Februar 2006, 01:17

Re: Yadd mit NFS v3 booten

Beitrag von new.life »

fran hat geschrieben:Gibt's ne Möglichkeit beim Booten über Yadd das Root-Verzeichnis via NFS v3 zu booten..
mit SUF geht es http://forum.tuxbox-cvs.sourceforge.net ... hp?t=40708
sagemol
Einsteiger
Einsteiger
Beiträge: 193
Registriert: Donnerstag 11. Mai 2006, 08:26

Beitrag von sagemol »

Klar, das hatte ich längst gelesen... :D
Aber das ist nicht wirklich mein Problem ...
Ich hab hier keinen Bootmanager und ich kann natürlich,
wenn ich meine Verzeichnisstrukturen umbenenne und die
NFS-Freigaben entsprechend anpasse, eine Yadd booten.
Das ändert aber nix an der Sache, dass es hier eindeutig nen Bug in der u-boot gibt,
weil die Variable $rootpath mit dem falschen Wert befüllt wird.

Greez !
new.life
Erleuchteter
Erleuchteter
Beiträge: 797
Registriert: Sonntag 19. Februar 2006, 01:17

Beitrag von new.life »

sagemol hat geschrieben:Klar, das hatte ich längst gelesen... :D
Aber das ist nicht wirklich mein Problem ...
ok, sorry falsch verstanden.
sagemol
Einsteiger
Einsteiger
Beiträge: 193
Registriert: Donnerstag 11. Mai 2006, 08:26

Beitrag von sagemol »

Null Problemo :D

Aber kann das von mir geschriebene jemand bestätigen ?

Greez !
sagemol
Einsteiger
Einsteiger
Beiträge: 193
Registriert: Donnerstag 11. Mai 2006, 08:26

Beitrag von sagemol »

... oder auch widerlegen ???

Greez !
sagemol
Einsteiger
Einsteiger
Beiträge: 193
Registriert: Donnerstag 11. Mai 2006, 08:26

Beitrag von sagemol »

Scheint so ähnlich wie das hier zu sein:

http://forum.tuxbox-cvs.sourceforge.net ... hp?t=24939

Greez !
bellum
bbs-Maintainer
Beiträge: 282
Registriert: Montag 23. Oktober 2006, 21:13

Beitrag von bellum »

sagemol hat geschrieben:... oder auch widerlegen ???

Greez !
Hallo sagemol,
ja ich kann das widerlegen. Ich habe mir vor kurzem ein newmake YADD System konfiguriert, in dem der u-boot 1.2.0 drin ist und ich kann erfolgreich übers Netz booten.

Ich vermute stark, dass Dein DHCP-Server das Problem ist. Ich hatte auch große Probleme bis ich den "richtigen" verwendet habe.
Ich gehe jetzt einfach mal davon aus, dass Du Linux verwendest. Dort habe ich mit dem dhcp3 gut Erfahrungen gemacht (mit der Version 2.x des DHCP-Servers ging es auch nicht).
Anbei mal meine dhcp3.conf.

Code: Alles auswählen

option domain-name "mynet.net";
option domain-name-servers 192.168.0.1;
option subnet-mask 255.255.255.0;

ddns-updates off;
ddns-update-style none;

subnet 192.168.0.0 netmask 255.255.255.0 {
	range 192.168.0.21 192.168.0.30;
	option routers 192.168.0.1;
	deny unknown-clients;
}


host dbox_env {
	hardware ethernet 00:50:9C:1C:5D:B3;
	fixed-address 192.168.0.22;
	allow bootp;
	server-name "192.168.0.3";
	next-server 192.168.0.3;
	if exists vendor-class-identifier {
		filename "/kernel-cdk";
		option root-path "/home/bellum/tuxbox/dbox2/cdkroot";
	} else {
		filename "/u-boot";
	}
}
Ich hoffe das hilft Dir schon mal weiter, ansonsten melde Dich nochmal und berichte noch etwas über Deine Umgebung.

Gruß bellum
sagemol
Einsteiger
Einsteiger
Beiträge: 193
Registriert: Donnerstag 11. Mai 2006, 08:26

Beitrag von sagemol »

Ok, ja das hat ein wenig weiter geholfen, danke !

Nach nächtelangen Traces weiss ich nun, warum das bei mir nicht funktioniert.

Mein DHCP-Server ist ein W2K3 Server und antwortet RFC-konform auf Vendor Klassen nur dann,
wenn das Bootp/DHCP Option Feld 60 (0x3c) mit irgendwas befüllt ist.

Dies ist bei der u-boot 1.20 aus der atuellen Yadd NICHT der Fall.

Houdini hat hier mal eine 1.1.4 u-boot bereitgestellt, die diese Option 60 mit "0C 44 42 4F 58 32 2C 20 45 4D 50 54 59" befüllt,
nur leider fragt diese u-boot beim DHCPDISCOVER in den Options überhaupt nicht nach dem rootpath (Option 17),
so dass der Server die Option auch nicht liefert.

Könnte mal jemand ne aktuelle u-boot bauen, die zusätzlich zu dem was jetzt drin ist, auch die Option 60 mitliefert ?

Und dann noch so freundlich sein und sagen, was als Vendor Class eingetragen ist, damit ich nicht wieder tracen muss ... :D :D

Edit:
Achja, und warum mounted die Yadd das nfsroot nur mit rsize/wsize 4096 ?
Wenigstens 8192 sollte doch mit jedem NFS-Server gehen.

Edit 2: Damit's ein wenig einfacher wird aus RFC 1533:

Code: Alles auswählen

9.11. Class-identifier

   This option is used by DHCP clients to optionally identify the type
   and configuration of a DHCP client.  The information is a string of n
   octets, interpreted by servers.  Vendors and sites may choose to
   define specific class identifiers to convey particular configuration
   or other identification information about a client.  For example, the
   identifier may encode the client's hardware configuration.  Servers
   not equipped to interpret the class-specific information sent by a
   client MUST ignore it (although it may be reported).

   The code for this option is 60, and its minimum length is 1.

   Code   Len   Class-Identifier
   +-----+-----+-----+-----+---
   |  60 |  n  |  i1 |  i2 | ...
   +-----+-----+-----+-----+---


Greez !
sagemol
Einsteiger
Einsteiger
Beiträge: 193
Registriert: Donnerstag 11. Mai 2006, 08:26

Beitrag von sagemol »

Auch hochschieb....

Greez !
sagemol
Einsteiger
Einsteiger
Beiträge: 193
Registriert: Donnerstag 11. Mai 2006, 08:26

Beitrag von sagemol »

Hmmm, nochmal hochschieben, oder soll ich das als Featurerequest posten ? :D

Greez !
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

hmm, uboot sendet nix anderes mehr wenn vendorex an ist,
ist zwar nicht sauber mach mal so (dbox2.c):

Code: Alles auswählen

u8 *dhcp_vendorex_prep (u8 *e)
{
	const char *part1 = "DBOX2, ";
	const char *part2 = id2name[mid];

	*e++ = 17;		/* Boot path */
	*e++ = 1;
	*e++ = 0;
	/* DHCP vendor-class-identifier = 60 */
	*e++ = 60;
	*e++ = strlen (part1) + strlen (part2);
	while (*part1)
		*e++ = *part1++;
	while (*part2)
		*e++ = *part2++;

	return e;
}
sagemol
Einsteiger
Einsteiger
Beiträge: 193
Registriert: Donnerstag 11. Mai 2006, 08:26

Beitrag von sagemol »

Danke !

Ich werd mal jemand suchen, der das eben einbauen kann.
Mein CDK ist irgendwie grade nicht verfügbar.... :-?

Greez !