U-Boot und die Kernel comandline

Diskussionen um Bootloader, Kernel, Busybox
MPC823
Erleuchteter
Erleuchteter
Beiträge: 448
Registriert: Samstag 26. November 2005, 00:35

U-Boot und die Kernel comandline

Beitrag von MPC823 »

Ich möchte mit dem u-boot der im flash liegt über NFS booten.

Ich halte also in der Konsole den u-boot an und ändere die Variable bootargs ab mit

-> setenv bootargs console=ttyS0,9600 root=/dev/nfs rw nfsroot=192.168.0.14:/home/martin/dbox-neutrino/dbox/cdk/ ip=192.168.0.202:192.168.0.14:192.168.0.1:255.255.255.0:dbox::off

(der 114er ist mein Linux PC auf dem läuft ein NFS server. Ich habe auch mal Probeweise von meiner TD das Verzeichnis gemounted. )

Nachdem die die Variable neu gesetzt habe

lade ich in der Konsole das filesystem mit
-> fsload
das scheint auch noch zu klappen.

danach starte ich mit

->bootm

danach bleibt aber der Kernel mit "panic" hängen

irgendwie versteh ich nicht warum es nicht geht.

das Bootlog
=> setenv bootargs console=ttyS0,9600 root=/dev/nfs rw nfsroot=192.168.0.14:/hom
e/martin/dbox-neutrino/dbox/cdk/ ip=192.168.0.202:192.168.0.14:192.168.0.1:255.2
55.255.0:dbox::off
=> printenv
bootcmd=setenv bootargs console=$(console),$(baudrate) dbox_duplex=$(dbox_duplex
) root=/dev/mtdblock2 rw rootfstype=jffs2; fsload; protect off
10020000 107fffff; bootm
bootdelay=1
baudrate=9600
console=ttyS0
stdin=serial
stdout=serial
stderr=serial
ethaddr=00:50:9c:42:6a:d9
ethact=SCC ETHERNET
bootargs=console=ttyS0,9600 root=/dev/nfs rw nfsroot=192.168.0.14:/home/martin/d
box-neutrino/dbox/cdk/ ip=192.168.0.202:192.168.0.14:192.168.0.1:255.255.255.0:d
box::off

Environment size: 470/16380 bytes
=> fsload
### FS (jffs2) loading 'vmlinuz' to 0x100000
### FS load complete: 670500 bytes loaded to 0x100000
=> bootm
## Booting image at 00100000 ...
Image Name: dbox2
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 670436 Bytes = 654.7 kB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Linux version 2.4.37-dbox2 (dietmarw@s2.dvdvd.de) (gcc version 3.4.6) #2 Sat Apr
18 07:37:52 CEST 2009
On node 0 totalpages: 32768
zone(0): 32768 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: console=ttyS0,9600 root=/dev/nfs rw nfsroot=192.168.0.14:/h
ome/martin/dbox-neutrino/dbox/cdk/ ip=192.168.0.202:192.168.0.14:192.168.0.1:255
.255.255.0:dbox::off
Decrementer Frequency = 251625000/60
m8xx_wdt: active wdt found (SWTC: 0xFFFF, SWP: 0x1)
m8xx_wdt: keep-alive trigger installed (PITC: 0x2580)
Console: colour dummy device 80x25
Calibrating delay loop... 66.76 BogoMIPS
Memory: 127972k available (1140k kernel code, 344k data, 60k init, 0k highmem)
Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode cache hash table entries: 8192 (order: 4, 65536 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 8192 (order: 3, 32768 bytes)
Page-cache hash table entries: 32768 (order: 5, 131072 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x1
JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc.
squashfs: version 3.0 (2006/03/15) Phillip Lougher
i2c-core.o: i2c core module version 2.6.1 (20010830)
i2c-dev.o: i2c /dev entries driver module version 2.6.1 (20010830)
CPM UART driver version 0.04
ttyS0 at 0x0280 is on SMC1 using BRGttyS1 at 0x0380 is on SMC2 using BRG2
pty: 256 Unix98 ptys configured
half-duplex mode enabled
eth0: CPM ENET Version 0.2.dbox2 on SCC2, 00:50:9c:42:6a:d9
loop: loaded (max 8 devices)
D-Box 2 flash driver (size->0x800000 mem->0x10000000)
D-Box 2 flash memory: Found 2 x16 devices at 0x0 in 32-bit bank
Intel/Sharp Extended Query Table at 0x0035
cfi_cmdset_0001: Erase suspend on write enabled
Creating 5 MTD partitions on "D-Box 2 flash memory":
0x00000000-0x00020000 : "BR bootloader"
0x00020000-0x00040000 : "FLFS (U-Boot)"
0x00040000-0x00800000 : "root (jffs2)"
0x00020000-0x00800000 : "Flash without bootloader"
0x00000000-0x00800000 : "Complete Flash"
Linux video capture interface: v1.00
mice: PS/2 mouse device common for all mice
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP: Hash tables configured (established 8192 bind 16384)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Cannot open root device "nfs" or 00:ff
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on 00:ff
<0>Rebooting in 180 seconds..
vermutlich übersehe ich was.

Martin
Zuletzt geändert von MPC823 am Sonntag 26. April 2009, 09:04, insgesamt 1-mal geändert.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: U-Boot und die Kernel comandline

Beitrag von seife »

Evtl. hat der kernel im Flash keinen support für nfsroot einkompiliert? Ich schau's mir mal an, aber heute nicht mehr.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: U-Boot und die Kernel comandline

Beitrag von Houdini »

Evtl. hat der kernel im Flash keinen support für nfsroot einkompiliert? Ich schau's mir mal an, aber heute nicht mehr.
korrekt
MPC823
Erleuchteter
Erleuchteter
Beiträge: 448
Registriert: Samstag 26. November 2005, 00:35

Re: U-Boot und die Kernel comandline

Beitrag von MPC823 »

Evtl. hat der kernel im Flash keinen support für nfsroot einkompiliert? Ich schau's mir mal an, aber heute nicht mehr.


korrekt
Ähm nun komme ich richtig ins schleudern.

Ich nutze ja nur den u-boot aus dem flash. Der u-boot soll mir dann via nfs den Kernel laden (dachte ich).

Ich habe das so im wiki gelesen und auf diese weise interpretiert. Nun stellt sich mir die Frage das ich da wohl was falsch verstanden habe. Im cdk verzeichnis habe ich ja eine Kernel drin ?

Muss ich um via nfs zu booten den Kernel via tftp zur box laden ?

Martin
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: U-Boot und die Kernel comandline

Beitrag von rhabarber1848 »

Ich vergleiche folgende Dateien:

Kernel-.config für Flash-Kernel: cdk/Patches/linux-2.4.35.5-dbox2.config-flash
Kernel-.config für Yadd-Kernel: cdk/Patches/linux-2.4.35.5-dbox2.config

Im Yadd sind folgende Optionen aktiviert, im Flash-Kernel nicht:
CONFIG_ROOT_NFS=y

Im Yadd sind folgende Optionen nicht als Modul kompiliert:
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_SUNRPC=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y

Im Flash sind es Module, die aber ohne NFS-Support im Kernel
nicht nachgeladen werden können. deshalb müssen sie im Kernel
selbst enthalten sein.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: U-Boot und die Kernel comandline

Beitrag von Houdini »

dann musst du auch den kernel vom netz laden (z.b. per tftp) und nicht aus dem filesystem (fsload)
die bootargs haben keinen Einfluß auf den uboot selber, sondern werden nur dem kernel übergeben

nachdem die bootargs gesetzt sind kannst du per <tftpboot 200000 kernel-cdk> (oder so) starten
MPC823
Erleuchteter
Erleuchteter
Beiträge: 448
Registriert: Samstag 26. November 2005, 00:35

Re: U-Boot und die Kernel comandline

Beitrag von MPC823 »

Oha danke nun wird es schon klarer warum es nicht richtig ging. Wenn man nicht weiss was man da exact macht hat man entweder Glück oder es tut nicht :-D


Ich probiere mal weiter.

Martin
MPC823
Erleuchteter
Erleuchteter
Beiträge: 448
Registriert: Samstag 26. November 2005, 00:35

Re: U-Boot und die Kernel comandline

Beitrag von MPC823 »

Also wenn man es richtig macht geht es doch tatsächlich.

Nun bootet die 128MB box via nfs mit GUI hoch. Lässt sich auch prima Bedienen.

Ich schreibe mal alles zusammen wie man ohne ohne Dbox2 Manager dann unter Linux ohne das man an seinem DHCP usw was verbiegen muss via tftp & nfs booten kann.


Gut wäre es wenn man den allg u-boot in den Images so anpassen könnte das er wie bei der TD gemacht mit einer Tastenkombination anhalten kann und dann am display vorne eine Bootoption auswählen kann.
Seife hatte dazu eine Superidee. Ich denke das ist Diskussionswürdig.


Danke an alle Gruss Martin
MPC823
Erleuchteter
Erleuchteter
Beiträge: 448
Registriert: Samstag 26. November 2005, 00:35

Re: U-Boot und die Kernel comandline

Beitrag von MPC823 »

Also so gehts :gruebel:
Vorausetzung Linux PC mit Dbox-CDK,NFS-Server,TFTP-Server

Der Pfad zum kernel-yadd ist Bsp
"/home/entwicklung/dbox-neutrino/dbox2/tftpboot"

Als erstes konfiguriert man die Freigabe des tftp Servers. Dazu editiert man die dessen konfigurationsdatei (als root!).
Für den tftpd ist das z.B die "inetd.conf" unter "/etc"

dort die Zeile
"tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp"

auf den eigenen Pfad anpassen. Hier also in
"tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /home/entwicklung/dbox-neutrino/dbox2/tftpboot"
ändern.

Den tftp Server neu starten hier "/etc/init.d/openbsd-inetd restart" (als root!)

Der Pfad zum cdk ist Bsp
"/home/entwicklung/dbox-neutrino/dbox2/cdkroot"

Den NFS Server konfigurieren. Dazu in "/etc" die Datei "exportfs" editieren.

Den Pfad zum cdkroot freigeben Bsp indem man die Zeile
"/home/entwicklung/dbox-neutrino/dbox2/cdkroot dbox(rw,sync,no_root_squash)"
einfügt.

Nun den NFS-Server neu starten mit "exportfs -a" (als root!)

Nun die Dbox mit dem PC per Nullmodemkabel verbinden. Terminal Programm auf der seriellen Konsole öffnen. Dbox einstecken und den Autoboot anhalten.

Als Bsp Konfiguration hier :
Gateway : 192.168.0.1
NFS & TFTP Server : 192.168.0.14
dbox wird : 192.168.0.202
Dbox-Name : dbox

Nun die Variablen serverip,ipaddr setzten mit
"setenv serverip 192.168.0.14; setenv ipaddr 192.168.0.202"
Nun noch die Variable für den Kernel anpassen mit
"setenv bootargs console=ttyS0,9600 root=/dev/nfs rw nfsroot=192.168.0.14:/home/entwicklung/dbox-neutrino/dbox2/cdkroot/ ip=192.168.0.202:192.168.0.14:192.168.0.1:255.255.255.0:dbox::off"
Nun gehts richtig los !
Den Kernel mit "tftpboot 200000 kernel-cdk" ins Ram laden
Nun den Kernel starten mit "bootm"
####################################
Wenn alles richtig konfiguriert wurde sollte die Box nun via NFS Booten . Der Vorteil bei dieser Metode liegt darin
1) Man braucht keine Windows Bootmanager da man ja eh sein CDK auf dem Linux PC hat
2) Wenn man einen DSL Router einsetzt der sich als DHCP um die IP Vergabe im Netzwerk kümmert muss man keine Klimmzüge machen das dieser sich nicht einmischt und man einen u-boot für das cdk in die Box bekommt
3) Einfach mal kurz was testen ohne zu flashen
Martin