Snapgear 4.0.0 Linux not booting
Please read this entirely. The subject might seem long, but thats only because I explain everything I have done. Basically, when i try to run my kernel on my ARM target, it uncompresses itself then hangs for ever.
Lefts see this in details: I'm having a problem booting my snapgear 4.0.0 linux on an Intel IXP425 embedded device.
Here are the steps i followed until now:
- I downloaded on snapgear's website the snapgear linux archive (snapgear-4.0.0.tar.bz2), patches for the target (SnapGear IXP400 Access Library patch 20090807.sh) and the tool-chain (arm-linux-tools-20080623.tar.gz). I also had to fetch some libraries on Intel's website (IPL_ixp400NpeLibrary-2_4.zip and BSD_ixp400AccessLibrary-2_4.zip)
- I the extracted the tool-chain archive, searched for the binary files and added the bin/ directory into my $PATH (PATH=/usr/users/ebu/Desktop/Workspace/arm-linux-tools-20080623/usr/local/bin:$PATH)
- Then I extracted the snapgear archive and patched it like this:
$ cd snapgear
-> extracts the patches
-> apply the patches
$ patch -p1 < snapgear-20090807.patch
$ mkdir -p modules/ixp425/ixp400-2.4
$ cd modules/ixp425/ixp400-2.4/
$ unzip BSD_ixp400AccessLibrary-2_4.zip
$ unzip IPL_ixp400NpeLibrary-2_4.zip
$ patch -p1 < modules-csr2.4-20090807.patch
- Now that everything is patched and my tool-chained is referenced in the PATH, I will know configure my kernel and build it. (I'll make it short: I will only post questions and answers i had to answer, the rest is left to the default option)
$ make config
Vendor: 30. Intel (DEFAULTS_INTEL) (NEW)
Intel Products: 2. IXDP425 (DEFAULTS_INTEL_IXDP425) (NEW)
Kernel Version: 1. linux-2.6.x (DEFAULTS_KERNEL_2_6) (NEW)
Libc Version: 2. uClibc (DEFAULTS_LIBC_UCLIBC) (NEW)
Default all settings (lose changes) (DEFAULTS_OVERRIDE) [N/y] (NEW) y
Customize Kernel Settings (DEFAULTS_KERNEL) [N/y] (NEW) n
Customize Application/Library Settings (DEFAULTS_VENDOR) [N/y] (NEW) n
Update Default Vendor Settings (DEFAULTS_VENDOR_UPDATE) [N/y] (NEW) y
everything build and generates a zImage file and a ramdisk.gz file.
The embedded system's bootloader is RedBoot v2.02. I will download the files by the tftp protocol, so i configured redboot to get the files from my computer (gave it my computers IP address, my computer has tftp services activated). This is what I get:
RedBoot> load -r -v -b 0x00800000 ramdisk.gz
Using default protocol (TFTP)
Raw file loaded 0x00800000-0x0094f233, assumed entry at 0x00800000
RedBoot> load -r -v -b 0x01600000 zImage
Using default protocol (TFTP)
Raw file loaded 0x01600000-0x0174102b, assumed entry at 0x01600000
RedBoot> go -n 0x01600000
Uncompressing Linux...................................................................................... done, booting the kernel.
And it just hangs there for no reason. I've checked and tried a few thing to try and get the system running but it just hangs here everytime. So, i've tried:
- Telling him where the zImage and ramdisk.gz files are
Redboot> exec -b 0x01600000 -l 0x0180000 -r 0x00800000 -s 0x0200000 -c "console=ttyS0,115200 root=/dev/ram0 initrd=0x00800000,8M mem=64M@0x0"
or Redboot> exec -b 0x01600000 -r 0x00800000 -c "console=ttyS0,115200 root=/dev/ram0 initrd=0x00800000,8M mem=64M@0x0"
or Redboot> exec -c "console=ttyS0,115200 root=/dev/ram0 initrd=0x00800000,8M mem=64M@0x0"
- Checking the boot command line in the snapgear/linux-2.6.x/.config file (it look correct)
CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram0 initrd=0x00800000,8M mem=64M@0x00000000"
- Checked if the files seemed OK by comparing the hexdump output on my computer and on the target: Its OK (only compared the 20 first bytes or so, but it the same)
- Check the check sum and compared them with the check sum on my computer. They're the same.
Anyways, I'm stuck and i have no clue what i should check next. Any ideas are welcome.
Thank you for your help
Re: Snapgear 4.0.0 Linux not booting
Ok, i figured it out.
I don't know why snapgear did this but they included linux 2.6.29 into their distribution. odd number == kernel under testing/developping stage. why did they do this? I don't know.
I downloaded a stable version on Linux's kernel official website (220.127.116.11), configured it and loaded into my target.
There is still something strange: linux won't load when I type "go -n 0x01600000" in redboot's console (0x01600000 is the ram memory address where i put zImage), but it I type "exec 0x01600000 it runs. Any ideas?
Anyways, I got it to boot but panics when it doesn't find a filesystem. Here's the message:
List of all partitions:
No filesystem could mount root, tried:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
I loaded my ramdisk.gz in 0x0800000, and specified it in the boot command string: "console=ttyS0,115200 root=/dev/ram0 initrd=0x00800000,8M mem=64M@0x0".
Anyone has an idea?