Hi,
der br-bootloader sendet ja ein 'bootp'-Request, den man ja bekanntermaßen dazu benutzen kann, ein u-boot von einem Server zu laden.
Nun tritt bei mir verstärkt das Problem auf, daß der br-bootlader nicht lange auf eine Antwort zum bootp-Request wartet und dann meist vom Flash bootet anstelle vom Netzwerk.
(Als ich noch ein kleines Netzwerk hatte ging's besser).
Ich möchte aber gerne eine verläßliches remote-Boot haben und deshalb habe ich daran gedacht, ein entsprechend angepasstes u-boot zu flashen, welches den Kernel nicht aus dem Flash lädt, sondern ihn via bootp od. dhcp-Request vom Server nimmt (aber mit vernünftigem request timeout).
Evtl. kann man das u-boot so universell gestalten, daß es nach einem längeren request-timeout dann doch den Flash-Kernel nimmt.
Hat jemand in diese Richtung schonmal was probiert oder Ahnung mit welchen Problemen man bei diesem Vorhaben konfrontiert werden könnte ?
- GMo -
u-boot im flash mit remote funktion ?
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
Uboot könnte zum Beispiel die uboot.conf o.ä. aus der var partition auslesen und so entscheiden, ob aus dem Flash oder von Tftp gestartet werden soll.
Dann könnte man einen Flashkernel machen der nfs root support hat und uboot übergibt dann den entsprechenden root= string für Flash oder NFS Boot
Houdini
Dann könnte man einen Flashkernel machen der nfs root support hat und uboot übergibt dann den entsprechenden root= string für Flash oder NFS Boot
Houdini
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
... hab jetzt mal in die Sourcen geschaut: da wird ja bereits das file
'/var/tuxbox/boot/boot.conf' ausgewertet
und man darf darin auch die Option 'bootcmd' verwenden.
Geht das also schon "out of the box" mit dem normalen flash u-boot oder ist das irgendwo nicht zu Ende geführt...
Hat damit jemand schonmal experimentiert ?
- GMo -
'/var/tuxbox/boot/boot.conf' ausgewertet
Code: Alles auswählen
#ifdef CONFIG_DBOX2_ENV_READ_FS
void load_env_fs (void)
{
int size, i = 0;
char *s = (char *) CFG_LOAD_ADDR;
char *c = s;
int namestart, nameend, valuestart, valueend;
size = fs_fsload ((unsigned long) s, CONFIG_DBOX2_ENV_READ_FS);
while (1)
{
if (i >= size)
break;
namestart = i;
while (i < size && *c != '\n' && *c != '=') { i++; c++; }
nameend = i;
if (i >= size)
break;
i++; c++;
valuestart = i;
while (i < size && *c != '\n') { i++; c++; };
valueend = i;
i++; c++;
s[nameend] = '\0';
s[valueend] = '\0';
if (!strcmp (&s[namestart], "bootcmd"))
setenv ("bootcmd", &s[valuestart]);
else if (!strcmp (&s[namestart], "console"))
setenv ("console", &s[valuestart]);
else if (!strcmp (&s[namestart], "lcd_contrast"))
setenv ("lcd_contrast", &s[valuestart]);
else if (!strcmp (&s[namestart], "lcd_inverse"))
setenv ("lcd_inverse", &s[valuestart]);
else
printf ("env: can't set \"%s\"\n", &s[namestart]);
}
}
#endif /* CONFIG_DBOX2_ENV_READ_FS */
Geht das also schon "out of the box" mit dem normalen flash u-boot oder ist das irgendwo nicht zu Ende geführt...
Hat damit jemand schonmal experimentiert ?
- GMo -
Zuletzt geändert von gmo18t am Freitag 17. Februar 2006, 14:48, insgesamt 1-mal geändert.
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
bootcmd sollte gehen. Das haben wir beim ersten IDE-Projekt auch benutzt, um wahlweise vom Flash oder von der Platte zu booten.
Wichtig ist "setenv bootcmd", damit die Defaults gelöscht werden.
Code: Alles auswählen
bootcmd=setenv bootcmd ; protect off 10020000 107fffff; setenv autostart yes; setenv bootargs root=/dev/hda2 ro rootfstype=ext3 console=$(console) idebus=66; diskboot 1000000 0:1
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
... Danke ! geht prima mit:
- GMo -
Code: Alles auswählen
bootcmd=setenv bootcmd; dhcp; tftp $(bootfile); protect off 10020000 107fffff; setenv bootargs root=/dev/nfs rw nfsroot=$(rootpath) ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off console=$(console); bootm
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections