Welcome! Log In Create A New Profile

Advanced

Can't Get Kernel Image

Posted by laprjns 
Can't Get Kernel Image
November 08, 2010 06:31PM
Hey all,

I have a Dockstar that was running armedSlack just fine when I decided to give the Rescue System a try. The install seem to go fine, but on first boot it couldn't fine the kernel image. This is what I'm getting out of the serial port:
Marvell>> 

U-Boot 2010.09 (Oct 23 2010 - 11:49:22)
Marvell-Dockstar/Pogoplug by Jeff Doozan

SoC:   Kirkwood 88F6281_A0
DRAM:  128 MiB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Net:   egiga0
88E1116 Initialized on egiga0
Hit any key to stop autoboot:  0 

NAND read: device 0 offset 0x100000, size 0x300000
 3145728 bytes read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!
Marvell>>
And here's my enviorment
Marvell>> printenv 
ethact=egiga0
bootdelay=3
baudrate=115200
arcNumber=2097
mainlineLinux=yes
led_init=green blinking
led_exit=green off
led_error=orange blinking
mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data)
mtdids=nand0=orion_nand
partition=nand0,2
rescue_installed=0
rescue_set_bootargs=setenv bootargs console=$console ubi.mtd=2 root=ubi0:rootfs ro rootfstype=ubifs $mtdparts $rescue_custom_params
rescue_bootcmd=if test $rescue_installed -eq 1; then run rescue_set_bootargs; nand read.e 0x800000 0x100000 0x400000; bootm 0x800000; else run pogo_bootcmd; fi
pogo_bootcmd=if fsload uboot-original-mtd0.kwb; then go 0x800200; fi
force_rescue=0
force_rescue_bootcmd=if test $force_rescue -eq 1 || ext2load usb 0:1 0x1700000 /rescueme 1 || fatload usb 0:1 0x1700000 /rescueme.txt 1; then run rescue_bootcmd; fi
ubifs_mtd=3
ubifs_set_bootargs=setenv bootargs console=$console ubi.mtd=$ubifs_mtd root=ubi0:rootfs rootfstype=ubifs $mtdparts $ubifs_custom_params
ubifs_bootcmd=run ubifs_set_bootargs; if ubi part data && ubifsmount rootfs && ubifsload 0x800000 /boot/uImage && ubifsload 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; fi
usb_scan=usb_scan_done=0;for scan in $usb_scan_list; do run usb_scan_$scan; if test $usb_scan_done -eq 0 && ext2load usb $usb 0x800000 /boot/uImage 1; then usb_scan_done=1; echo "Found e
usb_scan_list=1 2 3 4
usb_scan_1=usb=0:1 dev=sda1
usb_scan_2=usb=1:1 dev=sdb1
usb_scan_3=usb=2:1 dev=sdc1
usb_scan_4=usb=3:1 dev=sdd1
usb_init=run usb_scan
usb_device=0:1
usb_root=/dev/sda1
usb_rootfstype=ext2
usb_rootdelay=10
usb_set_bootargs=setenv bootargs console=$console root=$usb_root rootdelay=$usb_rootdelay rootfstype=$usb_rootfstype $mtdparts $usb_custom_params
usb_bootcmd=run usb_init; run usb_set_bootargs; run usb_boot
usb_boot=mw 0x800000 0 1; ext2load usb $usb_device 0x800000 /boot/uImage; if ext2load usb $usb_device 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; else bootm 0x800000; fi
ipaddr=192.168.101.61
serverip=192.168.101.22
ethaddr=00:10:75:1A:95:A0
cesvcid=B7QKEKUEJZ82MR4PZW56KL2GQW
console=console=ttyS0,115200
bootcmd=nand read.e 0x800000 0x100000 0x300000; setenv bootargs $(console) $(bootargs_root); bootm 0x800000
bootargs_root=root=/dev/mtdblock2 ro
stdin=serial
stdout=serial
stderr=serial
bootargs=$(console) $(bootargs_root)

Is there anyway to recover this? I'm willing to go back to the factory firmware and start over if it's necessary

Thanks
Rich



Edited 1 time(s). Last edit at 11/09/2010 05:13PM by laprjns.
Re: Can't Get Kernel Image
November 16, 2010 12:16PM
Hi all,

I made some progress on this, but still cannot boot a kernel image from the either nand or usb. I tried to reflash the original pogo software following these directions; http://plugapps.com/index.php5?title=Hardware:_Seagate_DockStar_Reflashing, but I get an alignment error. I have been able to install and boot armedslack by doing this:
Now download the Kernel and Slackware ARM installer via TFTP:

     Marvell>>   tftpboot 0x01100000 armedslack-current/uinitrd-kirkwood.img
     Marvell>>   tftpboot 0x00800000 armedslack-current/uImage-kirkwood
     Marvell>>   setenv bootargs console=ttyS0,115200 nodhcp kbd=uk root=/dev/ram rw
     Marvell>>   bootm 0x00800000 0x01100000
Anyway that as far as I get. I think that my problem is that I still have the rescue system environment variables. I have made several attempts to reflash Jeff's latest uboot, but cannot seem to permanently replace these environment variables. How would I go about completely erasing the environment memory and reflashing with the uboot.enviroment file? Can/ how would I do it from the uboot prompt

Thanks

Rich
Johannes
Re: Can't Get Kernel Image
November 16, 2010 01:44PM
The following variables in your environment are different from a normal environment:

bootargs
bootargs_root
bootcmd
console
usb_scan

(also the variables which are unique for your dockstar, but those are normal: cesvcid, ethaddr, ipaddr, serverip)

The "usb_scan" variable got truncated somehow. The variable should not end on "Found e". The usb_scan variable should list like this:
usb_scan=usb_scan_done=0;for scan in $usb_scan_list; do run usb_scan_$scan; if test $usb_scan_done -eq 0 && ext2load usb $usb 0x800000 /boot/uImage 1; then usb_scan_done=1; echo "Found bootable drive on usb $usb"; setenv usb_device $usb; setenv usb_root /dev/$dev; fi; done

Right now the boot loader doesn't get to that part though, because of the other variables. The way the rest of the scripts are set up, bootargs and bootargs_root are not needed, as they're set depending on the boot medium by the other scripts. These other scripts expect the console variable to be just the parameter value, not name=value as in your environment. That only affects the kernel console output, but you should still correct it. The console variable should be
console=ttyS0,115200
(not console=console=ttyS0,115200)

The real culprit is the bootcmd variable. That's supposed to refer to the other boot scripts, but in your environment it directly loads 3MB from the mtd1 partition and tries to boot that as a kernel image. If the kernel is bigger than 3MB, then that's going to fail. The bootcmd value should be
bootcmd=usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd; run pogo_bootcmd; reset

To correct the environment, execute these commands at the uboot prompt:
setenv bootargs
setenv bootargs_root
setenv console 'ttyS0,115200'
setenv bootcmd 'usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd; run pogo_bootcmd; reset'
setenv usb_scan 'usb_scan_done=0;for scan in $usb_scan_list; do run usb_scan_$scan; if test $usb_scan_done -eq 0 && ext2load usb $usb 0x800000 /boot/uImage 1; then usb_scan_done=1; echo "Found bootable drive on usb $usb"; setenv usb_device $usb; setenv usb_root /dev/$dev; fi; done'
saveenv

The setenv commands modify the environment in RAM, the saveenv writes the modified environment to flash memory. After writing the environment to flash, reset the Dockstar. It should then follow the expected boot sequence.
Re: Can't Get Kernel Image
November 16, 2010 07:04PM
Johannes, thank's for your help. I made the changes as instructed. If reset the unit without a usb device plugged in I get the following.
Marvell>> reset
resetting ...
U-Boot 2010.09 (Oct 23 2010 - 11:49:22)
Marvell-Dockstar/Pogoplug by Jeff Doozan

SoC:   Kirkwood 88F6281_A0
DRAM:  128 MiB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Net:   egiga0
88E1116 Initialized on egiga0
Hit any key to stop autoboot:  0 
(Re)start USB...
USB:   Register 10011 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 2 USB Device(s) found
       scanning bus for storage devices... 0 Storage Device(s) found
** Block device usb 0 not supported

** Invalid boot device **
Creating 1 MTD partitions on "nand0":
0x000002500000-0x000010000000 : "mtd=3"
UBI: attaching mtd1 to ubi0
UBI: physical eraseblock size:   131072 bytes (128 KiB)
UBI: logical eraseblock size:    129024 bytes
UBI: smallest flash I/O unit:    2048
UBI: sub-page size:              512
UBI: VID header offset:          512 (aligned 512)
UBI: data offset:                2048
UBI error: ubi_read_volume_table: the layout volume was not found
UBI error: ubi_init: cannot attach mtd1
UBI error: ubi_init: UBI error: cannot initialize UBI, error -22
UBI init error -22
** Block device usb 0 not supported
** Block device usb 1 not supported
** Block device usb 2 not supported
** Block device usb 3 not supported
** Block device usb 0 not supported
** Block device usb 0 not supported
Wrong Image Format for bootm command
ERROR: can't get kernel image!
stopping USB..
### JFFS2 loading 'uboot-original-mtd0.kwb' to 0x800000
Scanning JFFS2 FS: ....... done.
find_inode failed for name=uboot-original-mtd0.kwb
load: Failed to find inode
### JFFS2 LOAD ERROR<0> for uboot-original-mtd0.kwb!
### JFFS2 loading 'uboot-original-mtd0.kwb' to 0x800000
find_inode failed for name=uboot-original-mtd0.kwb
load: Failed to find inode
### JFFS2 LOAD ERROR<0> for uboot-original-mtd0.kwb!
resetting ...


U-Boot 2010.09 (Oct 23 2010 - 11:49:22)
Marvell-Dockstar/Pogoplug by Jeff Doozan

SoC:   Kirkwood 88F6281_A0
DRAM:  128 MiB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Net:   egiga0
88E1116 Initialized on egiga0
Hit any key to stop autoboot:  0 
Marvell>>
However I can now boot from a USB stick. I have a usb stick with PlugBox Linux on it and it now boots up without problems.
So it looks like i can't boot to the pogo image.

Thanks



Edited 2 time(s). Last edit at 04/02/2011 06:43PM by laprjns.
Re: Can't Get Kernel Image
November 16, 2010 07:24PM
Yes!! success
After booting into PlugBox Linux, I ran the rescue installer script and now everything is working
Starting sshd: OK
Starting heartbeat LED...


          Jeff Doozan's
Dockstar/Pogoplug Recovery System

rescue login: root
Password: 

rescue:~# 
rescue:~# uname -a
Linux rescue 2.6.32.18-dockstar #1 Thu Sep 16 16:04:06 EDT 2010 armv5tel GNU/
Thanks again Johannes
Rich
Author:

Your Email:


Subject:


Spam prevention:
Please, enter the code that you see below in the input field. This is for blocking bots that try to post this form automatically. If the code is hard to read, then just try to guess it right. If you enter the wrong code, a new image is created and you get another chance to enter it right.
Message: