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
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?
@...:
> 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
> 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!"
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
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
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.
... 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?
@...:
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
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
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" ?
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.
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 .
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?
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.
> 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
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
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.
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
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.
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