initrd ramdisk u-boot & kernel

Diskussionen um Bootloader, Kernel, Busybox
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 20:06

initrd ramdisk u-boot & kernel

Beitrag von gurgel »

Hallo,

ich möchte einen Linux-Kernel auf der dBox mit einer init-Ramdisk laden. Leider habe ich keine Ahnung mit welche Parameter dazu im uboot gesetzt werden müssen, an welche Speicherstelle ich das Image schreiben soll, und wie ich den Kernel dann aufrufen muss. Der Hintergrund ist: ich möchte auf NFS verzichten.
Weis jemand wie man das konkret macht?

Gruß gurgel
Test
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 20:06

Beitrag von gurgel »

Danke, so ähnlich hatte ich das alles schon mal durch, naja nochma genau gucken... :D
Test
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

hast du schon was probiert?
was geht denn nicht?
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 20:06

Beitrag von gurgel »

nee muss grad nem Kumpel beim router einrichten helfen...
Test
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 20:06

Beitrag von gurgel »

so, etwas weiter bin ich:

Code: Alles auswählen

=> tftp 0x100000 "kernel"
Trying SCC ETHERNET
Using SCC ETHERNET device
TFTP from server 192.168.0.1; our IP address is 192.168.0.202
Filename 'kernel'.
Load address: 0x100000
Loading: #################################################################
         #################################################################
         ###################
done
Bytes transferred = 761532 (b9ebc hex)
=> tftp 0x400000 "u-initrd"
Trying SCC ETHERNET
Using SCC ETHERNET device
TFTP from server 192.168.0.1; our IP address is 192.168.0.202
Filename 'u-initrd'.
Load address: 0x400000
Loading: #################################################################
         #################################################################
         ##
done
Bytes transferred = 673587 (a4733 hex)
=> setenv bootargs root=/dev/ram rw
=> bootm 0x100000 0x400000
## Booting image at 00100000 ...
   Image Name:   LinuxKernel
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    761468 Bytes = 743.6 kB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
## Current stack ends at 0x01FAEAB0 => set upper limit to 0x00800000
## cmdline at 0x007FFF00 ... 0x007FFF10
bd address  = 0x01FAEFC4
memstart    = 0x00000000
memsize     = 0x02000000
flashstart  = 0x10000000
flashsize   = 0x00800000
flashoffset = 0x00000000
sramstart   = 0x00000000
sramsize    = 0x00000000
immr_base   = 0xFF000000
bootflags   = 0x00000001
intfreq     = 67.200 MHz
busfreq     = 67.200 MHz
ethaddr     = 00:50:9C:17:61:30
IP addr     = 192.168.0.202
baudrate    =   9600 bps
Not skipping initrd
## Loading RAMDisk Image at 00400000 ...
   Image Name:   Test Ramdisk Image
   Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
   Data Size:    673523 Bytes = 657.7 kB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## initrd at 0x00400040 ... 0x004A4732 (len=673523=0xA46F3)
   Loading Ramdisk to 01f09000, end 01fad6f3 ... OK
## Transferring control to Linux (at address 00000000) ...
Nur jetzt läd wohl mein Initskript nicht?? Irgendwelche Ideen?
Test
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Man weiß es nicht. Die serielle Konsole mit anzumachen kann nicht schaden:

setenv bootargs root=/dev/ram rw console=ttyS0

Ansonsten tappen wir hier im dunkeln.
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 20:06

Beitrag von gurgel »

ja, das weis ich inwzischen auch. Aber ich habe schon das nächste Problemchen:

Code: Alles auswählen

=> setenv bootargs root=/dev/ram0 rw console=ttyS0
=> tftp 0x100000 "kernel"
Trying SCC ETHERNET
Using SCC ETHERNET device
TFTP from server 192.168.0.1; our IP address is 192.168.0.202
Filename 'kernel'.
Load address: 0x100000
Loading: #################################################################
         #################################################################
         ###################
done
Bytes transferred = 762497 (ba281 hex)
=> tftp 0x400000 "u-initrd"
Trying SCC ETHERNET
Using SCC ETHERNET device
TFTP from server 192.168.0.1; our IP address is 192.168.0.202
Filename 'u-initrd'.
Load address: 0x400000
Loading: #################################################################
         #################################################################
         ##
done
Bytes transferred = 673587 (a4733 hex)
=> bootm 0x100000 0x400000
## Booting image at 00100000 ...
   Image Name:   LinuxKernel
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    762433 Bytes = 744.6 kB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
## Current stack ends at 0x01FAEAB0 => set upper limit to 0x00800000
## cmdline at 0x007FFF00 ... 0x007FFF1F
bd address  = 0x01FAEFC4
memstart    = 0x00000000
memsize     = 0x02000000
flashstart  = 0x10000000
flashsize   = 0x00800000
flashoffset = 0x00000000
sramstart   = 0x00000000
sramsize    = 0x00000000
immr_base   = 0xFF000000
bootflags   = 0x00000001
intfreq     = 67.200 MHz
busfreq     = 67.200 MHz
ethaddr     = 00:50:9C:17:61:30
IP addr     = 192.168.0.202
baudrate    =   9600 bps
Not skipping initrd
## Loading RAMDisk Image at 00400000 ...
   Image Name:   Test Ramdisk Image
   Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
   Data Size:    673523 Bytes = 657.7 kB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## initrd at 0x00400040 ... 0x004A4732 (len=673523=0xA46F3)
   Loading Ramdisk to 01f09000, end 01fad6f3 ... OK
## Transferring control to Linux (at address 00000000) ...
Linux version 2.4.34-dbox2 (tux@localhost) (gcc version 3.4.4) #13 Sa Jul 7 03:1
6:44 CEST 2007
On node 0 totalpages: 8192
zone(0): 8192 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/ram0 rw console=ttyS0
Decrementer Frequency = 252000000/60
m8xx_wdt: active wdt found (SWTC: 0xFFFF, SWP: 0x1)
m8xx_wdt: keep-alive trigger installed (PITC: 0x12C0)
Console: colour dummy device 80x25
Calibrating delay loop... 66.96 BogoMIPS
Memory: 30636k available (1304k kernel code, 368k data, 60k init, 0k highmem)
Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 8192 (order: 3, 32768 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
Journalled Block Device driver loaded
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
eth0: CPM ENET Version 0.2.dbox2 on SCC2, 00:50:9c:17:61:30
RAMDISK driver initialized: 16 RAM disks of 3072K size 1024 blocksize
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 6 MTD partitions on "D-Box 2 flash memory":
0x00000000-0x00020000 : "BR bootloader"
0x00020000-0x00040000 : "FLFS (U-Boot)"
0x00040000-0x006a0000 : "root (Cramfs)"
0x006a0000-0x00800000 : "var (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 512 buckets, 4Kbytes
TCP: Hash tables configured (established 2048 bind 4096)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
FAT: bogus logical sector size 10837
FAT: bogus logical sector size 10837
Kernel panic: VFS: Unable to mount root fs on 01:00
 <0>Rebooting in 180 seconds..
Meine initrd hat ext2 und nicht fat, wie sage ich dem Kernel dass das ext2 ist?
Test
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Hm. Ist deine initrd ein FAT FS? Nimm mal ext2.

Edit: ich muß jetzt los, die letzte U-Bahn erreichen, ich guck mal in ca 1/2 bis 3/4 stunde in den IRC.
Zuletzt geändert von seife am Mittwoch 19. Dezember 2007, 00:22, insgesamt 1-mal geändert.
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 20:06

Beitrag von gurgel »

eben nicht :-?
Test
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Ok, mehrere Sachen, die ich aus Documentation/initrd.txt extrahiert habe.

- versuche mal. nur "bootm 0x100000" und gib dem kernel mit "initrd=0x400000" oder "initrd=0x01f09000" an der Kommandozeile die initrd-location mit.
- eigentlich wollte ich noch vorschlagen, "root=/dev/rd/0" zu probieren, aber da....

Code: Alles auswählen

e5:~ # ls -l /dev/ram0
brw-rw----    1 root     disk       1,   0 Sep 23  2003 /dev/ram0
scheint das bei dir schon zu stimmen:

Code: Alles auswählen

Kernel panic: VFS: Unable to mount root fs on 01:00 
er scheint im device nur keine initrd zu finden...
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

wie issn das mit der byte order (big/little endian)?
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Gute Frage. Es kann sicher nichts schaden, die initrd auf der dbox selbst zu erzeugen...
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 20:06

Beitrag von gurgel »

das sollte mkimage berücksichtigt haben, wenn ich ppc als Option angegeben habe. Außerdem würde der uboot das dann auch nicht entpacken können.
Test
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

mkimage setzt nur einen header vor das image damit uboot es entpacken kann.
das mkfs.extfs (oder wie das heisst) müsste die richtige byte order benutzen/beachten
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 20:06

Beitrag von gurgel »

Probleme sind alle gelöst. Obige waren durch einen fehlerhaften Kernel begründet.

Die ReleaseCandidate1 des neuen Flashasstent 3.0 kann auf meiner Seite heruntergeladen werden:
http://www.dboxservice-hallenberg.de/freedownloads.php
Test
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 16:04

Beitrag von Tommy »

hattest Du eigentlich den rein Seriellen Weg weiterverfolgt? Dann würde ja ein Swissknife rauskommen ;-)
---------------------------
Alle weiteren Infos findest Du im WIKI
Bitte vor dem posten Boardregeln lesen und verstehen!
Wie erstelle ich ein Bootlog? Wo finde ich die FAQ?
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 20:06

Beitrag von gurgel »

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

Beitrag von Houdini »

Na also:-)
Gratulation
...und schöne Weihnachten
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 16:04

Beitrag von Tommy »

@Gurgel:
ich finde den offiziellen Thread zum neuen IFA nicht mehr. Ich habe da einen Bug festgestellt in Verbindung mit Seriell<->USB Adaptern. Beim flashen öffnen sich zig Fehlermeldungen "I/O..." übereinander solange bis sich das Tool weghängt. Ist COM13 ok für das Tool? Oder liegt es vllt daran?
---------------------------
Alle weiteren Infos findest Du im WIKI
Bitte vor dem posten Boardregeln lesen und verstehen!
Wie erstelle ich ein Bootlog? Wo finde ich die FAQ?