Forum: Mikrocontroller und Digitale Elektronik ICnova OEMPlus NFS booten


von Willi A. (Gast)


Lesenswert?

Hi Linuxianer,

ich bin Neuling in der Linux/AVR32 Welt und habe zu Weihnachten eine 
ICnova OEM+ mit ADB1000 bekommen und versuche seitdem diese per NFS zu 
booten.

Mein Board ist über einen Router (ohne DHCP) mit dem PC verbunden auf 
dem Ubunut 8.04 läuft.
Ich habe uf meinem PC Buildroot durchlaufen lassen.
In /etc/network/interfaces habe ich "auto eth0" auskommentiert.
Danach habe ich den nfs-kernel-server mit den Daten aus dem HOW-TO PDF 
gefüttert, uImage und ext2 aus dem Ordner ICnova/binaries/oemplus 
gemountet.


Danach habe ich alle Parameter wie im HOW-TO beschreiben eingestellt.
Also:
setenv ipaddr 192.168.2.10

setenv serverip 192.168.2.4

setenv bootcmd nfs 10400000 
$(serverip):/home/marskopf/ICnova/binaries/oemplus/uImage;bootm

setenv bootargs 
nfsroot=$(serverip):/home/marskopf/ICnova/binaries/oemplus

setenv bootargs $(bootargs) 
ip=$(ipaddr):$(serverip)::255.255.255.0::eth0:none

Anschliessend habe ich alles gesichert mit saveenv und per boot 
gebootet.

Allerdings bekomme ich jetzt folgende Fehlermeldung beim booten hier der 
Ausschnitt:

IP-Config: Complete:
     device=eth0, addr=192.168.2.10, mask=255.255.255.0, 
gw=255.255.255.255,
     host=192.168.2.10, domain=, nis-domain=(none),
     bootserver=192.168.2.4, rootserver=192.168.2.4, rootpath=
Looking up port of RPC 100003/2 on 192.168.2.4
eth0: link up (100/Full)
Looking up port of RPC 100005/1 on 192.168.2.4
VFS: Mounted root (nfs filesystem) on device 0:12.
Freeing init memory: 80K (90000000 - 90014000)
Warning: unable to open an initial console.
Kernel panic - not syncing: No init found.  Try passing init= option to 
kernel.

mfg

Willi

von ... (Gast)


Lesenswert?

Willi A. schrieb:
> setenv

Längere Einträge solltest du mit askenv eintragen, da u-boot mit setenv 
bei längeren Einträgen Probleme hat.

> $(serverip)

Ich bin mir nicht sicher, ob $(argument) von u-boot unterstützt wird.
Wenn du mit festen IP-Adressen arbeitest, trag die doch ein.

> Damit beim Booten über NFS die Einstellungen des Bootloaders nicht
> überschrieben werden, sollte vor dem Kompilieren auf dem PC in der Datei
> ICnova/project_build_avr32/oem/root/etc/network/interfaces die Zeile
> "auto eth0" auskommentiert werden.

Hast du das gemacht?

von ... (Gast)


Lesenswert?

Lies dir auch noch mal diesen Thread durch:
Beitrag "AP7000 und ICnova ADB1000: Bisschen wenig?"

von Willi A. (Gast)


Lesenswert?

@...:
> Damit beim Booten über NFS die Einstellungen des Bootloaders nicht
> überschrieben werden, sollte vor dem Kompilieren auf dem PC in der Datei
> ICnova/project_build_avr32/oem/root/etc/network/interfaces die Zeile
> "auto eth0" auskommentiert werden.

Ja, "auto eth0" habe ich auskommentiert und buildroot durchlaufen 
lassen.


> $(serverip)

So steht es hier:
http://www.ic-board.de/data/manual/301000002E_HowTo_ICnova_ADB1000.pdf
Und dann wird das stimmten denke ich. Ich habe alles so gemacht wie in 
dieser Anleitung beschrieben.
Und eigentlich funktioniert es ja auch er findet schienbar das Image nur 
irgend was mit init nicht.
Liege ich da richtig?
Deshalb wird setenv auch funktioniert haben.

> setenv

Wie würde der Syntax aussehen wenn ich statt setenv mit askenv arbeite.

mfg

von ... (Gast)


Lesenswert?

> Wie würde der Syntax aussehen wenn ich statt setenv mit askenv arbeite.
z.B:
U-Boot> askenv bootcmd
Please enter 'bootcmd': nfs 10400000 
$(serverip):/home/marskopf/ICnova/binaries/oemplus/uImage;bootm

dito mit bootargs.

> Ja, "auto eth0" habe ich auskommentiert und buildroot durchlaufen
> lassen.
Dann wird buildroot es evtl. wieder geändert haben. Du musst das, 
nachdem du buildroot hast durchlaufen lassen, ändern.

> Ich bin mir nicht sicher, ob $(argument) von u-boot unterstützt wird.
sorry, da habe ich mich vertan, u-boot kann das schon, aber der Kernel 
nicht.
Ich zitiere mal aus dem anderen Thread:

"Natürlich kann man bootargs nicht aus Platzhaltern zusammen setzen:
root=nfs nfsroot=$(serverip):$(prjpath)/rootfs 
ip=$(ipaddr):$(serverip)::$(netmask)::eth0:off
denn die kann nur das UBoot auseinandernehmen. Dem Kernel stehen die
nicht zur Verfügung!"

von Willi A. (Gast)


Lesenswert?

Erstmal danke für den Syntax werde mich gleich daran setzen.

>Dann wird buildroot es evtl. wieder geändert haben. Du musst das,
>nachdem du buildroot hast durchlaufen lassen, ändern.

Nein habe extra nachgesehen ist auskommentiert.

Ich werde mein erfolg/miserfolg damit dann gleich morgen posten. Danke.

PS:
Jetzt hätte ich noh zwei grundlegende Fragen zum einen was ist die Datei 
uImage was befindet sich in ihr - das Kernel oder was.
Und zum anderen die Datei ....ext2 ist ein Image der kompletten 
Dateisrtuktur spirich das Linuxsystem oder wie.

mfg

von Willi A. (Gast)


Lesenswert?

Ich bin verwirrt:

Also das bootcmd habe ich nun so eingegeben wie du es beschrieben hast 
aber bei denn bootargs bin ich verwirrt.

Stimmt das, sieht das dann so aus:
Please enter 'bootargs':
$(bootargs) ip=$(ipaddr):$(serverip)::255.255.255.0::eth0:none
Ehmals bei mir:
setenv bootargs $(bootargs)
ip=$(ipaddr):$(serverip)::255.255.255.0::eth0:none


Und was mache ich dann hiermit:
setenv bootargs 
nfsroot=$(serverip):/home/marskopf/ICnova/binaries/oemplus

von ... (Gast)


Lesenswert?

ok, ich hab die Vorgaben von icnova mal gerade auf meinem NGW 
eingegeben. Das Funktioniert so, wie sie es schreiben. Die Variablen 
werden durch die Vorgaben ersetzt. Naja, warum einfach, wenns auch 
kompliziert geht...
Fazit: müsste so gehen wie icnova das schreibt, allerdings müssen IP, 
Server-IP ect. vorher eingegeben werden.

von ... (Gast)


Lesenswert?

das müsstest du aber mit printenv überprüfen bzw. das Ergebnis dann 
sehen können.

von ... (Gast)


Lesenswert?

... schrieb:
>> Ja, "auto eth0" habe ich auskommentiert und buildroot durchlaufen
>> lassen.
> Dann wird buildroot es evtl. wieder geändert haben. Du musst das,
> nachdem du buildroot hast durchlaufen lassen, ändern.

Hast du das auch mal überprüft?

von Willi A. (Gast)


Lesenswert?

@...:
Das es so geht zeigt ja ganz oben der Auswurf der ICnova aus meiner 
Konsole nur dann wirft er ja das hier aus:

Freeing init memory: 80K (90000000 - 90014000)
Warning: unable to open an initial console.
Kernel panic - not syncing: No init found.  Try passing init= option to
kernel.

Demnach findet er irgend ein init nicht was immer das heisst. Also 
findet ICnova den NFS Server, lädt uÍmage und findet in diesem dann kein 
Einstieg oder wie. Mit was hat das zutun. Versteh ich nicht bin völlig 
neu in dieser Welt.

Ja, auto eth0 ist vor und nach dem durchlaufen auskommentiert.
Also in dieser Form:
#auto eth0

mfg

von Willi A. (Gast)


Lesenswert?

Ok, ich hab das NFS mal aus dem Fenster geworfen und bin auf tftp 
umgestiegen.
Funktioniert soweit er lädt das Kernelimage.
Aber immer noch das init Problem. Aber des auto eth0 ist auskommentiert 
vor und nach sudo make.
Kann das daran liegen das ich buildroot mit sudo make durchlaufen lassen 
habe.
Allerdings ging einfach nur make nicht da hat er abgebrochen und 
permission diened oder so gesagt.

mfg

von ... (Gast)


Lesenswert?

ok, ich bin immer als root auf dem Host angemeldet. Lösch doch einfach 
mal die von Buildroot erstellten Images und lass es neu bauen. 
Vielleicht hat sich Buildroot irgendwo verschluckt.
Hat dein Image eigentlich unter  sbin die Datei "init" ?

von Willi A. (Gast)


Lesenswert?

Du bist immer als root angemeldet ok. Ich dachte nur weil Ulrich hier
Beitrag "Re: AP7000 und ICnova ADB1000: Bisschen wenig?"
geschrieben hatte man solle buildroot nicht mit root-Rechten laufen 
lassen.

Ja, habe unter ICnova/project_build_avr32/oemplus/root/sbin die Datei 
init.

Gut dann lösche ich denn ICnova Ordner mal komplett und starte buildroot 
nocheinmal von vorn.

Das kann dann einige Zeit dauern.

von ... (Gast)


Lesenswert?

Willi A. schrieb:
> a, habe unter ICnova/project_build_avr32/oemplus/root/sbin die Datei
> init.

mmh, ich meinte in deinem fertigen Build, das was du booten willst. 
Unter /sbin .

von Willi A. (Gast)


Lesenswert?

Das musst du mir jetzt genauer erklären in welcher Datei in uImage oder 
der ext2 Datei das von buildroot erzeugt wird und wie komme ich dann 
daran also wie kann ich dann da hinein kucken.
uImage ist ja das was sich die ICnova per tftp holt, oder?

von ... (Gast)


Lesenswert?

Nein, ist klar, in uImage und die ext2 Datei kannst du nicht rein 
schauen, das sind Binärdateien. Deshalb aktiviere ich auch immer  in 
"make menuconfig" unter "Target filesystem options"/ "tar the root 
filesystem"/ "gzip". In die dann zusätzlich erzeugte .tar.gz Datei 
kannst du dann rein schauen.

von Willi A. (Gast)


Lesenswert?

Ah ok. Diese Option habe ich noch gar nicht gesehen. Werde sie 
aktivieren und das build rennen lassen.
Melde mich dann wieder.

von Willi A. (Gast)


Lesenswert?

Also hab mal nachgesehen und eine Datei init ist neben vielen anderen 
mit einer Größe von 0Byte in sbin vorhanden.

von ... (Gast)


Lesenswert?

> Größe von 0Byte
das ist ok, es ist nur ein Link.

Ok, wenn es mit dem neuen Build auch nicht läuft, weiß ich auch nicht 
mehr weiter.
Versuch mal die Anleitung aus dem Forum hier:
http://www.mikrocontroller.net/articles/AVR32_Grasshopper

von Willi A. (Gast)


Lesenswert?

Ok. Ich teste das mal aus. Und melde mich dann wieder.
Kann sich das System im Flash eigentlich durch unkontrolliertest reseten 
selbst verletzten
sprich können einzelne Speicherzellen gelöscht werden.

Mfg

von ... (Gast)


Lesenswert?

Normalerweise ist das Flash protected. Zum flashen eines neuen Image 
mußt du es erst freigeben. Insofern kann ich mir nicht vorstellen, dass 
Daten im Flash durch das System verändert werden können.

von Willi A. (Gast)


Lesenswert?

Also ich hab mein OEMplus Board nun eine Zeit lang Ruhen lassen in der 
Hoffnung das wenn ich mich irgendwann wieder ran setzte mir ein Licht 
aufgeht (oder meinem Kernel) und ich dann nicht mehr den zu lesen 
bekomme:

VFS: Mounted root (nfs filesystem) on device 0:12.
Freeing init memory: 84K (90000000 - 90015000)
Warning: unable to open an initial console.
Kernel panic - not syncing: No init found.  Try passing init= option to 
kernel.

Allerdings war dem nicht so. Nun würde ich jemanden bitte mir einmal nur 
sein Kernel hier hineinzustellen um zusehen ob es nicht an meinen 
NFS/TFTP/BUILDROOT usw. Settings liegt.

Oder was noch besser wäre vll. hat jemand das gleich Porblem und könnte 
Helfen oder vll. auch nur einen Anhaltspunkt ich drehe nähmlich langsam 
so durch das ich nämlich mit h schreibe und bald dämmlich werde.

mfg

von ... (Gast)


Lesenswert?

mach mal ein printenv in u-boot und poste das Ergebnis mal.

von Willi A. (Gast)


Lesenswert?

Hier mal mein printenv:

ICnova> printenv
baudrate=115200
ethact=macb0
ethaddr=00:1F:E5:00:0D:57
ipaddr=192.168.2.10
serverip=192.168.2.4
tftpboot=tftpboot $(serverip):$(bootfile);bootm
bootcmd=run tftpboot
bootfile=uImage
bootdelay=3
bootargs=nfsroot=192.168.2.4:/home/marskopf/ICnova/binaries/oemplus 
ip=192.168.2
.10:192.168.2.4::255.255.255.0::eth0:none 
ip=192.168.2.10:192.168.2.4::255.255.2
55.0::eth0:none
stdin=serial
stdout=serial
stderr=serial

Vll findet sich hier der Fehler. Bin wie gesagt noch Linux Anfänger.

von Ralfi (Gast)


Lesenswert?

Warum sind da tftp und nfs parameter

von ... (Gast)


Lesenswert?

Willi A. schrieb:
> bootargs=nfsroot=192.168.2.4:/home/marskopf/ICnova/binaries/oemplus
> ip=192.168.2
> .10:192.168.2.4::255.255.255.0::eth0:none
> ip=192.168.2.10:192.168.2.4::255.255.2
> 55.0::eth0:none

hier stimmt was nicht.

Schau mal hier, da sind ein paar gute Tipps:
http://www.hs-augsburg.de/~hhoegl/elinux/ext/doc/FAQ.html#booten-mit-nfs

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.